xianyu-monitor

Installation
SKILL.md

Xianyu Monitor - 闲鱼智能监控机器人(AI 原生版)

AI 直接作为监控大脑,通过对话完成任务。支持登录状态绕过反爬。

核心设计

传统方案 vs AI 原生方案

传统方案:

用户 → Web UI → 数据库 → 爬虫 → OpenAI API → 通知

AI 原生方案(本 Skill):

用户对话 → AI → Python 脚本 → 爬虫(带登录状态)→ AI 分析 → 通知

关键:登录状态

闲鱼反爬很强,必须使用真实登录状态

获取登录状态

方式1:Chrome 扩展(推荐)

  1. 安装原项目的 Chrome 扩展
  2. 登录闲鱼网页版
  3. 点击扩展提取登录状态
  4. 保存为 state.json

方式2:手动复制 Cookie

python scripts/create_state.py --cookie "your_cookie_string" --output state.json

Cookie 获取方法

  1. 浏览器登录 https://www.goofish.com
  2. F12 打开开发者工具 → Application/Storage → Cookies
  3. 复制关键 cookie(tb_token, cookie2 等)
  4. 用 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"

我会:

  1. 创建任务配置
  2. 调用 spider.py --state ./state.json 抓取
  3. 分析每个商品
  4. 好货立即通知你

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(国际)

风控规避建议

  1. 降低频率:每次抓取间隔至少 5 分钟
  2. 使用代理:每次请求更换 IP
  3. 分散时间:不要集中在同一时间段抓取
  4. 更新登录状态:定期刷新 state.json
  5. 减少关键词:每次只搜索 1-2 个关键词

被封后处理

如果触发风控(返回空结果或验证码):

  1. 暂停 24 小时 - 让账号冷却
  2. 更换 IP - 使用代理或更换网络
  3. 重新登录 - 用 Chrome 扩展重新提取 state.json
  4. 降低频率 - 延长抓取间隔到 30 分钟以上

注意事项

  1. 登录状态会过期 - 通常几天到几周,过期后需要重新获取
  2. Cookie 隐私 - 登录状态文件包含敏感信息,不要分享给他人
  3. 请求频率 - 不要过于频繁抓取,避免触发风控
  4. 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 拦截
Installs
90
GitHub Stars
4
First Seen
Mar 10, 2026