摄影:产品经理
几乎是半价,我到了一家通常要排长队的餐厅。
有一个词叫“三月爬虫”,意思是有些同学毕业后需要收集数据写毕业论文,于是在网上随便找了几个教程,了解了一点requests甚至urllib和正则表达式,就开始疯狂地从网上写关于爬虫抓取数据的东西。这些爬虫几乎不做任何隐藏自己的事情,不改IP,不设头,不限速,容易被有防爬的网站屏蔽,容易给没有防爬的小网站造成流量压力。
后来他们不知道看的是哪篇文章,只知道要用代理IP,修改UserAgent。因此,他们实际上只在头中设置了UserAgent,其他什么都没有。你给他指出来,他振振有词:你看,我可以这样爬数据。头文件中的其他项目是没有用的。
真的是这样吗?
我们来做个实验,首先使用Chrome访问
http://httpbin.org/headers 这个网站可以显示当前你的headers。运行效果如下图所示:
让我们做一个实验。首先,使用Chrome访问
http://httpbin.org/headers.这个网站可以显示你当前的标题。运行效果如下图所示:
然后,再使用requests不设置headers请求这个URL,运行效果如下图所示:
然后使用requests请求这个URL,不设置头,运行效果如下图所示:
最后,我们仅仅设置一个UserAgent看看效果:
最后,我们设置一个用户代理来看看效果:
可以看出,仅仅设置一个UserAgent和使用浏览器访问Headers还是有很多区别的。许多物品不见了。网站只需要检测这些缺失的项目,从而确定您是用程序还是用浏览器发出请求。
先说微信网页版的问题。很多人使用wxpy或itchat等第三方库,通过Python控制自己的微信号,实现很多自动化操作。但不久后,我举报说被限制登录网页版微信,以为自己的行为被微信发现了,比如一秒钟发几十条消息,或者同时回复几个人的消息。
但我想说的是,你太高估自己了。微信不用费那么大劲找你。它可以直接检查报头。
我们来看一下wxpy的源代码中,涉及到网络请求的地方:
我们来看看wxpy的源代码,这里涉及到网络请求:
wxpy是基于itchat二次开发的,登录功能是通过 itchat 来实现的。我们再来看看itchat里面发起网络请求的地方:
Wxpy是基于itchat开发的,通过itchat实现登录功能。让我们看看在itchat中发起网络请求的位置:
其中的 self.core.s就是一个 requests 的 Session,如下图所示:
其中self.core.s是请求的会话,如下图所示:
看到了吗?在这两个库中,他们只将UserAgent放在头中,而不放在其他字段中。所以在你登录的那一刻,微信已经知道你的账号不是用浏览器登录的!
所以,那些使用wxpy或itchat后被限制登录网页版微信的人,不要怀疑你只是被这两个库害了。这两个库涉及网络请求的相关代码,一看就是一个学了两三天爬虫的人写的代码。
通过使用这两个库,你正在让你的微信号死去。
不仅仅是这两个库,我们再看看很多人使用的Python 弹幕包,更夸张,在获取斗鱼直播信息的时候,直接用requests请求网址,连headers都没有设置,如下图所示:
不仅是这两个库,我们再来看看很多人用的Python弹幕包。就更夸张了。在获取宇都的信息时,直接使用requests请求URL,甚至连头都不设置,如下图所示:
这纯粹是***。
现在大网站的机器人行为对抗团队一般会把检测爬虫和封禁爬虫分开。因为反爬虫的策略很多,难免会有误伤。为了尽可能降低误伤率,在检查爬虫时会对请求的可疑性进行评分。当你有疑似爬虫行为时,给你的请求加上一些分数,有些行为分数高,有些行为分数低。当你的总分达到一定程度,再调用被禁进程。
既然HTTP是无状态的,如果你要爬的网站不需要登录,那么也许你频繁换IP是有用的(阿布云的代理池就是这么被污染的)。
但是对于需要登录的微信来说,你所有可疑行为的积分都会直接和你的账户挂钩。所以,一开始,也许你可以用wxpy登录网页版微信,此时你的可疑分还不够高。也许有一些旧浏览器的标题只是缺少了很多项目?但你已经在嫌疑人名单上了。一旦你有其他导致可疑点增加的可疑行为,在微信百分百确定你在使用自动化程序登录网页版微信时,自然会封禁你。
Python学习交流群
为了让大家更即时的交流学习,我们建立了一个Python学习交流群。想入群的同学可以加下面的小助手微信,小助手会拉大家入群的~
本文来自胸大无脑是一种心态投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/482344.html