吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 915|回复: 15
收起左侧

[Python 原创] 国密获取数据思路(RPC、非扣代码)

  [复制链接]
wangsz20010 发表于 2024-7-24 09:21
本帖最后由 wangsz20010 于 2024-7-24 15:09 编辑

加密header:
1721782261500.jpg
加密parm:
1721782206661.jpg

如果逆向的话显然会非常的麻烦,但是数据要的有比较急,所以采用RPC的方式来进行获取
1.hook到明文位置
(function() {
    var parse = JSON.parse;
    JSON.parse = function(params) {
        console.log("Hook JSON.parse ——> ", params);
        debugger;
        return parse(params);
    }
})();

1721782607566.jpg
然后重新加载一下代码:
1721782654313.jpg
多走几次直到明文位置:

1721782738053.jpg
这就找到了,然后点击前面的那个栈找到对应的函数
1721782811100.jpg
这个就是返回的数据,你需要在这个前面进行输出这个i,输出到你能看到的地方
1721782877152.jpg
替换内容,选择你的本地目录进行替换内容
插入我的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);
                        }
                        }
                        }
                        )();

1721783695816.jpg
这样就可以了
打开我的服务端:
[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()

1721783876330.jpg
启动服务器
然后重新加载一下网站
1721784038297.jpg
你点的第几页,爬取的就是第几页,这个使用按键精灵点击下一页即可,也是挺快的,简单 一点

免费评分

参与人数 3吾爱币 +9 热心值 +2 收起 理由
wlq127 + 1 + 1 热心回复!
Carinx + 1 我很赞同!
侃遍天下无二人 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| wangsz20010 发表于 2024-7-24 09:26
第一次发帖诶,不知道怎么重新编辑了 有多的图 不知道咋办了

点评

要删除的话在附件里找到你的图片去掉就行  详情 回复 发表于 2024-7-24 09:59
侃遍天下无二人 发表于 2024-7-24 09:59
wangsz20010 发表于 2024-7-24 09:26
第一次发帖诶,不知道怎么重新编辑了 有多的图 不知道咋办了

要删除的话在附件里找到你的图片去掉就行
Xiaosesi 发表于 2024-7-24 10:15
这个是什么版本的呢,所有版本的都可以这样解嘛
KirinRT 发表于 2024-7-24 10:45
这个思路好啊

相比抓包解密,直接拿原始数据很直观,还可以直接套成脚本执行
Carinx 发表于 2024-7-24 11:18
思路很新奇哈哈哈
xuxiake 发表于 2024-7-24 11:43
看着很复杂呀,这个明文没有混淆,要是混淆后没这么方便吧
空竹 发表于 2024-7-24 12:54
JSHook也是一种取巧的办法
bdcpc 发表于 2024-7-24 14:36
没看明白什么意思
yoga2joker 发表于 2024-7-24 14:37
学习了,谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表