作者
sergiojune
责编
郭芮
声明:以下内容仅交流学习,请勿用于非法用途。
如果你现在想模拟登陆知乎,会发现fromdata是一串加密的字符串:
看了之后是不是很痛苦?你是不是就想使用selenium来模拟登陆?不过好像知乎对selenium也进行了相应的反爬处理,哈哈。但是我不也想用selenium,效率太慢了,直接破解js才是我最喜欢挑战的。
好,我现在教你如何用js硬撸破解。废话不多说,直接进入正题。
找出signature加密
加密位置这个相对来说是比较难找的,需要自己对那些混淆过的js进行一遍又一遍的搜寻,有时候你看到头皮发麻也不一定找得到,再加上这个加密参数是一堆字符串,连个键都没有,搜索的条件都没有。这怎么办呢?我们可以去百度或者谷歌看看前人是怎么搞的。
你直接搜索知乎模拟登陆的话,会发现以前的知乎的fromdata是键值形式的,有以下键值对:
顺便也可以看看之前的破解思路,看到了上面的signature是通过加密来的,猜测知乎应该也是对之前的键值加密的fromdata进行加密的,在控制台搜搜signature看看有没有线索:
提示:按下ctrl+shift+f可出现搜索框
一搜,果然有,看了看,signature的加密过程和以前的还是一样的,证明我的猜想正确了,说明是通过之前的fromdata的键值对进行加密成的一堆字符串,现在就看看signature是如何加密的。
如果你对加密有点了解的话,还容易通过上面代码知道这是通过hmac加密,哈希算法是sha1,密钥为d1bafbaff74a12f4,加密数据有四个,为clientId、grantType、timestamp和source,这些值都可以在上面通过调试出来的,就不多说了。如下:
找出fromdata的完整键值对
在知道signature是如何加密的之后,我们还需要找出完整的fromdata先,不过在上面的调试中,你会发现也有几个fromdata值,但是不全。
这时候如果我们得继续搜索signature的话,找了一整天你都会发现不到什么线索,这时候我们可以通过登陆的url进行突破,看看url是哪个路径,然后一顿搜。
其登陆url是