nginx – 禁止特定User-Agent或者空User-Agent等垃圾爬虫爬取网站、爆破接口
最近一个星期日常对网站进行运维,从一周前开始断断续续开始看到网站的payjs支付接口被调用了很多次,但是都是被调用而没有正常的走完支付流程,所以确定了这是不守规矩的垃圾爬虫,因为网站的robots.txt中已经禁止爬虫对payjs的类似接口进行爬取,百度、google和必应的爬虫都是按照规矩来的,我从网站日志中查了一下
106.54.210.33 - - [11/Sep/2023:08:22:29 +0800] "GET /wp-content/plugins/erphpdown/buy.php?postid=1455×tamp=1693351264 HTTP/1.1" 200 1448 "-" "Apache-HttpClient/4.5.13 (Java/11)"
111.229.16.246 - - [11/Sep/2023:08:22:30 +0800] "GET /wp-content/plugins/erphpdown/payment/payjs.php?ice_post=901&redirect_url=https%3A%2F%2Fwww.stubbornhuang.com%2F901%2F%3Ftimestamp%3D1694353904 HTTP/1.1" 200 1945 "-" "Apache-HttpClient/4.5.13 (Java/11)"
122.51.230.150 - - [11/Sep/2023:08:22:30 +0800] "GET /wp-content/plugins/cp-link-open/link.php?a=aHR0cHM6Ly9kZXZlbG9wZXIubnZpZGlhLmNvbS96aC1jbi90ZW5zb3JydD90ZXJtPVRlbnNvclJU HTTP/1.1" 200 821 "-" "Apache-HttpClient/4.5.13 (Java/11)"
这个垃圾佬应该是挂了个代理ip池,不过都是Apache-HttpClient/4.5.13 (Java/11)
,就只有这种脑残采集爬虫才会无脑遍历网站上的所有链接。既然不遵守robots.txt这种君子协定,那就只能在nginx端进行限制了。nginx可以禁止特定的User-Agent、空User-Agent访问网站。
1 修改nginx配置
如果没有使用宝塔面板,则修改相关的conf文件;如果是使用的宝塔面板,在宝塔面板 - 网站 - 设置 - 配置文件进行修改,如下图
在对应的网站的conf中增加以下配置代码。
1.1 禁止Scrapy等工具的爬取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
1.2 禁止非GET、HEAD、POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
1.3 禁止指定User-Agent及User-Agent为空的访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
return 403;
}
修改完成之后,如果是宝塔面板保存即可,如果是使用原生nginx则重新加载nginx,比如
/usr/local/nginx/sbin/nginx -s reload
2 测试
对nginx的配置完成之后,我们可以使用curl模拟User-Agent对网站进行访问
(1) 模拟User-Agent为空的爬虫访问
curl -I -A '' www.stubbornhuang.com
输出
HTTP/1.1 403 Forbidden
Server: nginx
Date: Mon, 11 Sep 2023 02:11:30 GMT
Content-Type: text/html
Content-Length: 146
Connection: keep-alive
(2) 模拟Python-urllib的爬虫访问
curl -I -A 'Python-urllib' www.stubbornhuang.com
输出
HTTP/1.1 403 Forbidden
Server: nginx
Date: Mon, 11 Sep 2023 02:13:19 GMT
Content-Type: text/html
Content-Length: 146
Connection: keep-alive
(3) 模拟百度、google等正常蜘蛛访问
curl -I -A 'Baiduspider' www.stubbornhuang.com #百度
curl -I -A 'Googlebot' www.stubbornhuang.com #Google
curl -I -A 'bingbot' www.stubbornhuang.com #必应
输出
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 11 Sep 2023 02:14:27 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: wp-editormd-lang=zh-CN; path=/
Strict-Transport-Security: max-age=31536000
从上述的测试结果看,空的User-Agent或者特定被屏蔽的User-Agent返回的都是403,而百度、google、必应的蜘蛛都是正常访问的,说明设置生效了。
参考
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:nginx – 禁止特定User-Agent或者空User-Agent等垃圾爬虫爬取网站、爆破接口
原文链接:https://www.stubbornhuang.com/2798/
发布于:2023年09月11日 10:19:17
修改于:2023年09月11日 10:27:02
当前分类随机文章推荐
- WordPress - 网站性能优化,延迟加载css和js文件 阅读153次,点赞0次
- Centos7 - 防火墙操作以及开启和关闭特定端口 阅读4621次,点赞2次
- Docker - 在宿主机与容器之间拷贝文件或者文件夹 阅读79次,点赞0次
- WordPress - 发布文章时推送文章到百度普通收录,缩短百度爬虫发现网站链接的时间 阅读17次,点赞0次
- WordPress - 网站加载自定义字体的最佳方式 阅读176次,点赞1次
- WordPress - 获取每年发表的文章数量 阅读488次,点赞0次
- WordPress - 在文章被复制时弹出弹窗提示转载注明原创 阅读3433次,点赞2次
- nginx - 反向代理websocket服务 阅读28次,点赞0次
- WordPress - 用户修改密码/邮箱时禁止向管理员/用户发送通知邮件 阅读1142次,点赞0次
- Centos7 - 安装高版本的gcc/g++,多版本切换以及配置环境 阅读72次,点赞0次
全站随机文章推荐
- 杂谈 - 2022年度总结 阅读564次,点赞0次
- C++ - 在Windows/Linux上创建单级目录以及多级目录的跨平台方法 阅读1915次,点赞0次
- 资源分享 - Handbook of Discrete and Computational Geometry, First Edition 英文高清PDF下载 阅读1856次,点赞2次
- 资源分享 - GPU Gems 1 - Programming Techniques, Tips and Tricks for Real-Time Graphics英文高清PDF下载 阅读3823次,点赞0次
- mciSendCommand在Win10上奔溃的问题解决/循环播放音乐 阅读3280次,点赞0次
- 资源分享 - Game Physics Engine Development- How to Build a Robust Commercial-Grade Physics Engine for your Game (Second Edition) 英文高清PDF下载 阅读2252次,点赞0次
- 资源分享 - FFmpeg从入门到精通(刘岐赵文杰著)PDF下载 阅读16202次,点赞22次
- VTK以批量三维点坐标为中心(点云)绘制球体,可用于标识特征点或者是化学分子 阅读5232次,点赞0次
- WordPress - 后台登录成功/失败发送邮件给网站管理员 阅读3361次,点赞0次
- 资源分享 - A Biography of the Pixel 英文高清PDF下载 阅读2596次,点赞0次
评论
169