电子说
把「二手商品详情」搬进 Excel 的零登录方案
关键词:PHP、闲鱼、爬虫、商品详情、代码示例、合规、CSV/Excel
适合:运营、学生、羊毛党、一切「不会 Python 但会用 Excel」的同学
一、为什么写这篇「软」文?
老板要「闲鱼竞品均价」——人工滑屏 300 条,眼花了
学 Java/Python 成本高——PHP 开箱即用,虚拟主机就能跑
封号吓破胆——只爬「游客可见」字段,零登录,零滑块
今天带你走「公开接口 + PHP 原生」阳关道:
单文件 60 行,虚拟主机可部署,CSV 导出直接透视图!
二、技术选型:为什么选「公开游客接口」

结论:只采「游客可见」信息——标题、价格、所在地、浏览量、想要数,不碰聊天记录,才能长期安稳。
三、5 分钟环境:一条命令全装好
bash
# 任意 PHP≥7.2 即可 # 依赖:零!原生 curl + json + fopen 足够
虚拟主机、宝塔、XAMPP、WAMP 通杀,连 Composer 都不用。
四、核心思路:两步拿到商品 JSON
搜索页→拿 itemId(正则即可)
详情页→/json.htm→结构化数据
示例 URL(官方公开,无需 Cookie):
https://g-acs.m.goofish.com/h5/mtop.taobao.idle.awesome.itemdetail/1.0/?data={"itemId":"776721774669"}
返回片段:
JSON
{"data":{"components":{"itemInfo":{"title":"佳能 AE-1 胶片机","price":"1180","location":"杭州","viewCount":"1283","wantCnt":"23"}}}}
五、60 行完整源码:搜索 + 详情 + CSV 一条龙
保存为 xianyu.php,命令行 php xianyu.php 即可跑:
php
#!/usr/bin/env php
< ?php
/* 闲鱼公开接口爬虫 - 零依赖版 */
$key = $argv[1] ?? readline("请输入关键词:");
$maxPage = (int)($argv[2] ?? 3); // 先跑3页约60条
$csvFile = "闲鱼_{$key}_".date('Ymd').".csv";
$fp = fopen($csvFile, 'w');
fputcsv($fp, ['itemId', 'title', 'price', 'location', 'want', 'view', 'updated']);
$searchUrl = "https://s.goofish.com/h5/searchPub/data?query=%s&page=%s&pageSize=20";
$detailUrl = "https://g-acs.m.goofish.com/h5/mtop.taobao.idle.awesome.itemdetail/1.0/?data=%s";
$userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X)';
for ($page = 1; $page <= $maxPage; $page++) {
// ① 搜索页
$searchJson = http_get(sprintf($searchUrl, urlencode($key), $page), $userAgent);
$list = json_decode($searchJson, true)['data']['listItem'] ?? [];
if (!$list) break;
foreach ($list as $it) {
$itemId = $it['itemId'] ?? '';
if (!$itemId) continue;
// ② 详情页
$detailJson = http_get(sprintf($detailUrl, urlencode(json_encode(['itemId' = > $itemId]))), $userAgent);
$info = json_decode($detailJson, true)['data']['components']['itemInfo'] ?? [];
if (!$info) continue;
// ③ 写入CSV
fputcsv($fp, [
$itemId,
$info['title'] ?? '',
(float)str_replace(',', '', $info['price'] ?? '0'),
$info['location'] ?? '',
(int)($info['wantCnt'] ?? 0),
(int)($info['viewCount'] ?? 0),
date('Y-m-d H:i:s')
]);
usleep(200000); // 0.2s 礼貌限速
}
echo "Page {$page} 完成n";
}
fclose($fp);
echo "共导出 " . (count(file($csvFile)) - 1) . " 条 → {$csvFile}n";
/* -------------- 原生 http_get -------------- */
function http_get($url, $ua) {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER = > true,
CURLOPT_HTTPHEADER = > ["User-Agent: $ua"],
CURLOPT_TIMEOUT = > 15,
CURLOPT_FOLLOWLOCATION = > true,
CURLOPT_SSL_VERIFYPEER = > false,
]);
$resp = curl_exec($ch);
curl_close($ch);
return $resp ?: throw new Exception("CURL失败");
}
? >
运行截图:
$ php xianyu.php "佳能AE-1" 3 Page 1 完成 Page 2 完成 Page 3 完成 共导出 60 条 → 闲鱼_佳能AE-1_20250929.csv
Excel 打开 → 透视图 → 均价/区域热度一目了然。
六、提速 & 稳速:并发 + 重试 + 礼貌策略

进阶:一行命令装Guzzle:composer require guzzlehttp/guzzle,把http_get换成GuzzleClient,即可HTTP2+连接池。
七、三行代码看行情(Excel透视)
均价 =AVERAGE(C:C)
最低地区透视图 → 低价收货
浏览/想要比 → 判断“真假热销”
八、常见问题(FAQ)
403怎么办?→把usleep调到0.5s,或加Accept-Language
想要图文详情?→游客接口无图,需登录版(高风险,本文不展开)
一天能采多少?→单IP1w次+无封号;分布式再+代理
能商用吗?→只采“游客可见”字段,无明文禁止;对外展示请脱敏itemId后三位
九、把脚本升级成“副业现金流”

已有读者把“闲鱼行情”做成星球,200会员×50元=月入1w
十、合规再提醒:只挖公开矿,不碰隐私矿
不登录、不破解、不存储聊天记录
不公开卖家手机号、地址、真实昵称
对外展示脱敏itemId,避免黄牛精准狙击
商用前阅读《闲鱼用户协议》,必要时咨询法律顾问
十一、结语:让技术“温柔”地赚钱
今天这篇软文,没有对抗、没有炫技,只有:
公开接口→低风险
60行代码→可复制
CSV输出→能落地
把脚本丢给cron,每天一杯咖啡的时间,就能生成一份“二手行情报告”。
当别人还在手动滑屏,你已经用PHP把闲鱼变成了“躺赚”的副业提款机。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !