如何判断请求是爬虫还是正常访问

发布时间:2018-12-23作者:laosun阅读(7007)

如何判断请求是爬虫还是正常访问

「如何判断请求是爬虫还是正常访问」最近一直在研究这个话题,其实这个事情很难判断,换种说法就是很难做到这点,只能说拦截部分非正常请求。

    最近压力太大,一刻也不想让自己停下来,闲着无聊的时候,研究了一下如何判断一个请求是爬虫还是非正常访问。

    下边博主介绍一下最近的研究一些心得。「 想要做防爬,首先得学会爬别人 」

    其实任何一个网站都很难做到防爬,甚至可以说是恶意访问。

    研究这个话题之前,必须得明白你的网站是要做到宁可错杀一千不可放过一个?还是宁可放过一千不可错杀一个 这个道理。我认为作为站长应该是宁可放过一千不可错杀一个。所以我也只是增加了爬虫检测机制,而没有真正意义上的进行封杀。

    那么什么是正常访问,顾名思义就是正常打开浏览器,浏览你的网站,你的文章。

    那么什么是非正常访问,就是和上边相反,使用爬虫抓取你的文章,恶意访问你的网站,大量请求,占用资源。其实非正常访问很难做到封杀的,比如说真实的肉鸡(肉鸡也称傀儡机,是指可以被黑客远程控制的机器。比如用"灰鸽子"等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情),代理IP等都可以进行伪装自己。

    那么如何做一些最基本的防爬呢,其实可以从以下几点进行考虑:

    1、判断请求头user_agent,有的技术懒人或者菜鸟不加这个,如果为空,你可以直接进行封禁

    限制请求/提交次数,比如每分钟最多请求60次,3分钟最多请求100次。如果超过这种阶梯式的设置次数就进行封禁,凡是这种封禁最好是可解除的,称为临时封禁,还有一种永久封禁,博主就是达到这个峰值的时候直接跳转到验证码页面。

    2、保存各大搜索引擎的蜘蛛IP(这个可以查询到的),保存下来放行,但是这个不易维护。

    3、判断user_agent头,因为头里有一些搜索引擎的来源(网上有开源的项目包,可以根据user_agent判断系统、浏览器版本型号,感兴趣的可以用一下),但是这个很容易伪造,博主爬别人就有使用百度爬虫头的习惯。

    4、页面植入js,如果是浏览器打开就肯定会执行这个js,那么后台拦截这个js的请求,反之则是爬虫。这块的准确率达到了80%以上,甚至90%以上。为什么还有有不准的情况呢,因为有几种情况是统计不到的,比如快速刷新(页面还没完全打开)、网速不好的情况下,页面也会一直在加载。

    5、另外可以做一个封杀表,按照IP(全匹配)、user_agent(模糊匹配)两种类型进行封禁,比如user_agent含有Python的,博主认为肯定是爬虫。


    博主想到的就是这些,感兴趣的朋友可以尝试一下。下边博主截图的是博主的后台管理图

    image.png


    image.png


12 +1

版权声明

 安全  服务端

 请文明留言

12 条评论