美文网首页Java 杂谈Java
反爬虫机制与应对方法

反爬虫机制与应对方法

作者: bugWriter_y | 来源:发表于2019-08-21 20:30 被阅读0次
    spider.jpg

    终极反爬虫:让爬虫爬假数据或者假页面(和真的结构上几乎没有区别),让爬虫开发者意识不到自己的错误。最后爬虫开发者被离职~~

    1. 请求头验证。

    浏览器访问网站的时候除了会发送url,参数等内容外,还会给服务器端传递一些额外的请求头(request header)。例如User-Agent,referer,host等等。简单的爬虫不做处理发送请求相关的请求头要么为空,要么没有,要么内容不对。

    反爬虫

    我们可以在服务端通过请求头的验证来预防简单的爬虫

    应对方法

    爬虫程序设置合适的请求头来模拟浏览器的访问

    2. ip访问频率限制

    反爬虫

    服务端可以增加对ip访问频率的限制,当超过频率就可以认为是爬虫

    应对方法

    我们可以设置每一次爬取的时间间隔(或者随机时间间隔更好)长一点儿。或者通过伪装ip,ip代理的方式来设置不同的ip地址。

    • 伪装ip

    爬虫增加x-forwarded-for请求头设置随机ip地址。

    • 使用ip代理

    实现准备大量的ip代理服务器组成ip池,然后每一次请求都从ip池中取一个作为ip代理服务器发送请求

    反爬虫
    • 针对第一种应对方法我们可以在对外的nginx反向代理中设置x-forwarded-for请求为
    #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#配置了这个服务端才能拿到真实的IP地址
    proxy_set_header X-Forwarded-For $remote_addr;#最外层的nginx直接覆盖掉x-forwarded-for请求头内容为真实ip
    

    3. 蜜罐技术

    反爬虫

    在网页中设置一些隐藏的链接,这些链接在浏览器上是看不到的,所以用户也是点击不到的。但是爬虫有可能会点击到。如果有请求点击到了,可以认为是爬虫

    应对方法

    需要手动去研究网页的内容了,找出这些链接的规律然后排除

    4. 不同类型的源代码格式

    反爬虫

    相同类型的网页用不同的格式来编写页面,这样爬虫开发者在分析页面的时候可能会遇到困难

    应对方法

    没办法,研究页面

    5. 验证码,滑动解锁之类

    反爬虫

    需要用户输入验证码或者滑动解锁以后才能进行登陆

    应对方法
    • 验证码的话,可以考虑机器学习图像识别来训练验证码识别模型
    • 滑动解锁可以考虑使用selenium结合图像识别来自动滑动滑块实现滑动解锁

    相关文章

      网友评论

        本文标题:反爬虫机制与应对方法

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