快速从 DNS 验证合法爬虫,不要再浪费效能给恶意爬虫!!!
网站在运作从提供服务的运算或是输出的流量,每样事物对于经营者来说都是成本。好的爬虫带来流量,恶意的爬虫带来只有满满的帐单金额。起初并没有太针对爬虫的有太多研究,一切起源于想收集恶意攻击IP名单同时整合进防火墙阻挡的过程中,才思考到清单内是否会带有搜索引擎爬虫的 IP,全阻挡掉的结果会一起封锁搜索引擎爬虫,导致网站无法被正确爬虫索引,毕竟现在网站流量来源有绝大多数靠着搜索引擎带进来的。
理论上主流的搜索引擎爬虫现在都有自主规范,爬虫在搜索数据时都会主动表明身分在 User-Agent 的字串中,而字串的来源建立于网络世界的互相信任,但对于即将要把黑名单的IP清单汇入防火墙中,阻挡会发生在网络的 Layer 3,不会等看到字串内容后后才决定是否封锁IP来源。
脑中第一个冒出的想法就是先去确认google 大神的爬虫该如何验证,在官方说明页面中 Verifying Googlebot清楚的说明如何验证 Google 爬虫 。

基本上大意就是Google 的爬虫会随着时间 IP 范围会有所变化,所以不会有一个官方表格可以参考IP范围。
如果需要验证爬虫来源是否合法,请使用 host这个指令输入IP后,透过 DNS 反查网域名验证,亦可取得网域名后再透过网域反查IP再次确认。
# IP反查網址 [root@Web ~]# host 66.249.69.121121.69.249.66.in-addr.arpa domain name pointer crawl-66-249-69-121.googlebot.com. # 網址反查IP[root@Web ~]# host crawl-66-249-69-121.googlebot.com. crawl-66-249-69-121.googlebot.com has address 66.249.69.121
如果使用的是 Window 的可以使用 nslookup 来查询
C:>nslookup 66.249.69.121 服务器:dns.google Address:8.8.8.8 名称:crawl-66-249-69-121.googlebot.com Address:66.249.69.121 C:\>nslookup crawl-66-249-69-121.googlebot.com. 服务器:dns.google Address:8.8.8.8 未经授权的回答: 名称:crawl-66-249-69-121.googlebot.com Address:66.249.69.121
确认 Google 有提供这样的服务后,查询其他家的搜索引擎,整理过后提供下列表格。
搜尋引擎 | DNS反查 | 反查字串 | 來源 |
Y | .google.com .googlebot.com | Verifying Googlebot | |
百度 | Y | crawl.baidu.com. .crawl.baidu.jp. | FAQs of Baiduspider |
Bing | Y | search.msn.com | Verifying Bingbot |
Yandex | Y | yandex.ru yandex.net yandex.com | Yandex Support |
DuckDuckBot | N | 提供IP清單 | DuckDuckBot |
Yahoo | N | ||
N |
Shell
取得一长串的 IP 列表可利用shell script 快速反查DNS验正来源,过滤完成的表单后在进行后续处理。
此程式码并没有做出正反查询,是为了节省运算时间,白名单的IP再用其他 Shell Script 二次验证。
host_check(){ Listlocal=$1 HCtemplist=$(mktemp /tmp/iplistA.XXXX) for ip in $(cat $Listlocal) do if [ $(host $ip | grep -v -E '(google.com.$|googlebot.com.$|.search.msn.com.$|.baidu.com.$|.baidu.jp.$|.yandex.ru.$|.yandex.net.$|.yandex.com.$|duckduckbot.duckduckgo.com.$)'| wc -L) -gt 0 ] ; then echo "$ip" >> $HCtemplist ; else echo "$ip">> $WhiteIpList ; fi & sleep 0.015 done wait mv -f $HCtemplist $Listlocal } WhiteIpList=/tmp/WhiteIpList host_check "/www/wwwlogs/ip.log"
WhiteIpList
查询完成后白名单存放处
IP列表檔案路徑
请修改成需要输入的清单路径
本文来源 https://cjk.aiao.today/dns-verify_legal_crawlers/
暂无评论
发表评论