原创来自本人的公众号:阿嚏个技术
公众号文章地址:
本文仅提供反爬技术的分析思路,勿做商业用途,如有侵权,请联系删除。
之前写过一篇爬得物数据的文章《
不过......
得物也是在不断进化的,很快接口的方式发生了变化,甚至有些接口已经失效。相信前一段时间跑API的朋友,会发现接口会经常返回401(请求直接被拒绝),485(请求需要验证码)的错。例如:
{"code":485,"data":{"challenge":"202c8c44a1226df446e1207519df6180","gt":"2acebf85e53151975f4a82b8a812ff02","newCaptcha":true,"resultCode":485,"serverStatus":1},"msg":"请校验验证码","status":485}
出现验证码的情况,手机APP人工操作也是会出现的,为了防爬得物还是牺牲了一些用户体验。
那么下面就是针对这种情况进行分析,给大家提供下思路,供大家参考。
先上图,下面是通过charles抓取得物小程序的图:
从蓝色标识的地方开始,向下的红箭头表示接口执行的顺序。
蓝色的地方表示收到了485状态的返回(图中下部的红框可以看到),然后调用了geetest的滑块验证功能,手工把滑块滑到正确的位置后,小程序向dewu的安全反爬接口发了2个请求,请求返回成功后又可以继续浏览相关界面。这就是这个验证码处理的过程,在上图中用黄色框分别标识了3个步骤。
那么解题思路来了,在我们碰到接口返回485的时候,我们是不是处理好geetest的验证即可?对的,我验证过了。
执行的结果如下,second request的请求就返回了正常的数据。
至于geetest如何实现处理,不在本文讨论之中,有兴趣的朋友自行在网上搜索下。
有兴趣的朋友可以搜微信公众号:阿嚏个技术,主要对自己的技术和产品做个记录。