逆向解析爱企查搜索接口的技术实践

电子说

1.4w人已加入

描述

接口逆向思路

通过浏览器开发者工具捕获网络请求,分析https://aiqicha.baidu.com域下的/person/ashx/search请求,可发现以下关键参数:

 

params = {
    'ps': '10',          # 每页数量
    'p': '1',            # 页码
    'q': '科技公司',     # 搜索关键词
    '_': '1630000000000' # 时间戳
}
headers = {
    'Token': 'xxxxxx',   # 动态身份验证
    'Key': 'yyyyyy'      # 加密密钥
}
API

 

核心参数破解

Token生成机制
通过调试页面JS文件(如app.xxx.js)可定位getToken()函数,其核心逻辑为:

 

function genToken() {
    const t = Date.now();
    return md5(window.USERID + t.toString(16)).slice(0, 16)
}
API

 

Key参数溯源
在初始化接口/initData的响应中返回加密种子:

 

{
    "keySeed": "5f0d3c7b2a", 
    "expire": 3600
}
API

 

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('人工智能'))
API

 

数据返回结构

 

{
    "result": {
        "list": [
            {
                "name": "某科技有限公司",
                "pid": "12345678",
                "regCapital": "500万人民币",
                "status": "存续"
            }
        ],
        "totalPage": 42
    },
    "error_code": 0
}

 

注意事项

高频请求会触发反爬机制(IP限制/验证码)

USER_ID需通过登录态获取

实际使用需处理动态密钥过期逻辑

通过上述逆向工程方法,可构建稳定的数据采集通道。建议控制请求频率(≤5次/秒),并配合代理IP池使用以满足业务需求。


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐
  • API

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分