电子说
接口逆向思路
通过浏览器开发者工具捕获网络请求,分析https://aiqicha.baidu.com域下的/person/ashx/search请求,可发现以下关键参数:
params = {
'ps': '10', # 每页数量
'p': '1', # 页码
'q': '科技公司', # 搜索关键词
'_': '1630000000000' # 时间戳
}
headers = {
'Token': 'xxxxxx', # 动态身份验证
'Key': 'yyyyyy' # 加密密钥
}

核心参数破解
Token生成机制
通过调试页面JS文件(如app.xxx.js)可定位getToken()函数,其核心逻辑为:
function genToken() {
const t = Date.now();
return md5(window.USERID + t.toString(16)).slice(0, 16)
}

Key参数溯源
在初始化接口/initData的响应中返回加密种子:
{
"keySeed": "5f0d3c7b2a",
"expire": 3600
}

Python请求示例
import time
import hashlib
import requests
def get_aqc_data(keyword):
timestamp = int(time.time() * 1000)
token = hashlib.md5(f'{USER_ID}{timestamp:x}'.encode()).hexdigest()[:16]
response = requests.get(
url='https://aiqicha.baidu.com/person/ashx/search',
params={
'q': keyword,
'p': '1',
'ps': '10',
'_': timestamp
},
headers={'Token': token, 'Key': KEY_SEED}
)
return response.json()
# 示例调用
print(get_aqc_data('人工智能'))

数据返回结构
{
"result": {
"list": [
{
"name": "某科技有限公司",
"pid": "12345678",
"regCapital": "500万人民币",
"status": "存续"
}
],
"totalPage": 42
},
"error_code": 0
}
注意事项
高频请求会触发反爬机制(IP限制/验证码)
USER_ID需通过登录态获取
实际使用需处理动态密钥过期逻辑
通过上述逆向工程方法,可构建稳定的数据采集通道。建议控制请求频率(≤5次/秒),并配合代理IP池使用以满足业务需求。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !