加密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()
启动服务器
然后重新加载一下网站
你点的第几页,爬取的就是第几页,这个使用按键精灵点击下一页即可,也是挺快的,简单 一点