知乎相信很多人都知道,里面的文章也是不错的,今天我们来做一下知乎的模拟登陆。
知乎改版后的加密和之前的差不多吧。。。都是老套路。。毕竟是小改版。
接下来我们开始研究知乎撒!!
我们打开知乎 https://www.zhihu.com/signin?next=%2F
随便输入账号密码。然后点击登录,抓包即可!!
知乎验证有验证码和字体颠倒验证!!
我们找到数据包,然后看form data参数。。。然后看到。。这特喵是的是个什么东西,没有参数名字,怎么搜索呢!!是不是一脸懵逼哈!!
懵逼中。。。。。。。。。。
这里我们先搜索 sign_in 。登录请求的url。。搜一下!!
然后看到body。
我们下个断点,看看这是什么鬼!!!
然后看到body数据如下:
研究发现 client_id 是固定的。
timestamp 是13位时间戳。
signature是js加密的。
其他均为正常参数。
那接下来我们研究一下signature是如何生成的!!
然后发现是不是都很熟悉撒!!!
我们打下断点调试!!!
是通过a.getHMAC('HEX'),形成的参数。
这里看到HMAC,那就可以确定这是HMAC加密,通过HEX加密,加密类型SHA-1,,这里全都有。。
多看看加密的名字,可以少走很多弯路!!
这里可以用python实现,也可以搜jsHMAC加密,,复制代码即可,,,,如果实在是闲的话。。。。可以扣他们的代码。也算是长长知识。。。
由上面的代码看到,update传入4个参数,e,x,"com.zhihu.web",n。。
都是之前的参数。。
这里还有一点,HMAC的key值,上面也有。固定的。
我们这里用js运行一下!!
可以看一下,,结果是不是和上面的结果一样呢!!!
这里推荐一款工具,wt-js。
里面有很多js加密的代码,可以直接使用,很方便的!!!
我们知道了所有参数了。接下来,我们找一下data参数,到底怎么形成的!
这里有一个简单的办法,不用断点调试,一步一步的找代码,找到加密的地方。
这里我们看到有一个参数zsEncrypt。这种东西一定要注意!!!
zsEncrypt为true。
那我们就搜索一下这个东西!!
在当前的js脚本当中搜索zsEncrypt
然后再这个地方下上断点。
看到a是不是很熟悉撒!!!
那我们就往下运行。。
这里找到了我们最终的生成地方了,
看下结果,是对的!!
通过 r.default函数,传入a参数,生成我们需要的data参数。
那我们就进入r.default函数中。
然后就是扣代码了。
这里我们把当前函数所在的一个大函数的代码全部抠出来。
然后把头部和尾部删掉!!
然后调试!!
然后发现exports未定义,
我们把这一段代码删除掉!!
然后运行!!
然后又是未定义,把相关的exports都删掉即可!!
我们传入参数接着运行!
得出结果!!
今天的分享到底结束了撒!!!谢谢大家观看!!!
本文分享自 python爬虫与js逆向 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!