竹笋

首页 » 问答 » 灌水 » 可能是最全的反爬虫及应对方案
TUhjnbcbe - 2020/11/19 3:01:00
白癜风公益献礼 http://disease.39.net/bjzkbdfyy/171027/5796518.html

爬虫是Python的一个常见应用场景,很多练习项目就是让大家去爬某某网站。爬取网页的时候,你大概率会碰到一些反爬措施。这种情况下,你该如何应对呢?本文梳理了常见的反爬措施和应对方案。

通过User-Agent来控制访问

无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers,比如知乎的requestsheaders

这里面的大多数的字段都是浏览器向服务表明身份用的

对于爬虫程序来说,最需要注意的字段就是:User-Agent

很多网站都会建立user-agent白名单,只有属于正常范围的user-agent才能够正常访问。

解决方法:

可以自己设置一下user-agent,或者更好的是,可以从一系列的user-agent里随机挑出一个符合标准的使用。

实现难度:★IP限制

如果一个固定的ip在短暂的时间内,快速大量的访问一个网站,后台管理员可以编写IP限制,不让该IP继续访问。

解决方法:

比较成熟的方式是:IP代理池

img

简单的说,就是通过ip代理,从不同的ip进行访问,这样就不会被封掉ip了。

可是ip代理的获取本身就是一个很麻烦的事情,网上有免费和付费的,但是质量都层次不齐。如果是企业里需要的话,可以通过自己购买集群云服务来自建代理池。

实现难度:★SESSION访问限制

后台统计登录用户的操作,比如短时间的点击事件,请求数据事件,与正常值比对,用于区分用户是否处理异常状态,如果是,则限制登录用户操作权限。

缺点:

需要增加数据埋点功能,阈值设置不好,容易造成误操作。

解决方法:

注册多个账号、模拟正常操作。

实现难度:★★★SpiderTrap

蜘蛛陷阱导致网络爬虫进入无限循环之类的东西,这会浪费蜘蛛的资源,降低其生产力,并且在编写得不好的爬虫的情况下,可能导致程序崩溃。礼貌蜘蛛在不同主机之间交替请求,并且不会每隔几秒钟从同一服务器请求多次文档,这意味着“礼貌”网络爬虫比“不礼貌”爬虫的影响程度要小得多。

反爬方式:创建无限深度的目录结构HTTP://example.
1
查看完整版本: 可能是最全的反爬虫及应对方案