爬取全国建筑公司信息,普通的AES解密,但是有陷阱,基于响应器去确定位置。

目录

一、代码和具体结果展现

1.1python代码展现

1.2js代码展现 

1.3爬取结果展现

二、如何获取数据包和解析 

2.1抓包

2.2注意事项

2.3便捷方法

2.4详细步骤视频讲解链接


一、代码和具体结果展现

1.1python代码展现

import csv

import requests
import execjs
import json
import time

f = open('全国建筑公司信息.csv','w',encoding='utf-8',newline='')
csv_writer = csv.DictWriter(f,fieldnames=[
        '统一社会信用代码',
        '企业名称',
        '企业法定代表人',
        '企业注册属地',
        'COLLECT_TIME',
        'RN',
        'QY_ID',
        'OLD_CODE',
])
csv_writer.writeheader()
cookies = {
    'Hm_lvt_b1b4b9ea61b6f1627192160766a9c55c': '1710333577,1710398146',
    'Hm_lpvt_b1b4b9ea61b6f1627192160766a9c55c': '1710398146',
}

headers = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    # 'Cookie': 'Hm_lvt_b1b4b9ea61b6f1627192160766a9c55c=1710333577,1710398146; Hm_lpvt_b1b4b9ea61b6f1627192160766a9c55c=1710398146',
    '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/120.0.0.0 Safari/537.36',
    'accessToken': '',
    'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'timeout': '30000',
    'v': '231012',
}
for page in range(1,30):
    time.sleep(1)
    params = {
        'pg': page,
        'pgsz': '15',
        'total': '450',
    }

    response = requests.get(
        'https://jzsc.mohurd.gov.cn/APi/webApi/dataservice/query/comp/list',params=params,cookies=cookies, headers=headers,).text

    js_file = execjs.compile(open('爬取全国建筑公司信息.js','r',encoding='utf-8').read())
    json_data = json.loads(js_file.call('b',response))

    for index in json_data['data']['list']:
        dit = {
            '统一社会信用代码':index['QY_ORG_CODE'],
            '企业名称':index['QY_NAME'],
            '企业法定代表人':index['QY_FR_NAME'],
            '企业注册属地':index['QY_REGION_NAME'],
            'COLLECT_TIME':index['COLLECT_TIME'],
            'RN':index['RN'],
            'QY_ID':index['QY_ID'],
            'OLD_CODE':index['OLD_CODE'],

        }
        print(dit)
        csv_writer.writerow(dit)
    print(f'正在打印第{page}页数据---------------------------------------------------------------')

1.2js代码展现 

const CryptoJS = require('crypto-js');

var m = CryptoJS.enc.Utf8.parse("0123456789ABCDEF");
var f = CryptoJS.enc.Utf8.parse("Dt8j9wGw%6HbxfFn");

function b(t) {
    var e = CryptoJS.enc.Hex.parse(t)
        , n = CryptoJS.enc.Base64.stringify(e)
        , a = CryptoJS.AES.decrypt(n, f, {
        iv: m,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    })
        , r = a.toString(CryptoJS.enc.Utf8);
    return r.toString()
}

1.3爬取结果展现

二、如何获取数据包和解析 

2.1抓包

打开网页:全国建筑市场监管公共服务平台(四库一平台)

点击开发者工具-网络-XHR,刷新页面,可以获得一连串数据包,在预览处,发现结果位密文数据,因此需要解密。

2.2逆向实现:

点击一个包,查看启动器,点击第一个,进入js代码

按规律,一般在send处打上断点,然后点击下一页

在堆栈处,逐个往上检索,在有嫌疑的地方打上断点

跳转这个断点,发现密文

 然后点击跳过下一个函数调用(按多次),即第二个函数按钮

然后跳转到这里,打上断点,并释放其他断点,在网页上点击分页。

发现了明文数据,跳转到函数

在函数页面,复制函数,和必要的参数,发现其为标准AES解密算法,在js库中,用专门的库解密即可。

2.2注意事项

上面复制的f是错误的,在这个函数下面不远处,有真正的f

2.3便捷方法

在搜索框输入decrypt(即可快速跳转到该函数。

2.4详细步骤视频讲解链接

【Python爬取全国建筑公司信息,实现数据可视化-哔哩哔哩】 https://b23.tv/HTWhQaE

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习各种软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值