xianyu-monitor
Installation
SKILL.md
Xianyu Monitor - 闲鱼智能监控机器人(AI 原生版)
AI 直接作为监控大脑,通过对话完成任务。支持登录状态绕过反爬。
核心设计
传统方案 vs AI 原生方案
传统方案:
用户 → Web UI → 数据库 → 爬虫 → OpenAI API → 通知
AI 原生方案(本 Skill):
用户对话 → AI → Python 脚本 → 爬虫(带登录状态)→ AI 分析 → 通知
关键:登录状态
闲鱼反爬很强,必须使用真实登录状态:
获取登录状态
方式1:Chrome 扩展(推荐)
- 安装原项目的 Chrome 扩展
- 登录闲鱼网页版
- 点击扩展提取登录状态
- 保存为
state.json
方式2:手动复制 Cookie
python scripts/create_state.py --cookie "your_cookie_string" --output state.json
Cookie 获取方法
- 浏览器登录 https://www.goofish.com
- F12 打开开发者工具 → Application/Storage → Cookies
- 复制关键 cookie(tb_token, cookie2 等)
- 用 create_state.py 生成 state.json
使用方法
1. 安装依赖
cd ~/.openclaw/workspace/skills/xianyu-monitor
pip install playwright requests
playwright install chromium
2. 创建监控任务
直接告诉我:
"帮我监控闲鱼的 iPhone 14 Pro,预算 5000 以内,登录状态文件在 ./state.json"
我会:
- 创建任务配置
- 调用 spider.py --state ./state.json 抓取
- 分析每个商品
- 好货立即通知你
3. 命令行直接使用
# 基础搜索(需要登录状态)
python scripts/spider.py \
--keyword "iPhone 14 Pro" \
--max-price 5000 \
--state ./state.json \
--pages 1
# 使用代理(推荐,降低被封风险)
python scripts/spider.py \
--keyword "MacBook Air" \
--max-price 6000 \
--state ./state.json \
--proxy "http://127.0.0.1:7890"
# 增加重试次数
python scripts/spider.py \
--keyword "iPad Pro" \
--state ./state.json \
--retries 5
4. AI 分析流程
1. 你提出需求
2. 我调用 spider.py 抓取(使用你的登录状态)
3. 我查看返回的 JSON 商品数据
4. 我分析判断:价格是否合理、卖家是否可信、商品是否值得买
5. 好货 → 立即推送通知
技术实现
爬虫模块 (scripts/spider.py)
关键特性:
- 加载登录状态文件(
--state参数) - 随机 UA 和视口(模拟多种设备)
- 请求频率限制(5-10秒随机间隔)
- 智能重试机制(指数退避)
- 代理支持(
--proxy参数) - Canvas 指纹混淆(反检测)
- 拦截 API 响应(不是解析 HTML)
示例输出:
{
"keyword": "iPhone 14 Pro",
"count": 15,
"items": [
{
"id": "123456789",
"title": "iPhone 14 Pro 256G 暗紫色",
"price": 4800,
"url": "https://www.goofish.com/item/123456789",
"image": "...",
"location": "上海",
"seller": {
"name": "数码玩家",
"id": "user_xxx"
},
"raw_data": { ... }
}
]
}
登录状态格式
state.json:
{
"cookies": [
{
"name": "_tb_token_",
"value": "xxx",
"domain": ".goofish.com",
"path": "/"
}
],
"origins": []
}
工作流程示例
用户: 帮我找 MacBook Air M2,预算 6000 以内,登录状态在 ./my_state.json
AI:
好的,已创建监控任务:
- 关键词:MacBook Air M2
- 预算:≤6000元
- 登录状态:./my_state.json
正在抓取...(使用你的登录状态)
[等待 10-30 秒]
AI:
✅ 抓取完成!发现 12 个商品
正在分析...
❌ 商品1 - ¥5800 卖家:商家(有大量同类商品) 风险:疑似翻新机,不推荐
✅ 商品2 - ¥5900 ⭐推荐 卖家:个人用户(信用极好) 描述:自用一手,电池 95%,箱说全 判断:价格合理,卖家可信 [链接]
❌ 商品3 - ¥5500 卖家:新注册账号 风险:账号可疑,建议谨慎
找到 1 个好货!已推送通知。
定时监控(自动检测)
除了手动查询,还可以设置定时任务自动监控。
使用 OpenClaw Cron
推荐方式:利用 OpenClaw 内置的定时任务系统。
设置定时任务
# 每2小时检查一次
openclaw cron add \
--name "xianyu-surface-monitor" \
--schedule "every 2h" \
--command "监控 Surface Laptop Studio 2,预算6000元,登录状态在 ./state.json,发现新商品立即通知"
# 每天上午9点和晚上9点检查
openclaw cron add \
--name "xianyu-iphone-monitor" \
--schedule "0 9,21 * * *" \
--command "检查 iPhone 15 Pro 的新商品,预算5000-7000"
常用 Cron 表达式
| 频率 | 表达式 |
|---|---|
| 每30分钟 | */30 * * * * |
| 每2小时 | 0 */2 * * * |
| 每天早9点 | 0 9 * * * |
| 每周一9点 | 0 9 * * 1 |
管理定时任务
# 查看所有任务
openclaw cron list
# 暂停任务
openclaw cron pause xianyu-surface-monitor
# 恢复任务
openclaw cron resume xianyu-surface-monitor
# 删除任务
openclaw cron remove xianyu-surface-monitor
定时任务执行流程
Cron触发 → 唤醒AI → 调用spider.py抓取 → AI分析 → 有新好货则推送通知
建议频率
- 热门商品:每1-2小时(如 iPhone、MacBook)
- 普通商品:每4-6小时
- 稀有商品:每天1-2次即可
⚠️ 注意:过于频繁的抓取可能导致登录状态被风控,建议最短间隔30分钟。
反反爬配置
已实现的反检测措施
本 Skill 已内置多层反反爬机制:
| 措施 | 说明 |
|---|---|
| 随机 UA | 每次请求随机选择 5 种真实设备 UA |
| 随机视口 | 模拟不同手机屏幕尺寸 |
| 请求间隔 | 5-10 秒随机延迟,模拟人类行为 |
| Canvas 混淆 | 添加随机噪声,防止指纹识别 |
| 重试机制 | 失败时指数退避重试(5s, 10s, 15s) |
| 代理支持 | 支持 HTTP/HTTPS/SOCKS5 代理 |
使用代理(强烈推荐)
如果已被风控,建议使用代理:
# Clash/V2Ray 本地代理
python scripts/spider.py --proxy "http://127.0.0.1:7890"
# 私密代理
python scripts/spider.py --proxy "http://user:pass@proxy.example.com:8080"
# SOCKS5 代理
python scripts/spider.py --proxy "socks5://127.0.0.1:1080"
推荐代理服务商:
- 快代理、站大爷、阿布云(国内)
- Bright Data、Oxylabs(国际)
风控规避建议
- 降低频率:每次抓取间隔至少 5 分钟
- 使用代理:每次请求更换 IP
- 分散时间:不要集中在同一时间段抓取
- 更新登录状态:定期刷新 state.json
- 减少关键词:每次只搜索 1-2 个关键词
被封后处理
如果触发风控(返回空结果或验证码):
- 暂停 24 小时 - 让账号冷却
- 更换 IP - 使用代理或更换网络
- 重新登录 - 用 Chrome 扩展重新提取 state.json
- 降低频率 - 延长抓取间隔到 30 分钟以上
注意事项
- 登录状态会过期 - 通常几天到几周,过期后需要重新获取
- Cookie 隐私 - 登录状态文件包含敏感信息,不要分享给他人
- 请求频率 - 不要过于频繁抓取,避免触发风控
- IP 限制 - 如果频繁抓取,可能需要使用代理
文件结构
xianyu-monitor/
├── SKILL.md # 使用说明
├── scripts/
│ ├── spider.py # 爬虫(需登录状态)
│ ├── task_manager.py # 任务管理
│ ├── create_state.py # 创建登录状态文件
│ └── state_example.json # 登录状态示例
├── state.json # 你的登录状态(由Chrome扩展生成)
├── tasks.json # 监控任务列表
└── references/
└── ...
注意:本 Skill 是独立完整的,不依赖 ai-goofish-monitor 目录(那是原项目备份,可删除)。
与原项目的区别
| 特性 | 原项目 | 本 Skill |
|---|---|---|
| Web UI | ✅ 有 | ❌ 无 |
| 数据库 | ✅ 有 | ❌ 无 |
| 部署复杂度 | 高 | 极简 |
| AI 角色 | 外部 API | 直接控制 |
| 交互方式 | 网页 | 文本对话 |
| 定时监控 | ✅ APScheduler | ✅ OpenClaw Cron |
| 登录状态 | ✅ 支持 | ✅ 支持 |
| 反爬策略 | API 拦截 | API 拦截 |