安居客滑动破解

  • 2018-10-06
  • 3,674
  • 16
  • 18

编写日期 2018-10-06

请勿用于非法用途


安居客的反爬页面为这个
https://www.anjuke.com/captcha-verify/?callback=shield&from=antispam

第一步 日常找入口

sessionId 存在于网页内, responseId 则是从

https://verifycode.58.com/captcha/getV3?callback=jQuery1910793616819186288_1538833002980&showType=embed&sessionId=d1cfd44eca6b4a2f9940ea8af414836d&_=1538833002981

这一步获取的

data 为 AES 加密

第二步 拆分加密

我们找到AES 加密是这一块 原数据为

{
    "x": "126", 
    "track": "23,34,0|24,33,41|26,33,50|34,32,65|47,31,81|63,31,99|84,31,116|121,31,132|145,31,150|166,33,165|185,35,181|201,36,200|216,38,216|228,40,232|235,41,249|241,41,265|249,43,282|256,43,300|260,43,315|266,44,333|271,45,352|273,47,367|274,47,382|275,47,408|274,47,596|272,47,604|270,47,616|267,48,633|265,48,649|260,48,668|251,48,684|240,48,699|227,48,716|210,49,733|201,49,750|193,50,765|189,50,783|188,51,799|185,51,815|183,51,982|180,51,999|177,51,1018|177,51,1033|175,51,1061|173,51,1088|172,51,1101|161,51,1117|158,51,1134|155,51,1150|153,50,1167|150,50,1183|149,50,1199|149,50,1217|149,50,1472|", 
    "p": "0,0", 
    "finger": "QOwj/ycQ413zOqrj7RGPPKg9gEwg3NX9YEoIDvfo3GrCYzgkCEUS77EzwxnnUmayin35brBb//eSODvMgkQULA=="
}

其中 track 和 x 一目了然 分别是 x坐标 和 轨迹:

x,y,经过的时间

那么接下来的问题就是finger 这个小东西了 看起来有点像指纹 (并不

第三步 找出finger

(才不会在一开始就告诉你们是) https://cdata.58.com/fpToken?callback=dpjsonp_017597508371879544

好的 嗯 就当我们没看到上面那句话

finger的来源是

由此定位到

那么这是一个函数的回调

然后找到

这个函数

这时候 MessageEvent出现了 堆栈也没有信息

找到了可爱的origin

得出 token 来自

也就是finger了

至此 安居客解析完成


点我打开 Py + JS Demo

Star

评论

  • xiaoming回复

    冷月大佬,我安居客模拟出滑动轨迹,滑动完之后又出现了点击汉字的验证码,好像识别出了我是selenium模拟的,而且你这个执行jiami.js的总是出现校验失败,估计数据老了,求解答 💡

    • lengyue回复

      估计是更新了

  • lengyue回复

    这个是JSON的… 原则上不影响

  • lanqing回复

    你的github代码里面加密数据那一块有个小错误
    var encryptData = {
    “x”: coordinateX + “”,
    “track”: traceData,
    “p”: “0,0”,
    “finger”: fpToken
    };
    将这个序列化的时候 x在trace前面哦,你写反了,会导致加密的数据不对哦

  • 回复

    冷月姐姐,可以建一个群吗,让学习的朋友大家互相交流下,你肯定也没有那么多精力一个个解答

    • lengyue回复

      刚刚建群了 932648536

  • martin回复

    一般怎么计算路径啊。。我算出来的路径总是通不过=。=。
    用selunium路径也通不过ooooo

    • lengyue回复

      你等调整到selenium能通过了 再来试试js(−_−#)

      • martin回复

        百度了好多算法。。试了一天。还是过不去=。=难受啊。大神有没有能让我参考一下的 😮 😒 。。这网站好像还直接封了阿里云的ip!!直接浏览器都不让我访问。。。

        • lengyue回复

          我看心情把算法发出来吧 不过你要先确定你的坐标没错哦

          • martin回复

            好嘞!!!坐标肯定没算错的,因为我是看着浏览器滑的,然后滑到那个位置后,又跳出来一个点选验证。。 😀 😀

  • 欧阳逸云回复

    首先非常感谢您的分享,但其实我想知道 track 这字段的值如何得到?

    • lengyue回复

      拟合人手的轨迹算法哦

      • 欧阳逸云回复

        看来需要机器学习一个了

        • lengyue回复

          这个用不着机器学习啦..