趣头条登录(趣头条可不可以用QQ登录)
摄影:产品经理
几乎半价,我去了我通常要排队很长时间的餐馆
有一个词叫“March crawler”,意思是有同学来毕业,需要收集数据写毕业论文,于是在网上随便找了几个教程,稍微了解了一下请求甚至urllib和正则表达式,然后开始从网上写爬虫抓取数据。这些爬虫几乎不做任何事情来隐藏自己。他们不改IP,不设报头,不限速。他们很容易被有反爬的网站屏蔽,也很容易对没有反爬的小网站造成流量压力。
后来不知道看了哪篇文章,知道需要使用代理IP,修改UserAgent。因此,他们实际上只在标题中设置了UserAgent,而没有其他。你给他指出来,他还振振有词的说:你看,我这样就能爬到数据上,表头其他项目都没用。
真的是这样吗?
让我们做一个实验。首先,使用Chrome访问http://httpbin.org/headers可以显示您当前的标题。运行效果如下图所示:
然后,使用没有设置头的请求来请求这个URL,运行效果如下图所示:
最后,我们只设置一个用户代理来查看效果:
可以看出,仅仅设置一个用户代理和浏览器访问的标题之间仍然有许多不同。少了很多东西。网站只需要检查这些缺失的条目,然后就可以确定你是用程序发起的请求,还是用浏览器发送的请求。
先说微信网页的问题。很多人通过Python使用wxpy或itchat等第三方库来控制自己的微信号,从而实现了很多自动化操作。但不久之后,我举报自己被限制登录网络版微信,以为自己的行为被微信发现了,比如一秒钟发了几十条消息,或者同时回复了几个人的消息。
但我想说的是,你高估了自己,我们也不用费事去微信找你。它可以直接检查标题。
让我们看看wxpy的源代码,其中涉及到网络请求:
Wxpy基于it hat进行二次开发,登录功能通过it hat实现。让我们看看网络请求在itchat中发起的位置:
自核心是一个请求会话,如下图所示:
看到了吗?在这两个库中,它们只将UserAgent放在头中,而不放在其他字段中。所以在你登录的那一刻,微信已经知道你的账号不是用浏览器登录的!
因此,那些使用wxpy或itchat并被限制登录微信网络版的人,不要怀疑你受到了这两个库的伤害。这两个库涉及到网络请求的相关代码,是一个学了两三天爬虫的人写的。
如果你用这两个库,你会和你的微信号同归于尽。
不仅仅是这两个库,我们来看看很多人使用的Python弹幕包,就更夸张了。在获取宇都信息时,我们直接使用请求来请求URL,甚至没有设置标头,如下图所示:
这纯粹是找死的行为。
现在大网站的机器行为对抗团队,通常会把检测爬虫和禁爬虫分开。因为经过多次反爬虫策略,意外伤害是不可避免的。为了尽可能降低意外伤害率,在检查爬虫时会对请求的可疑性进行打分。当您怀疑有爬虫行为时,会在您的请求中添加一些分数。有些行为得分高,有些行为得分低。当你的总分达到一定水平,再调用被禁进程。
由于HTTP是无状态的,如果你想爬的网站不需要登录,经常换IP可能对你有用(阿布云的代理池就是这样被污染的)。
但是对于需要登录的微信来说,你所有的可疑行为的点数都会和你的账号直接相关。所以,一开始你用wxpy登录微信可能是可以的。此时,你的可疑分数还不够高。可能有一些旧浏览器的标题缺少了很多项目。但你已经在嫌疑人名单上了。一旦你有其他可疑行为,并且可疑评分持续上升,当微信可以100%确定你是使用自动程序登录微信web版时,自然会禁止你。
Python学习交流群
为了让大家即时交流学习更多,我们建立了Python学习交流群。想加入群可以加下面的小助手微信,他会把大家拉进群里~