导航
  • 报考
  • 备考
  • 政策

报考

备考

复习资料

政策

行业动态

对于python工程师来说,反爬虫策略的重要性都体现在这里

环球青藤·2020-05-06 13:06:28浏览40 收藏12

请输入下面的图形验证码

提交验证

预约成功

我知道了
摘要 很多人开始学习编程都会选择python,并且也会将python用在网站抓取之中,不过有很多伙伴说自己网站经常被爬虫打扰,所以觉得需要掌握反爬虫策略,今天环球网校的小编就来和大家讲讲反爬虫策略,希望这篇文章可以为你带来帮助。

爬虫对于服务器是一种巨大的资源负荷,想象一下,你从云服务商那里买了个 30 块钱一个月的虚拟云服务器,搭建了一个小型的博客用于分享自己的技术文章。你的文章非常优质,很多人慕名来访问,于是服务器的响应速度变慢了。有些人开始做爬虫来访问你的博客,为了做到实施更新,这些爬虫每秒钟都要疯狂的访问几百次,这时候可能你的博客再也没人能成功获取到内容了。

这时候你就必须想办法遏制爬虫了。服务器反爬虫策略有很多,每次 HTTP 请求都会带很多参数,服务器可以根据参数来判断这次请求是不是恶意爬虫。

比如说 Cookie 值不对,Referer 和 User-Agent 不是服务器想要的值。这时候我们可以通过浏览器来实验,看哪些值是服务器能够接受的,然后在代码里修改请求头的各项参数伪装成正常的访问。

除了固定的请求头参数,服务器可能还会自定义一些参数验证访问是否合法,这种做法在 app 端尤其常见。服务器可能要求你利用时间戳等一系列参数生成一个 key 发送给服务器,服务器会校验这个 key 是否合法。这种情况需要研究 key 的生成,如果不行干脆用模拟浏览器以及虚拟机来完全冒充用户。

服务器还会限制 IP,限制 IP 的访问速度。比如我用 IP 为 45.46.87.89 的机器访问服务器,服务器一旦自认为我是爬虫,会立刻加入黑名单,下一次起我的访问就完全无效了。绝大多数的 IP 限制都不会有这么严格,但是限制访问速度是很常见的,比如服务器规定 1 个小时以内,每个 IP 只能访问 40 次。

这要求爬虫设计者要注意两件事:

珍惜服务器资源,不要太暴力的获取服务器资源

时刻注意 IP 代理池的设计

设计太快的访问速度是一种不道德的行为,不应该受到任何鼓励,服务器在受到爬虫暴力访问后可能会将迅速反应,将反爬虫策略设计得更加严格,因此我从来不将爬虫的速度设计得太快,有时候会延时 1 分钟再做下一次爬取,我始终认为免费获取别人的内容也应该珍惜。

在设计爬虫的时候不要忘记隐藏自己的真实 IP 来保护自己。IP 代理池是每一次访问都换不同的 IP,避免被服务器封掉。网上有很多免费的代理池,可以做个爬虫爬取下来存储备用。也有很多现成的库比如 proxy_pool 就非常好用,安装完成以后访问本地地址就可以获取到可以用的 IP 列表。

爬虫和反爬虫会长时间斗志斗勇,除了上述问题还会遇到其他问题,比如说验证码设置。不同的验证码有不同的处理方式,常见的反爬虫策略有买付费的验证服务,图像识别等。

其他具体的问题可以使用「抓包工具」去分析,比较常用的抓包工具有 charles 和 Fiddler,使用也很简单,搜教程看几分钟就会了。命令行我用过 mitmproxy,名字非常高大上,「中间人攻击」。我还尝试了 Wireshark,这个操作起来复杂得多,不过整个访问流程都不放过,不愧是学习 HTTP 的利器,有精力应该看一下 『网络是怎样链接的』和『WireShark网络分析就这么简单』这两本书,对理解网络访问非常有帮助。

抓包工具非常有用,不仅可以用来做爬虫分析,还可以用做网络攻防练习。我曾经用 Fiddler 发现了一个主流健身软件的很多漏洞,不过很快被他们发现了,他们通知我通过他们官方的渠道提交漏洞会有奖励,我照做了,不过没有得到他们的任何奖励和回复。可见,大公司也并不都靠谱。

以上就是有关于反爬虫策略的全部内容,小编希望大家所学的python知识可以用在自己的工作领域中,毕竟作为一个应用类的技能,最终还是要应用在实际领域中才能发挥它的作用,环球网校的小编在这里祝大家学有所成,并彻底掌握python的使用方法。想获取更多有关python的知识,可以点击下方资料下载链接。

展开剩余
资料下载
历年真题
精选课程
老师直播

注册电脑版

版权所有©环球青藤All Rights Reserved