快速从 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反查反查字串來源
GoogleY.google.com
.googlebot.com
Verifying Googlebot
百度Ycrawl.baidu.com.
.crawl.baidu.jp.
FAQs of Baiduspider
BingYsearch.msn.comVerifying Bingbot
YandexYyandex.ru
yandex.net
yandex.com
Yandex Support
DuckDuckBotN提供IP清單
DuckDuckBot
YahooN

FacebookN


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/