python爬虫--破解js加密:kankan登录破解

这一系列文章旨在解决python 爬虫过程中遇到的各种反爬,从简单到复制,是个进阶的过程。如果对你有帮助,欢迎关注。

今天要破解的网站是天天看看(http://www.kankan.com/)的登录,其中涉及post环节的data加密,以及cookies查找。

可以看到post表单中包含8个参数,p,n,verifycode,这3个是变化的。
搜索参数verifycode,可以定位到生成参数的js文件。

 

打断点后发现,r就是表单中的p,q就是表单中的n,z就是把表单中的verifycode转化成大写,e.password就是我们的原始密码,

l = 'AQAB'  ,通过查找并未发现q和z的生成位置,通过在网页中查找,发现表单中的q和verifycode 都是从一个url(https://ilogin.kankan.com/check/?u=18811112222&v=100)返回的set_cookies中: 

 

所以这两个值我们可以通过这个url来获得。

下面创建一个js文件,把我们找到的关键js放进去,构造一个函数,方便我们调用。

这时明显我们缺少了hex2b64这个函数,鼠标放上去后定位到这个函数在rsa.js文件中,一看名字就知道,这个加密用到的文件中的内容,全部复制到我们的js文件中。

最后,我们还缺少了md5函数,查找md5,发现是在md5.js文件中,同样复制到我们的js文件中来。

点击运行js文件后提示缺少window和navigator,构造下就行:

var navigator = navigator||{};
var window = window||{};

到目前为止,我们的js加密环节就算破解完成了,只需要传入q,z,pwd  三个参数就可以获取到最后加密后的r。

而通过url()可以轻松获得q和z,同时获取到cookies,这个cookies需要传到登录环节中,才能完成登录,建议使用session请求,就不用处理cookies问题了。

最后完善下py脚本就可以了。其中调用js的脚本如下:

def get_p(check_n,verifycode,password):
    with open('kankan.js', 'r', encoding='UTF-8') as f:
        js2 = f.read()
        ctx2 = execjs.compile(js2)
        p = ctx2.call("getpwd",check_n,verifycode,password)
        print(p)
    return p

完整脚本:可以点击查看GitHub

如果对你有所帮助,欢迎点个star支持。

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值