搜狗微信反爬虫机制探讨及应对方法

      最近项目中,由于需要从微信公众号中获取一些文章内容,所以用到了搜狗微信。一旦搜索的次数稍微多一点,就会触发搜狗微信的反爬虫机制,最初是需要加上User-Agent请求头,后来是要求输入验证码,现在输入验证码之后,竟然偶尔还会报502,导致爬虫极不稳定。搜狗微信的反爬虫机制一直在更新,特别是最近的一次更新,更让人一时半会儿摸不着头脑,也是花费了好一会儿时间进行了突破。

      下面是对探索过程的记录。

       首先参考了以下博客:

       https://blog.csdn.net/weixin_33905756/article/details/86956972

       博主的探索过程,建议在他的博客中直接进行查看,这里我关注的是他说的关于Cookie的部分。

       博主认为请求时,SUIDSUVSNUID最为重要,我在谷歌浏览器中看到以下Cookie

       除了两个SUID和SUV这三个Cookie,我对Cookie进行了逐个剔除,并重新进行查询,发现其他Cookie都是可以自动生成的。而且不会报502,也不会触发验证码页面。

       由于Java中使用Connection.headers(Map<String, String> cookies)方法,会导致第一个SUID被第二个覆盖掉(虽然我当时确实添加了两个SUID),请求也是正常的,所以,我进一步提除了第一个SUID,发现刷新页面,也没有问题。

       红框之外的Cookie都会自动生成,也没有触发验证码。只有当我剔除SUV时,才会触发验证码机制,从而让输入验证码:

       所以,目前为止,需要带上的Cookie只有SUV!

那么,SUV这个Cookie如何获取呢?

        一般来说,通过请求搜狗微信网站,然后获取到Cookie,作为自己的Cookie使用,但是无疑会增加请求。当时同事有个大胆的想法,说试试能不能直接传一个32位字符串呢?也真是脑洞大开!这里很自然地就想到了UUID,然后将UUID产生的32位字符串转大写。

        想着搜狗微信不至于做的这么傻吧?但还是试了试,没想到还真的通过了,而且请求还比较稳定。

 

综上,处理办法是——在请求搜狗微信时,生成一个名为SUV的Cookie,请求时加上即可。

UUID的生成方法网上有很多,这里不再赘述,注意去掉字符串中的短横线!

祝大家好运!

 

参考博客:

https://blog.csdn.net/weixin_33905756/article/details/86956972

 

 

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值