简述
网站被各个搜索引擎收录是一件开心的事,更欢迎他们时常关顾。
大部分时候,我们可以通过爬虫的UA即(user-agent)判断爬虫类型,允许放行或阻止。
君子协议的rebots将其也可以作限制条件。
当我们遇到不法之徒伪造UA恶意爬取时,我又该怎么办呢?
在Google文档我们可以找到答案即
DNS反向查找
在Google 抓取工具(用户代理)概览中,明确提及。
UA 值可能会被仿冒。如果您需要验证访问者是否为 Googlebot,则应使用 DNS 反向查找。
手动验证可以参考 使用 DNS 反向查找 验证 Googlebot
这里直接引用代码
linux
> host 66.249.66.1
1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
> host crawl-66-249-66-1.googlebot.com
crawl-66-249-66-1.googlebot.com has address 66.249.66.1
window
>nslookup 66.249.66.1
服务器: RT-AC3100-C45B.lan
Address: 192.168.2.1
名称: crawl-66-249-66-1.googlebot.com
Address: 66.249.66.1
>nslookup crawl-66-249-66-1.googlebot.com
服务器: RT-AC3100-C45B.lan
Address: 192.168.2.1
非权威应答:
名称: crawl-66-249-66-1.googlebot.com
Address: 66.249.66.1
php 中验证 Googlebot
<?php
$ip = '66.249.66.1';
$name = gethostbyaddr($ip);
$addr = gethostbyname($name);
echo 'name:'.$name.PHP_EOL;
echo 'addr:'.$addr.PHP_EOL;
echo 'reslut:'.($ip == $addr).PHP_EOL;
exit;
结果
name:crawl-66-249-66-1.googlebot.com
addr:66.249.66.1
reslut:1