百度联盟API已彻底下线,PHP无法调用;唯一可行方案是手动导出CSV报表并用PHP解析,需处理GBK编码、金额逗号及动态表头。

百度联盟 API 已下线,PHP 无法直接调用
百度联盟官方在 2023 年底已正式关闭全部开放 API 接口,包括 getEarnings、getReportData、getSiteList 等所有接口均返回 404 或 {"error_code":1001,"reason":"API not found"}。这不是鉴权或签名问题,是服务端彻底移除——任何 PHP SDK、cURL 封装、OAuth 流程都无效。
替代方案只有两种:手动导出 + 解析 CSV,或模拟登录爬取(不推荐)
目前唯一可行的数据获取路径是人工从百度联盟后台导出报表,再用 PHP 读取分析。自动拉取仅剩“模拟浏览器行为”一条路,但风险高、维护难、易被封账号。
- 手动导出适用于月度结算核对:登录 https://www.php.cn/link/089dd30eda093ec9415c24ce6da94b33 →「数据报表」→ 选择日期 → 导出为
csv→ 用 PHP 的fgetcsv()解析 - 模拟登录需处理验证码、JWT token 刷新、Referer 校验,且百度联盟前端已加 JS 指纹检测,
file_get_contents()和基础cURL基本失效 - 第三方代理工具(如 Puppeteer + PHP bridge)理论上可行,但违反百度联盟《用户协议》第 4.2 条“禁止自动化访问”,账号可能被冻结
如果坚持用 PHP 解析导出的 CSV 报表
导出文件字段不稳定(有时含“展示量”“点击量”,有时只有“收入”“千次展现收益”),需动态识别表头。别硬写固定索引,否则下周更新就崩。
- 用
fopen()+fgetcsv()逐行读,第一行用array_map('trim', $header)清理空格 - 关键字段名可能为中文:
"日期"、"广告位名称"、"收入(元)",注意编码:文件是GBK,不是 UTF-8,iconv("GBK", "UTF-8", $str)必须加 - 金额字段含逗号(如
"1,234.56"),直接floatval()会截断,先str_replace(',', '', $val) - 示例片段:
$fp = fopen('report.csv', 'r'); $header = fgetcsv($fp); while ($row = fgetcsv($fp)) { $data = array_combine($header, $row); $income = (float)str_replace(',', '', iconv('GBK', 'UTF-8', $data['收入(元)'])); }
为什么没有“百度联盟 PHP SDK”或 Composer 包
因为官方从未发布过正式 SDK,社区零星封装(如 baijia/baidu-union-sdk)全基于旧 API,现在 composer require 装完也跑不通。GitHub 上多数仓库已归档,最后提交在 2022 年前。
立即学习“PHP免费学习笔记(深入)”;
- 所有自称“支持新版”的包,实际只是把错误响应包装成 Exception,没解决根本问题
- 如果你看到文档里还有
BaiduUnionClient::init($ak, $sk),说明它压根没适配下线事实 - 别浪费时间 debug 签名算法——
sha256、base64、nonce全对也没用,请求发不到后端











