解决爬虫们的大部分障碍——mitmproxy使用初探

解决爬虫们的大部分障碍——mitmproxy使用初探,第1张

mitmtproxy即mitm+proxy,顾名思义是中间人攻击加代理。用于中间人攻击的代理首先会向正常代理一样转发请求,保障服务器与客户端的通信,其次,会适时的查、记录截获的数据 篡改数据 ,引发服务端和客户端的特定行为。

mitmproxy可以利用python实现高度定制脚本。因为mitmproxy工作在>实际上,在网络应用中,Web服务器通常不会直接将自己的数据提供给用户。通常,它们会将数据存储在数据库中,并提供一个API(>

上篇写道,一审法院将社交平台数据以是否设置访问权限分为“公开数据”与“非公开数据”后,对被告Y公司抓取的数据类型进行评议,结论是Y公司抓取了“非公开数据”且不能合理解释、举证其抓取非公开数据行为的正当性。

随后,一审法院对Y公司到底是用何种手段抓取进行评议。

一审争议焦点:数据抓取方式

W公司的主张

第一,未经授权抓取。Y公司不是微博后端数据的授权使用方。

第二,非搜索引擎类爬虫。Y公司自认了这一点。

第三,设置访问权限的页面不可能通过网络爬虫技术抓取。

第四,W公司针对微博平台前端和后端数据都设置了技术保护措施,包括“登录机制”及“反抓站技术”。

第一种,受限于登陆机制和反抓站技术的限制,为实现YJ系统采集数亿条数据及实时性,需要伪装成大量微博用户并模拟用户行为。

第二种,伪装成微博客户端,即破解了微博产品密钥,直接向微博平台服务器调取后端数据。但这种方式本身仍然受到反抓站技术限制,不可能无限调用,更不能调用「已经删除」或者「被用户设置为不展示」的数据。

第三种,直接攻击微博平台服务器——这种方式可以实时、无限地调用平台后端数据,可以实现抓取「已经删除」或者「被用户设置为不展示」的数据。

这三种方式均具有不正当性,结合YJ系统展示情形,W公司认为第三种是最有可能采用的方式。

Y公司的主张

一审法院评议

一审法院对Y公司无法自圆其说之处的解析已在上篇写道,此处不再重复。简单总结,就是在W公司专家辅助人已从技术层面对网络爬虫无法实现用户行为触发后才能展示的结果进行合理解释的情况下,Y公司未就此做进一步回应或者提交相反证据,其所称的使用网络爬虫技术抓取数据缺乏事实证明,无法得到法院支持。

二审新增争议焦点:数据接口

这个说法推翻了它在一审期间的陈述,一审期间,Y公司明确自己是通过网络爬虫技术抓取数据,并在法院询问是否有其他方式时,明确否认。

第一,关于国新办工作人员、W公司工作人员和Y公司工作人员的沟通内容。

Y公司主张2011年时国新办工作人员、W公司工作人员和Y公司工作人员,曾就YJ系统使用新浪微博数据的问题进行沟通,并且提供Y公司员工之间的往来邮件作为证据。

但是这些邮件都是Y公司员工之间转发的邮件,法院认为 转发邮件时,被转发的内容可以被修改 ,因此要求Y公司提供原始邮件,但是Y公司既没有提供原始邮件,也没有做出任何合理解释。

第二,W公司、Y公司工作人员的沟通内容。

Y公司提供了2017年10-11月期间,其工作人员与W公司工作人员关于“微博-Y数据业务合作问题”的往来邮件,法院认为其为孤证,既没有关于合作事项前因后果的相关证据,也没有详细的合同文本予以确认。

法院进一步指出,邮件本身的内容没有明确YJ系统是否可以“未经授权使用新浪微博的高权限数据”, 反而证明了W公司非常明确地向Y公司提出“将微博数据商业化提供给政务领域的客户”不属于许可使用的范围

第三, 五个接口至今可以登陆的证据。

Y公司还提交了五个接口账号至今可以登录的证据,但不能证明以下内容:

二审法院对“网络爬虫抓取”进行评议

第一,关于通过比对识别“已删除微博”的解释。

法院指出,进行比对,需要用户开始使用(YJ系统)一段时间后、收集不同时间节点的微博信息才能实现。

Y公司在一审时,声称只有在用户发出指令后,YJ系统才开始收集微博数据,而 在案证据显示 ,用户在YJ系统输入某一个关键词后,相关微博就已经会出现“转”“评”“删”的内容,而此时并不具备Y公司所称的「相隔多天后进行数据对比」的条件,因此该解释不成立。

第二,关于不停网络爬虫不停抓取,所以可以获得足以支撑YJ系统运行的信息量的解释。

在案证据和现场勘验情况显示 ,用户未登陆时可以查看的微博内容非常有限,而在YJ系统内输入某一关键词后,监测到的微博数量,远远超过未登陆状态下可获取的内容。

Y公司提交的证据不仅不能证明面对海量微博信息,YJ系统是如何选定关键词并将信息有效整合,反而证明的W公司确实设置了“用户行为触发”等访问权限。

Y公司无法证明为什么它的网络爬虫可以抓取需要“用户触发行为”才可以加载的信息。

二审法院认为,在不通过技术手段破坏或者绕开W公司所作的技术限制的情况下,无法实现Y公司所宣称的YJ系统所具有的功能。

第三,关于“精确到秒”的解释。

法院认为Y公司说明了一种技术上实现的可能性,但是并未提交任何证据证明YJ系统是用这种方式实现的。即使YJ系统确实是通过这种方式实现“精确到秒”,在Y公司无法对其他不能自圆其说之处作出合理解释的情况下,也无法推翻一审法院的认定结论。

可以说,一二审整个过程写满八个大字——“打官司就是打证据”。

很多网络爬虫爬着爬着就爬不动了,换个方法继续爬一会又趴窝了,使出浑身解数大战三百回合,哪怕使用了代理IP,也依然败下阵来,那么问题到底出在哪呢?究根结底,是没有找出到底是谁泄了密,是谁告诉了目标网站自己是爬虫。
一般来说,网站会通过以下几个方面来识别对方是爬虫还是真实用户,让我们一起来看看吧。
一、单一IP非常规的访问频次
我们经常会遇到这样一种情况,当我们在某个网站上发帖时,会提示“发帖过快,请等待XX秒”,或者提示“刷新频率过快,请歇一会”,这都是网站为了缓解压力才对“用户”作出的限制。而爬虫相对于真实用户来说更疯狂,访问的频次更快,如果单一IP访问频次非常高,那么将会被判为“爬虫”,进而受到限制。
二、单一IP非常规的数据流量
当单一IP的数据流量非常大时,也会引起网站的注意。说到数据流量有些朋友就会有疑问了,下载站的数据流量大也是很正常的。这里说的数据流量不只是单一的下载数据流量,而是大量的并发请求。高并发请求很容易对服务器造成高负荷,所以受到限制也是很正常的。
三、大量重复简单的网站浏览行为
我们知道,不同的用户浏览速度、习惯等都不相同,有的人浏览一个页面需要五秒,有的需要思考一分钟等等,当存在大量的用户IP都是千篇一律的浏览速度,比如3秒访问一个页面,那么这就非常可疑了,受到封杀也是正常的,就算用了代理IP也避免不了。
四、headers头部校验
除了上面3个比较明显的爬虫行为,网站还会校验headers。headers头部的参数很多,其实也容易伪装,但有些初学者往往会忽略。比较常见的是User-Agent、Referer这两个参数,不同的浏览器有不同的User-Agent,访问来源也各不相同,如果不注意的话,很容易被识别。
五、链接陷阱
我们知道,爬虫爬取页面时,会识别页面中所有的URL地址去爬取,特别是一些没有明确目标的爬虫。有的网站会将一些链接放在CSS里或者JS里,这些链接正常用户是不会去访问的,它们就相当于陷进,作用是钓出爬虫,一不小心就容易中招。
以上五点是比较常见的识别爬虫的手段,要想不被目标网站这么快识别,就要有效的规避这五点,做好爬虫策略,当然反爬手段远远不止这些,这就需要好好研究了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12613495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存