美文网首页
python:判断搜索引擎爬虫真伪

python:判断搜索引擎爬虫真伪

作者: 担得一身好酱油 | 来源:发表于2016-04-01 15:39 被阅读0次

    一般情况下,服务器都不会限制搜索引擎的爬虫的抓取,因此,常常会有一些采集者会通过伪装 UserAgent 的方法伪装成搜索引擎爬虫来采集网站信息,而这种伪装的爬虫会记录在日志上,如果不去除这些伪搜索引擎爬虫,将会对搜索引擎爬虫日志的分析结果造成影响,从而影响 SEO * 的判断。
    那么,问题来了!,应该怎么判断搜索引擎爬虫真伪呢?
    ![][biaoqing]
    答案就是!!!通过 IP 查询对应的 host主机名。真实的搜索引擎爬虫ip是有主机名的,而伪装的爬去却没有,通过这种办法来搜索引擎爬虫真伪。

    真实的搜索引擎爬虫
    伪装的搜索引擎爬虫
    python 的标准库 socket 里有个 socket.gethostbyaddr(ip_address) 的方法能为我们效劳,它返回由“主机名称,IP别名,IP地址”构成的元组,如果找不到主机,则抛出异常
    (如上图所示)。
    socket.gethostbyaddr()
    通过接收异常,可实现批量检查 IP。完整代码如下:
    # -
    - coding: utf-8 -*-
    '''运行方法:python 输入的文件路径 输出的文件路径'''
    import socket,sys,time
    start = time.clock()
    script,file,output = sys.argv
    spiders = []
    for x in open(file):
    spiders.append(x.strip())
    def check_spider(list_name):
    spider_check_list = set(list_name)
    print u'共 %s 个待检查 IP,耗时较长,请稍等片刻' % len(spider_check_list)
    true_spider = []
    fake_spider = []
    for x,y in enumerate(spider_check_list):
    try:
    result = socket.gethostbyaddr(y)[2][0]
    true_spider.append(result)
    print u'第 %s 个 ip: %s 是真实的搜索引擎爬虫,添加到 true_spider 列表' % (x+1,y)
    except socket.herror, e:
    print u'第 %s 个 ip: %s 是伪装的搜索引擎爬虫' % (x+1,y)
    fake_spider.append(y)
    print u'共 %s 个真实的搜索引擎爬虫,共 %s 个伪装的搜索引擎爬虫' % (len(true_spider),len(fake_spider))
    return true_spider
    true_spider = check_spider(spiders)
    txt = open(output,'w')
    for x in true_spider:
    txt.writelines(x+'\n')
    txt.close()
    print u'文件输出成功,耗时%s' % time.clock()-start

    Windows PowerShell 下运行了一下,得出了结果:

    检查结果
    有一个比较郁闷的地方就是,要花费 14 多分钟检查 275 个 IP ,这个检查的时间实!在!是!太!长!了!!!!,如果有更好的办法,请告诉我一下。
    [biaoqing]:https://img.haomeiwen.com/i1464422/0f4516be562daa1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

    相关文章

      网友评论

          本文标题:python:判断搜索引擎爬虫真伪

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