发一段 Nginx 屏蔽各无效爬虫的配置上来,欢迎大家补充完善。

2018-09-10 20:30:17 +08:00
 nicoljiang

最近发现大量来自欧美的请求,高峰每秒 58 个请求里,有 52 个都是这些爬虫。

它们爬的速度快,范围广,又不能产出实际效益,完全可以屏蔽掉。

下面是我的配置:

if ($http_user_agent ~* "AhrefsBot|MJ12bot|hubspot|opensiteexplorer|leiki|webmeup") {
        return 403;
}

欢迎大家一起来补充完善:

  1. 各爬虫的关键词;
  2. 不同 Server 的配置。
6256 次点击
所在节点    程序员
23 条回复
asilin
2018-09-10 21:13:19 +08:00
return 状态可以改成 444。
snal123
2018-09-10 21:31:34 +08:00
楼主你能解释下写的这个有啥用?
airyland
2018-09-10 21:40:11 +08:00
为什么不直接改 robots 规则
CEBBCAT
2018-09-10 22:26:34 +08:00
楼上+1
1v9
2018-09-10 23:42:01 +08:00
@snal123

首先需要这个东西,https://github.com/alibaba/nginx-http-user-agent

然后看谁不爽就把谁放进去,可以返回状态码也可以转向其他的地方。
SukkaW
2018-09-10 23:46:18 +08:00
FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms
nicoljiang
2018-09-11 00:24:39 +08:00
@airyland
@CEBBCAT
1. 不一定所有的都支持
2. 不会立马生效
nicoljiang
2018-09-11 00:24:50 +08:00
@SukkaW
buffge
2018-09-11 01:49:57 +08:00
既然做爬虫了,还不改 user-agent? 我一般都是用谷歌浏览器 ua.
nicoljiang
2018-09-11 01:56:11 +08:00
@buffge 倒是不认为 UA 能解决所有问题,但理论上比 robots.txt 的适用性更广,且更高效直接。这个观点应该没问题。
nicoljiang
2018-09-11 02:20:35 +08:00
@asilin 学习了
xiaoz
2018-09-11 08:15:09 +08:00
@airyland 万一有些爬虫不遵守 robots.txt 呢
jiabing520a
2018-09-11 08:45:29 +08:00
LMAO|Hakai|Gemini|Wappalyzer|masscan|crawler4j|Mappy|Center|eright|aiohttp|MauiBot|Crawler|researchscan|Dispatch|AlphaBot|Census|ips-agent|NetcraftSurveyAgent|ToutiaoSpider|EasyHttp|Iframely|sysscan|fasthttp|muhstik|DeuSu|mstshash|HTTP_Request|ExtLinksBot|package|SafeDNSBot|CPython|SiteExplorer|SSH|python-requests|MegaIndex|BUbiNG|CCBot|NetTrack|Digincore|aiHitBot|SurdotlyBot|null|SemrushBot|Test|Copied|ltx71|Nmap|DotBot|AdsBot|InetURL|Pcore-HTTP|PocketParser|Wotbox|newspaper|DnyzBot|redback|PiplBot|SMTBot|WinHTTP|Auto Spider 1.0|GrabNet|TurnitinBot|Go-Ahead-Got-It|Download Demon|Go!Zilla|GetWeb!|GetRight|libwww-perl|Cliqzbot|MailChimp|SMTBot|Dataprovider|XoviBot|linkdexbot|SeznamBot|Qwantify|spbot|evc-batch|zgrab|Go-http-client|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|EasouSpider|LinkpadBot|Ezooms|^$
Leigg
2018-09-11 09:43:54 +08:00
既然是反爬虫,什么 ua,robot 规则都是基本的,如果不是重要的数据,再限制单 ip 访频就足够。
Xrong
2018-09-11 09:46:23 +08:00
longyujin9
2018-09-11 10:11:21 +08:00
if ($http_user_agent !~* (Chrome|Opera|Safari|Edge|Firefox|Gecko)) {
return 444;
}

只允许浏览器 ua 进行访问
nicoljiang
2018-09-11 10:18:27 +08:00
@Leigg 嗯 也有道理。但爬虫名还是不能少,你也可以补充一下 robots 的版本。

@longyujin9 你们都知道 444

@Xrong 好东西,star
nicoljiang
2018-09-11 10:21:38 +08:00
@jiabing520a 真全。不过屏蔽了一些 WinHTTP、HttpClient 之类的,恐怕使用的时候得具体看看场景。
Joyboo
2018-09-11 17:10:16 +08:00
多数框架都会判断是否爬虫请求的,只要看过源码的大概都知道吧
nicoljiang
2018-09-11 18:26:31 +08:00
@Joyboo 你指的是什么框架?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/487982

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX