• 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

nginx – 禁止特定User-Agent或者空User-Agent等垃圾爬虫爬取网站、爆破接口

宝塔面板 发布于2023-09-11 阅读 2,899次 0次评论 0次点赞 本文共2574个字,阅读需要7分钟。

最近一个星期日常对网站进行运维,从一周前开始断断续续开始看到网站的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文件;如果是使用的宝塔面板,在宝塔面板 - 网站 - 设置 - 配置文件进行修改,如下图

nginx - 禁止特定User-Agent或者空User-Agent等垃圾爬虫爬取网站、爆破接口-第0张图片

在对应的网站的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年10月07日 16:13:05

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
Docker - 容器操作入门指南
Linux运维
下一篇
Docker - docker内服务自启动,使用镜像创建容器时同时启动服务
Linux运维
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号