11期_js逆向核心案例解析(sichuan某理财网)
JS模块
定位
方式一:搜索signature:或者signature=即可定位!我们这里用后者搜索到!
方式二:通过请求堆栈找signature没有生成的时候,断点搜url找到send的地方!然后找拦截器!
url搜索
找到拦截器
定位Promise.then的时候,我们调试要注意异步的问题,异步的话堆栈的箭头下不去的!需要重新定位后打断点!
我们打断点之后就打印p数组,找到请求函数即可!
最后和我们刚刚第一种方式的定位是一样的!
python中的import as。。。就是导出名字叫什么什么
这个文件的x,从上个导入文件来说就是Z
然后我们找到上一个文件叫 He as Z 但是我们还有个问题是He搜了全局有1000多个,所以我们直接将整个文件复制粘贴得了
python调用
区分payload所传参数的处理!
注意:payload有两种的,一种post请求payload给的object对象。另一种就是json处理成form表单。而如下就是object对象!
如下:""" POST path HTTP/1.1 请求头 contentType:form pageNum=1&pageSize=10&a=1&b=2 """""" POST path HTTP/1.1 请求头 contentType:json {"pageNum":1,"pageSize":10} """看到前面抓包的parameter:xxx是键值对的格式,所以header里面的content-type就是application;json
总结:看目标的包用的什么格式就用什么格式!
data={'orgName':'','prodName':'','prodRegCode':'','pageNum':2,'pageSize':20,'prodStatus':'','prodSpclAttr':'','prodInvestNature':'','prodOperateMode':'','prodRiskLevel':'','prodTermCode':'','actDaysStart':None,'actDaysEnd':None,}response=requests.post('https://xinxipilu.chinawealth.com.cn/lcxp-platService/product/getProductList',cookies=cookies,headers=headers,# params: GET请求的查询数据# data=data, # data默认将字典处理成form表单的字符串格式(a=1&b=2)# json=data, # json=data是将字典处理成json字符串格式({"a":1,"b":2})data=json.dumps(data,separators=(",",":")))json.dumps处理方案:
data = json.dumps(data),这样的话只会将json处理成字符串,而不是json数据,输出类似如下格式
‘{“a”: 1, “b”: 2}’
但是问题是逗号,和冒号:后面都是有空格的!所以要用separator属性后面那样写!详解如下,可自行测试一下
案例
importjson data={"a":1,"b":2}# print(len(json.dumps(data)))# '{"a": 1, "b": 2}'# '{"a":1,"b":2}'print(json.dumps(data,separators=(",",":")))之所以不写json = data就是因为他会默认处理成json.dumps(data),但这样就处理不了空格,所以我们如下data = json.dumps(data,separator=(“,”,“:”))
