美文网首页
如何判断一个请求来自搜索引擎的爬虫

如何判断一个请求来自搜索引擎的爬虫

作者: Rapheal | 来源:发表于2017-07-24 17:19 被阅读0次

    如何判断一个请求来自搜索引擎的爬虫

    • 正确清楚下每个请求都有 UserAgent ,但是UserAgent 是可以伪装
    • 判断请求 ip对应的host主机名是否是搜索引擎

    通过UserAgent 判断

    需要匹配的关键字是:
    Baiduspider
    Googlebot
    360Spider
    Sosospider
    sogou spider

    百度:http://www.baidu.com/search/spider.htm
    google:https://support.google.com/webmasters/answer/1061943
    360:http://www.so.com/help/help_3_2.html
    soso:http://help.soso.com/webspider.htm
    sogou:http://www.sogou.com/docs/help/webmasters.htm#07

    通过 ip 解析的出来的主机名称

    在linux平台下,您可以使用host ip命令反解ip来判断是否来自Baiduspider的抓取。Baiduspider的hostname以 *.baidu.com 或 *.baidu.jp 的格式命名,非 *.baidu.com 或 *.baidu.jp 即为冒充。
    $ host 123.125.66.120
    120.66.125.123.in-addr.arpa domain name pointer
    baiduspider-123-125-66-120.crawl.baidu.com.

    在windows平台或者IBM OS/2平台下,您可以使用nslookup ip命令反解ip来 判断是否来自Baiduspider的抓取。打开命令处理器 输入nslookup xxx.xxx.xxx.xxx(IP地 址)就能解析ip, 来判断是否来自Baiduspider的抓取,Baiduspider的hostname以 *.baidu.com 或 *.baidu.jp 的格式命名,非 *.baidu.com 或 *.baidu.jp 即为冒充。

    在mac os平台下,您可以使用dig 命令反解ip来 判断是否来自Baiduspider的抓取。打开命令处理器 输入dig xxx.xxx.xxx.xxx(IP地 址)就能解析ip, 来判断是否来自Baiduspider的抓取,Baiduspider的hostname以 *.baidu.com 或 *.baidu.jp 的格式命名,非 *.baidu.com 或 *.baidu.jp 即为冒充。

    nodejs 代码实现

    const dns = require('dns');
    dns.lookupService('127.0.0.1', 22, (err, hostname, service) => {
      console.log(hostname, service);
      // Prints: localhost ssh
    });
    
    

    相关文章

      网友评论

          本文标题:如何判断一个请求来自搜索引擎的爬虫

          本文链接:https://www.haomeiwen.com/subject/tlgbkxtx.html