本系统实现两套省级政府采购平台的招标公告全自动采集:
福建省平台(ggzyfw.fj.gov.cn):MD5 请求签名破解 + AES-CBC 响应解密
广东省平台(ygp.gdzwfw.gov.cn):双源 API 架构(门户列表+源平台详情)
总计采集 2000+ 条公告,每条包含项目名称、招标编号、招标人、招标代理、
合同估算价、投标/开标截止时间、公告正文全文等完整结构化字段。
可用于招投标信息整合、竞争对手分析、供应链情报等商业场景。
── 福建平台 ──
- 逆向分析前端 JS bundle,提取 MD5 签名密钥和 AES 密钥/IV
- 实现参数排序拼接 → MD5(固定密钥+排序参数串) 生成 portal-sign 请求头
- AES-CBC 模式解密 API 返回的加密 JSON 数据体,还原真实数据
- 分页批量拉取公告列表 → 逐条请求详情(Info)→ 逐条请求正文(Content)
- 每个节点类型使用不同 API 端点,递归遍历 Nodes 树获取完整公告文本
- HTML → 纯文本清洗(去除标签、实体转义、空白规范化)
- 结构化输出 TXT(含项目名称/地区/平台/发布/截止/开标时间/全文)
── 广东平台 ──
- 门户列表 API:POST json 请求,携带 X-Dgi-Req-Nonce(16位随机) +
X-Dgi-Req-Timestamp(毫秒级时间戳) 绕过基础反爬
- 限流处理:检测 HTTP 429 自动等待 15s 重试,3 次限流后停止
- 源平台详情 API(gdgpo.czt.gd.gov.cn):通过 projectCode 关联查询
正文内容(两阶段:先查 info 列表获取 ID,再按 ID 获取详情)
- ThreadPoolExecutor(3线程) 并发拉取详情内容,带 0.5s 间隔
- 智能 HTML 清洗:去除 script/style 标签、处理 Word 文档的磅值/样式标签
外语标记(EN-US/ZH-CN)等噪音
- 输出 JSON + TXT 双格式,JSON 含完整结构化字段,TXT 含全文排版