搜狗陌陌反爬虫机制剖析及应对方式
优采云 发布时间: 2020-08-10 04:50最近项目中,由于须要从微信公众号中获取一些文章内容,所以用到了搜狗陌陌。一旦搜索的次数稍为多一点,就会触发搜狗陌陌的反爬虫机制,最初是须要加上User-Agent恳求头,后来是要求输入验证码,现在输入验证码以后,竟然时常都会报502,导致爬虫极不稳定。搜狗陌陌的反爬虫机制仍然在更新,特别是近来的一次更新,更使人一时半会儿摸不着脑子,也是耗费了好一会儿时间进行了突破。
下面是对探求过程的记录。
首先参考了以下博客:
博主的探求过程,建议在他的博客中直接进行查看,这里我关注的是他说的关于Cookie的部份。
博主觉得恳求时,SUID、SUV和SNUID最为重要,我在谷歌浏览器中看见以下Cookie
除了两个SUID和SUV这三个Cookie,我对Cookie进行了挨个剔除,并重新进行查询,发现其他Cookie都是可以手动生成的。而且不会报502,也不会触发验证码页面。
由于Java中使用Connection.headers(Map cookies)方法,会导致第一个SUID被第二个覆盖掉(虽然我当时确实添加了两个SUID),请求也是正常的,所以,我进一步提不仅第一个SUID,发现刷新页面,也没有问题。
红框之外的Cookie就会手动生成,也没有触发验证码。只有当我剔除SUV时,才会触发验证码机制,从而使输入验证码:
所以,目前为止,需要带上的Cookie只有SUV!
那么,SUV这个Cookie怎么获取呢?
一般来说,通过恳求搜狗陌陌网站,然后获取到Cookie,作为自己的Cookie使用,但是无疑会降低恳求。当时朋友有个大胆的看法,说试试能不能直接传一个32位字符串呢?也真是脑洞大开!这里很自然地就想到了UUID,然后将UUID形成的32位字符串转小写。
想着搜狗陌陌不至于做的如此傻吧?但还是试了试,没想到还真的通过了,而且恳求还比较稳定。
综上,处理办法是——在恳求搜狗陌陌时,生成一个名为SUV的Cookie,请求时加上即可。
UUID的生成方式网上有很多,这里不再赘言,注意除去字符串中的短横线!
祝你们好运!
参考博客: