关于-淘宝小二滑块-反爬虫的思考

研究淘宝爬虫有段时间了,一直以来以puppeteer这个框架来做,期间遇到反爬的主要手段是『小二滑动』,也是因为这个滑动,我把自己的路越走越窄,以至于最后走入死胡同。

(请忽略图中的中文乱码)

如果淘宝检查到爬虫,这个滑动块是过不了的。会提示『出错了』

我在研究小二滑动,一共经历了4个阶段:

  • 第一次用puppeteer能无压力爬取淘宝,即使淘小二滑动也能过,于是开始完善后端配套代码。

  • 等一个月后,后面配套代码写得差不多了,再回头来测试,发现小二滑动有50%的概率过不了。

    我发现很可能是我滑动轨迹的问题,终于写出了布朗运动轨迹的代码来随机滑动小二滑块,完美95%通过率。

  • 期间切换到其他项目,过了小半个月,再回来测试时,只剩下40%通过率,继续研究,可能是滑动轨迹还不太完美被发现了,于是开始写代码,录制正常人操作的轨迹数据,形成自己的轨迹库,然后每次滑动的时候再随时调用数据,这时的轨迹是最贴近人工的。当一切都完成之后,成功率95%我觉得我已经算是成功了攻克

  • 但我还是太年轻,一个月后,再次成功率超低。于是我陷入深思,觉得可能是puppeteer已经从底层被淘宝研究透了,于是换另外一个框架electron,这是一个用chrome引擎webview的做桌面应用的框架 ,这大概不会被识别为爬虫了吧,但当我开启后发现,还是有一段概率会完全无法通过小二滑动。

阶段性总结:
  1. 小二滑动是动态的,会根据淘宝实时的后台负载来动态调整小二滑动的阈值,所以有时能通过有时无法通过。
  2. chrome为核心的浏览器已经是无能为力了(至少对于我来说是)

按道理这个时候差不多已经该放弃了,因为前后经过近5个月的折腾了,期间还学习并研究淘宝手机Android App的反编译,并且研究了如何用xposed反射调用,最后配置Rails的action cable实时连接手机,在手机上做了一获取账户session的xposed插件(之后有机会会在github上公开源码)。

但是还是很好奇为有没有其途径可以突破…..

这里想到了Android手机上的webview

于是开始写代码,开发简单的Android Demo,用Webview打开手机淘宝,并且Demo中连接第三方http代理,可以随时切换大陆的登录ip,这里再测试,果然成功率100%,连续3天,我想这时应该是成功了。

已经知道怎么做了,但我已经暂时没有继续前行的打算了,因为项目有变数。所以这里做个记录。