爬虫逆向:websocket实战案例,全国建筑市场

1,这个response是加密的

2,找到解密位置

3,ctrl+A全部复制到本地

4,搜索JSON.parse找到在本地的解密位置

5,将这个自执行函数插进去

javascript 复制代码
!(function () {
    // 判断flag是否为true,如果为true则不重复创建ws对象
    if (window.flag) {
    } else {
        const websocket = new WebSocket('ws://127.0.0.1:8080')
        // 创建一个标记用来判断是否创建套接字
        window.flag = true;
        //  接收服务端发送的信息
        websocket.onmessage = function (event) {
            var data = event.data
            // 调用js解密
            var res = b(data)
            console.log(res)
            // 发送解密数据给服务端
            websocket.send(res)
        }
    }
}())

插入到如图所示的位置

6,替换文件

7,将源代码清空

8,将本地的代码注入

9,运行本地的代码

python 复制代码
import json
import asyncio
import requests
import websockets


def get_encrypt_data(page):
    headers = {
        "Accept": "application/json, text/plain, */*",
        "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
        "Connection": "keep-alive",
        "Referer": "https://jzsc.mohurd.gov.cn/data/company",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-origin",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0",
        "accessToken;": "",
        "sec-ch-ua": "\"Chromium\";v=\"142\", \"Microsoft Edge\";v=\"142\", \"Not_A Brand\";v=\"99\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "timeout": "30000",
        "v": "231012"
    }
    url = "https://jzsc.mohurd.gov.cn/APi/webApi/dataservice/query/comp/list"
    params = {
        "pg": "1",
        "page": page,
        "total": "450"
    }
    response = requests.get(url, headers=headers, params=params).text

    # print(response.text)
    return response


async def echo(websocket):
    for page in range(1, 5):
        encrypt_data = get_encrypt_data(page)
        await websocket.send(encrypt_data)


async def recv_msg(websocket):
    while True:
        recv_text = await websocket.recv()
        print(json.loads(recv_text))


async def main_logic(websocket):
    await echo(websocket)
    await recv_msg(websocket)


start_server = websockets.serve(main_logic, '127.0.0.1', 8080)
loop = asyncio.get_event_loop()  # 获取事件循环
loop.run_until_complete(start_server)  # 运行服务
loop.run_forever()  # 保持长连接

10,刷新网页后查看打印的结果(这个刷新网页的步骤不能省略)

相关推荐
wuyk5559 小时前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
SEO_juper13 小时前
你的服务器正在被 AI 爬虫“白嫖“带宽:2026 用日志把 Googlebot 和 AI 洪流分开算账(附脚本)
运维·人工智能·爬虫·python·chatgpt·seo
企业通信技术笔记13 小时前
企业IM内外网隔离部署:DNS、证书、WebSocket与跨网接口设计
websocket·网络协议·架构·php·信息与通信
流烟默15 小时前
HTTP 连接管理技术梳理:JDK KeepAliveCache 机制与池化选型
java·网络协议·http
Java小白笔记16 小时前
FlClash TUN 栈模式选择与验证指南
网络·网络协议
清水白石00816 小时前
ThreadPoolExecutor 线程越多越快?从 30ms HTTP 调用讲透并发数、连接池与背压
网络·网络协议·http
IT小白杨16 小时前
eBay多账号如何应对关联判定:主体、收款、IP、环境四层配置清单一次讲清
java·网络·网络协议·tcp/ip·自动化·指纹浏览器
隐擎fox18 小时前
网络传输安全剖析:WebRTC 本地真实 IP 泄漏机制(STUN/TURN)与 Python 防护检测实战
网络·网络协议·tcp/ip·安全·webrtc
为思念酝酿的痛18 小时前
应用层协议HTTP
网络·网络协议·http
薛之谦_20 小时前
国际SSL证书与国密SSL证书:专业视角下的全面解读
网络·网络协议·ssl