V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nicoljiang
V2EX  ›  程序员

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

  •  
  •   nicoljiang · 2018-09-10 20:30:17 +08:00 · 6285 次点击
    这是一个创建于 2299 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    下面是我的配置:

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

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

    1. 各爬虫的关键词;
    2. 不同 Server 的配置。
    第 1 条附言  ·  2018-09-11 10:18:44 +08:00
    23 条回复    2018-09-15 19:12:43 +08:00
    asilin
        1
    asilin  
       2018-09-10 21:13:19 +08:00
    return 状态可以改成 444。
    snal123
        2
    snal123  
       2018-09-10 21:31:34 +08:00 via iPhone
    楼主你能解释下写的这个有啥用?
    airyland
        3
    airyland  
       2018-09-10 21:40:11 +08:00
    为什么不直接改 robots 规则
    CEBBCAT
        4
    CEBBCAT  
       2018-09-10 22:26:34 +08:00 via Android
    楼上+1
    1v9
        5
    1v9  
       2018-09-10 23:42:01 +08:00
    @snal123

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

    然后看谁不爽就把谁放进去,可以返回状态码也可以转向其他的地方。
    SukkaW
        6
    SukkaW  
       2018-09-10 23:46:18 +08:00   ❤️ 5
    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
        7
    nicoljiang  
    OP
       2018-09-11 00:24:39 +08:00
    @airyland
    @CEBBCAT
    1. 不一定所有的都支持
    2. 不会立马生效
    nicoljiang
        8
    nicoljiang  
    OP
       2018-09-11 00:24:50 +08:00
    @SukkaW
    buffge
        9
    buffge  
       2018-09-11 01:49:57 +08:00
    既然做爬虫了,还不改 user-agent? 我一般都是用谷歌浏览器 ua.
    nicoljiang
        10
    nicoljiang  
    OP
       2018-09-11 01:56:11 +08:00
    @buffge 倒是不认为 UA 能解决所有问题,但理论上比 robots.txt 的适用性更广,且更高效直接。这个观点应该没问题。
    nicoljiang
        11
    nicoljiang  
    OP
       2018-09-11 02:20:35 +08:00
    @asilin 学习了
    xiaoz
        12
    xiaoz  
       2018-09-11 08:15:09 +08:00 via Android
    @airyland 万一有些爬虫不遵守 robots.txt 呢
    jiabing520a
        13
    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
        14
    Leigg  
       2018-09-11 09:43:54 +08:00 via iPhone
    既然是反爬虫,什么 ua,robot 规则都是基本的,如果不是重要的数据,再限制单 ip 访频就足够。
    Xrong
        15
    Xrong  
       2018-09-11 09:46:23 +08:00
    longyujin9
        16
    longyujin9  
       2018-09-11 10:11:21 +08:00
    if ($http_user_agent !~* (Chrome|Opera|Safari|Edge|Firefox|Gecko)) {
    return 444;
    }

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

    @longyujin9 你们都知道 444

    @Xrong 好东西,star
    nicoljiang
        18
    nicoljiang  
    OP
       2018-09-11 10:21:38 +08:00
    @jiabing520a 真全。不过屏蔽了一些 WinHTTP、HttpClient 之类的,恐怕使用的时候得具体看看场景。
    Joyboo
        19
    Joyboo  
       2018-09-11 17:10:16 +08:00
    多数框架都会判断是否爬虫请求的,只要看过源码的大概都知道吧
    nicoljiang
        20
    nicoljiang  
    OP
       2018-09-11 18:26:31 +08:00
    @Joyboo 你指的是什么框架?
    buffge
        21
    buffge  
       2018-09-11 19:22:16 +08:00
    @nicoljiang 我觉得你这是防蜘蛛,而不是屏蔽爬虫
    nicoljiang
        22
    nicoljiang  
    OP
       2018-09-11 20:54:51 +08:00
    @buffge 不管是 Spider 还是 Crawler,实际上指的都是一类的东西。
    mingyun
        23
    mingyun  
       2018-09-15 19:12:43 +08:00
    @longyujin9 header 里伪造的 ua 可以通过吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5389 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 07:09 · PVG 15:09 · LAX 23:09 · JFK 02:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.