本篇内容主要讲解“Python查询参数的加密逻辑是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python查询参数的加密逻辑是什么”吧!
在镇远等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计、成都外贸网站建设 网站设计制作按需定制设计,公司网站建设,企业网站建设,成都品牌网站建设,全网整合营销推广,成都外贸网站制作,镇远网站建设费用合理。
先上链接:
aHR0cHM6Ly93d3cucWljaGFtYW8uY29tLw==
找到要分析的参数,通过首页的检索栏,输入企业名称关键字点击查询就可以抓到类似下面的两个包。
上图标记出来的mfccode
就是需要分析的加密参数
同样的我留意到在上图选中的上一个请求,看着像加密的请求,接下来通过断点来分析是否为加密位置
在这个请求上打上XHR 断点
重新发起请求之后就能看到成功断上
通过分析堆栈找到下图这个位置找到了加密的位置
通过断点可以找到加密生成的地方
或者在堆栈的位置找到下图这个位置也可以快速定位到加密的位置
找到加密的位置后接下来就要分析加密的逻辑了,打上断点可以看到这里进入了一个VM
中
我们复制到美化网站中格式化后分析
在编辑器中可以大致看到这段代码对cookie
中的qznewsite.uid
字段进行了操作
最后将 dc
方法的结果返回给了window.__qzmcf
,这个和我在网页上断点的结果相对应
只要能跑通这段 js 就可以完成这段加密了。
经过修改可以正常运行了,主要解决的就是关于 node 中调用 window、document 的问题
但是将结果带入到 Python 代码里并没有如预期一样返回搜索结果,而是返回了登陆的界面,这个结果让我十分费解。
刚刚开始一直以为是我爬虫代码的问题,之后突然想到,这个 js 代码是由对方返回给客户端的,所以这个 js 代码应该动态的。
经过对比,发现mov
以及sk
的长数组都是动态的,或许还有其他的代码是动态的不过这间接的验证了我的猜测。
所以 js 加密的代码写死调用是没有办法完成破解的,想通这一点,我只要将返回回来的 js 代码动态的调用就可以了。
第一步、将 cookie 传入,替换为第一次访问首页返回的 cookie 即可,不过之后测试这一步貌似没有验证,直接写死也是可以的。
第二步、将服务端返回的动态调用,只要在静态的代码基础上小修一下就行了,例如声明window
,document
这些操作,之前的文章均有提及
第三步、调用window.__qzmcf
这个方法,完成加密参数的生成
完成上面的步骤之后重新调用就可以正确拿到网页的结果了。