淘宝密码加密方式分析,及python实现
上回说到《分析淘宝登陆对selenium爬虫的封杀方案,反爬虫机制的升级》、《淘宝封杀selenium的ua算法分析》,对淘宝封杀Selenium的思路有了一个清晰认识,核心就是ua算法来鉴别是否为正常浏览器。
至于鉴别的思路可看更早的文章《selenium的封杀与突破,记录一次出师未捷身先死,淘宝、美团对爬虫的深入打击》,《Python爬虫中深不可测的ua参数,爬虫的身份证》。
在上回分析淘宝ua算法的js实现的时候《淘宝封杀selenium的ua算法分析》,虽然疏通了前后逻辑及其对应的js片段,本想硬刚的,奈何实力不允许,一段2000多行的自定义js函数,循环上万次的应用,这个还真不容易,正如下面网友评论,所以还得找其他方案。
image今天继续分析关键的post参数中的password,在看过ua的函数后,顿时觉得password函数是如此的亲密和熟悉。
image这个直接全局查找TPL_password_2关键词还不一定能找得到,聪明的阿里工程师们怎么会这么轻易的让你,看见真相。在搜索TPL_password_2关键词没有结果后就尝试搜了了搜其他关键词如RSA、encrypt,尤其是encrypt,还真找到了对应的加密js文件:
encrypt: function(a) { return a && this.pbk && this.exponent ? (this.rsa || (this.rsa = new e, this.rsa.setPublic(this.pbk, this.exponent)), a = this.rsa.encrypt(a)) : a }
其中this.exponent是RSA加密偏移量,值是10001、this.pbk是密钥其值是网页源码的一个元素值。
image image好吧,那RSA加密结果我们在印证一下,调试输入a的值
image对比post请求的a值:
image那就是一致的,应该是标准的RSA加密,至于python如何实现RSA加密,看加密全家桶文章《Python实现DES、DES3、AES、RSA、MD5、SHA、HMAC加密方式及示例》,很简单的。
针对ua参数,如果有更好的思路和方法可以留言探讨一下。
ID:Python之战
|作|者|公(zhong)号:python之战
专注Python,专注于网络爬虫、RPA的学习-践行-总结
喜欢研究技术瓶颈并分享,欢迎围观,共同学习。
独学而无友,则孤陋而寡闻!