如何准确判断请求是不是搜索引擎爬虫(蜘蛛)发出的请求?(php window linux)

赞赏 2017-08-17

网站日志中经常有各种爬虫的请求,我们通常都根据UserAgent来判断是不是爬虫,但UserAgent是可以伪造的,用它来判断,不是十分靠谱。而IP通常是很难伪造的,那么可以通过获取请 ip 对应的 host 主机名来看看到底是不是正常搜索引擎发的请求


要获得 ip 的 host

1:在 windows下可以通过nslookup 命令,例如:


2:在 linux下可以通过 host 命令来获得:


从上图可以看到这个ip的主机名是 msnbot-207-46-13-191.search.msn.com。 这说明这个ip是一个bing 爬虫,bing 爬虫的域名都是 xxxxxx.search.msn.com

google的是 xxxx.googlebot.com

百度的是 xxxx.crawl.baidu.com


3:其实PHP也有相应的方法,获取这个 host

gethostbyaddr


(PHP 4, PHP 5, PHP 7)

gethostbyaddr — 获取指定的IP地址对应的主机名

说明

string gethostbyaddr ( string $ip_address )

返回指定的IP地址(ip_address)对应的主机名。

参数

ip_address

主机的IP地址。

返回值

成功则返回主机名;失败则原样输出(输出IP地址);如果输入的格式不正常,则返回FALSE

用 gethostbyaddr 做了个查询host 小工具:  http://tool.wode321.com/web/iphost


参考:

http://www.cnblogs.com/yukaizhao/p/python-test-ip-is-searchengine-spider.html

http://php.net/manual/zh/function.gethostbyaddr.php

登陆后阅读全文
阅读 1593 赞赏 0 有用 17 没用 0 收藏 1 分享

   


作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。

0 条留言

赛蓝翔的头像

赛蓝翔

PHP开发一枚

相关文章

Linux php-fpm报错:allow_call_time_pass_reference

如何配置php显示错误信息?

6款程序员必备的开源中文汉字拼音转换及处理工具 (PHP Java .net)

PHP Fatal error: Allowed memory size of bytes exhausted

Linux 服务器如何隐藏 PHP 版本号?

PHP 程序无法识别短标签

改了php.ini中的open_basedir仍报错open_basedir restriction in effect

原来这条命令可以让我们快速找到php.ini的位置

php call_user_fun Call-time pass-by-reference has been remov

php.ini 设置了 error_log 为什么不生效?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

微信跳一跳刷分攻略

改了php.ini中的open_basedir仍报错open_basedir restriction in effect

推荐 | PHP WEB消息推送框架 web-msg-sender (PHPSocket.IO)

如何准确判断请求是不是搜索引擎爬虫(蜘蛛)发出的请求?(php window linux)

PHP Warning: feof() expects parameter 1 to be resource, null

php Warning: A non-numeric value encountered in

原来这条命令可以让我们快速找到php.ini的位置

换成https后,网站还是没有安全标志或安全小锁?

在百度站长平台如何将http换成https

php file_get_contents() 如何伪造发送 referer?

手机扫一扫
分享文章