Python 绕过反爬虫

举报
我们都是云专家 发表于 2019/09/06 17:55:45 2019/09/06
【摘要】 我们从遇到的反爬虫现象开始入手,接着学习了 User-Agent 这种反爬虫策略的原理,并且通过 Nginx 实现了反爬虫,最后通过 Python 代码示例和 Postman 示例来验证我们的想法,最终清清楚楚、明明白白的了解到其中的缘由,待目标改变了它的策略时,我们也可以清楚的知道可以使用哪些方法来绕过。
在 Requests 库中,允许用户自定义请求头信息,所以我们可以在请求头信息中将 User-Agent 的值改为浏览器的请求头标识,这样就能够欺骗 Nginx 服务器,达到绕过反爬虫的目的。将之前的 Python 代码改为:
import requests # 伪造请求头信息 欺骗服务器 headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:9527.0) Gecko/20100101 Firefox/9527.0"} resp = requests.get("http://127.0.0.1", headers=headers) print(resp.status_code) 复制代码

代码中我们用到的是 Firefox 浏览器的请求头信息,而且为了更好的观察效果,我们可以更改浏览器的版本号(改成9527)以区分真实浏览器(这不会影响请求结果)。运行这个文件,看看得到的返回结果:

200 复制代码

不是 403 了,说明已经绕过了这种类型的反爬虫(你看,这就是网上那些文章所写的,需要修改请求头信息才能绕过反爬虫,现在你明白是怎么回事了吧)。

练习:使用 Postman 再测试一下

一个测试也许不准确,你还可以通过 Postman 再来测试一下,还记得怎么做吗?

  • 将需要过滤的标识(Postman)添加到 Nginx 的配置文件中

  • 重载配置文件,使其生效

  • 通过 Postman 发起请求看看是否会被过滤

  • 再次使用 Postman 工具,并且携带上浏览器的标识再发起请求,看看是否会被过滤

小提示:这个练习如果你自己来做的话,会更容易理解其中的原理,并且可以加深你的映像。

总结

回顾一下,整篇文章的过程:

20190906ly00044.PNG

我们从遇到的反爬虫现象开始入手,接着学习了 User-Agent 这种反爬虫策略的原理,并且通过 Nginx 实现了反爬虫,最后通过 Python 代码示例和 Postman 示例来验证我们的想法,最终清清楚楚、明明白白的了解到其中的缘由,待目标改变了它的策略时,我们也可以清楚的知道可以使用哪些方法来绕过。


思考:示例中,我仅仅是使用 Python 编写爬虫来演示,那么 Java 写的爬虫呢?PHP 编写的爬虫呢?安卓端发起的请求呢?


作者:云享专家韦世东
链接:https://juejin.im/post/5bdeb32d51882516fa635ace
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。