web逆向某省公共资源交易平台案例
声明:
该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关
一、找出需要加密的参数
1.js运行 atob(‘aHR0cHM6Ly95Z3AuZ2R6d2Z3Lmdvdi5jbi8jLzQ0L2p5Z2c=\n’) 拿到网址,F12打开调试工具,找到 search/v2/items 请求,鼠标右击请求找到Copy>Copy as cUrl(cmd)
2.打开网站:https://spidertools.cn/#/curl2Request,把拷贝好的curl转成python代码
3.新建 gdzy.py,把代码复制到该文件,运行该文件会发现请求成功,并且成功打印出数据
4.然后把代码中的cookie中全部注释,再运行文件,会发现数据依然可以请求成功,再把header中X-Dgi开头注释,再运行文件会发现请求失败
二、定位header加密位置
1.F12打开浏览器控制台,找到切换分页的元素,点击绿色位置进入js文件,并断点
2.切换分页会进入该断点,然后一直点击跳过当前函数执行或者按F10,直到出现X-Dgi-Req的字样,在控制台输出d,会发现X-Dgi-Req-App、X-Dgi-Req-Nonce、X-Dgi-Req-Timestamp已生成,而X-Dgi-Req-Signature是一个需要加密的对象
3.再一直点击跳过当前函数执行或者按F10,当遇到from函数停下,会发现参数是header,输出from转换后的header发现X-Dgi-Req-Signature已加密,再from代码行断点
4.结束此次断点,切换分页,点击跳过断点或者按F8,则会看到from断点,鼠标悬浮from上点击短链接找到该函数,并在函数内部断点
5.点击跳过断点或者按F8会进入刚才的断点,在控制台输出t instanceof this,会发现返回false,所以此时代码走的是new this(t),鼠标悬浮到new this点击短链接找到该对象会发现是个class对象,class对象初始化会进入constructor,而此class对象中constructor调用的是自己的set方法,在set方法内部断点
6.点击跳过断点或者按F8会进入刚才的断点,在该断点处一直看到X-Dgi-Req-Signature停止点击跳过断点
7.然后一直点击跳过当前函数执行或者按F10,走到Da函数时停下,控制台输出相关的值会发现,此时的X-Dgi-Req-Signature已重新赋值且已加密
8.至此加密heaer字段相关位置已找到,只要把相应的代码抠出来即,抠代码时没有什么特别注意的,除了时间戳都是固定的值直接扣下来就好,X-Dgi-Req-Signature加密时会用到请求参数
三、验证加密结果
1.加密文件
2.python文件,这里下载了1000条数据,没使用线程有点慢
3.下载后的xlsx