本帖最后由 wangsz20010 于 2024-7-24 15:09 编辑
加密header:
加密parm:
如果逆向的话显然会非常的麻烦,但是数据要的有比较急,所以采用RPC的方式来进行获取
1.hook到明文位置
(function() {
var parse = JSON.parse;
JSON.parse = function(params) {
console.log("Hook JSON.parse ——> ", params);
debugger;
return parse(params);
}
})();
然后重新加载一下代码:
多走几次直到明文位置:
这就找到了,然后点击前面的那个栈找到对应的函数
这个就是返回的数据,你需要在这个前面进行输出这个i,输出到你能看到的地方
替换内容,选择你的本地目录进行替换内容
插入我的RPC:
[JavaScript] 纯文本查看 复制代码 (function() {
var ws = new WebSocket("ws://127.0.0.1:8080")
ws.onmessage = function(evt) {
console.log("收到消息:" + evt.data);
if (evt.data == "exit") {
wx.close();
} else {
ws.send(i);
console.log(i);
}
}
}
)();
这样就可以了
打开我的服务端:
[Python] 纯文本查看 复制代码 import asyncio
import json
import websockets
# from crawl_par import receive_message2
number = 0
records = []
import pandas as pd
def count():
global number
number += 1
print(f'第{number}页')
return number
async def receive_message(websocket):
global number, records
all_data = []
await websocket.send("ss")
response_text = await websocket.recv()
response_text = json.loads(response_text)
for item in response_text['list']:
record = {
'medinsTypeName': item.get('medinsTypeName', ''),
'medinsLvName': item.get('medinsLvName', ''),
'medinsName': item.get('medinsName', ''),
'addr': item.get('addr', ''),
'所属地': '四川省'
}
records.append(record)
# print(all_data)
number = count()
if number == 257:
# 输出到 Excel
df = pd.DataFrame(records)
# df['序号'] = range(1, len(records) + 1)
df.to_excel(f'output_province/四川省.xlsx', index=False)
print("数据已成功导出到output.xlsx")
start_server = websockets.serve(receive_message, "127.0.0.1", 8080)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
启动服务器
然后重新加载一下网站
你点的第几页,爬取的就是第几页,这个使用按键精灵点击下一页即可,也是挺快的,简单 一点 |