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支持。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,394评论 1 45
  • 看到一个网站的登录环节做了密码的加密,尝试着做了破解,权当对js破解的一个练习。 网站:http://www.ha...
    西门大盗阅读 5,420评论 0 1
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 7,408评论 0 7
  • 之前的项目中接触过一些加密的方法,也没有太仔细的进行记录和研究。最近在写SDK时,加密模块的占比相当之大;借此时机...
    过半_e764阅读 3,841评论 0 0
  • 对于初级吃货来说,吃不饱饭——蓝瘦 对于中级吃货来说,没有钟爱事物下肚——香菇 而对于高级吃货来说,尝不到鲜——那...
    币圈老王阅读 2,795评论 0 0

友情链接更多精彩内容