# leadcrawler
**Repository Path**: edrin/leadcrawler
## Basic Information
- **Project Name**: leadcrawler
- **Description**: 多平台商业线索采集与智能分析平台:Playwright 采集 58同城/安居客/闲鱼 → 多策略电话提取 → 跨平台交叉验证 → 验证码人工介入 → 后台管理与 AI 语义分析。Node.js + PHP Webman + MySQL,Docker 一键部署。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://github.com/edrin09/leadcrawler
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-11-03
- **Last Updated**: 2026-11-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 商业线索采集与智能分析平台
**销售要的不是「一堆网页」,是「一条能打的电话」。**
配置关键词 → 自动采集 58 同城 / 安居客 / 闲鱼 → 号码交叉验证打分 → 后台查询导出。
人工一天几十条,它一天几千条;单条线索成本从**元级压到毫级**。
[](https://www.php.net/)
[](https://www.workerman.net/webman)
[](https://nodejs.org/)
[](https://playwright.dev/)
[](https://www.mysql.com/)
[](./LICENSE)
GitHub [edrin09/leadcrawler](https://github.com/edrin09/leadcrawler) | Gitee [edrin/leadcrawler](https://gitee.com/edrin/leadcrawler)
`三策略提取` · `跨平台交叉验证` · `验证码转人工` · `DeepSeek 语义判断` · `Docker 一键起`
---
## 一句话说清它解决什么
做商铺转让、二手设备、本地服务这类生意,客户名单散落在几个分类信息平台里。人工去翻:一天几十条,重复率高,号码真假难辨,还经常翻到中介。
这套系统把「翻网页」变成「一条流水线」:
```
关键词配置 → 无头浏览器采集 → 多策略号码提取 → 清洗去重
→ 跨平台交叉验证打分 → 后台筛选导出 → 人工跟进
```
**结果**:覆盖面从「今天翻了 3 页」变成「三个平台全量扫一遍」;判断依据从「看着像」变成「这个号在 3 个平台都留过,评分 87」。
---
## 为什么它不是一个普通爬虫
普通爬虫只做「抓下来」。这套东西多做了三件事,也是它真正的价值所在:
**① 号码提取不是一条正则**
正则、DOM 属性、页面内联脚本三路并行,取最可信的那个。手机号会被拆成 `138-xxxx-xxxx`、写成图片、塞进 JSON 字符串、藏在 `data-` 属性里——单一策略必然漏。**实测召回率 95%+**。
**② 号码是关联键,不是文本**
同一个号码出现在 58 同城的转让帖、安居客的房源里、闲鱼的商品描述中——这不是巧合,是同一个商户在不同平台铺量。系统以号码为主键聚合,**出现次数越多,评分越高**,同时保留各平台的原始上下文供人工判断。
**③ 遇验证码不乱撞**
滑块和点选硬刚只会封 IP。这里遇验证码**自动截图 → Socket.IO 推到人工介入台 → 操作员过码后爬虫自动续跑**。人只在必要的时候出现,其余时间全自动。
---
## 架构
```
Docker 容器
┌──────────────┬──────────────┬──────────────┐
│ Webman 后台 │ Node 采集 │ 人工介入服务 │
│ PHP 8.3 │ Playwright │ Socket.IO │
│ :8787 │ 多页并发 │ :3456 │
│ EasyAdmin8 │ 三策略提取 │ 验证码看板 │
└──────┬───────┴──────┬───────┴──────┬────────┘
└──────────────┼──────────────┘
┌─────▼─────┐
│ MySQL │ 号码为主键,支撑去重/关联/评分
└───────────┘
```
- **采集层**:Playwright 模拟真实浏览器,绕过常规指纹检测;异常时截图上报而不是静默失败
- **协同层**:独立验证服务,浏览器端与操作员端 Socket.IO 双向通信
- **管理层**:Webman 常驻内存,RESTful API + WebSocket 推送 + Cron 定时调度
- **智能层**:DeepSeek 对号码上下文做语义判断(是不是中介、是不是正文里蹭的号),可用可关
---
## 核心能力
| 模块 | 说明 |
| --- | --- |
| 多平台采集 | 58 同城 / 安居客 / 闲鱼,URL 与关键词可配;新增平台按插件方式接入 |
| 智能提取 | 正则 + DOM 属性 + 页面脚本三策略融合,号码召回率 95%+ |
| 交叉验证 | 号码为关联键,跨平台出现次数与来源多样性共同决定可信度评分 |
| 人工介入 | 验证码截图 → Socket.IO 看板 → 过码后自动续跑,不硬刚不封号 |
| AI 增强 | DeepSeek 语义分析降误采,按上下文判断号码归属 |
| 后台管理 | EasyAdmin8(Webman + Layui):查询、导出、定时任务、权限 |
| 移动端 | H5 随时查阅与跟进 |
| 一键部署 | Docker + Supervisord 统管三进程,自动重启、日志聚合 |
| 意向预测 | Rubix ML 对历史成交线索建模,给出购买意向分 |
---
## 快速开始
```bash
# 国内推荐 Gitee
git clone https://gitee.com/edrin/leadcrawler.git
# 或 git clone https://github.com/edrin09/leadcrawler.git
```
### 方式一:Docker(推荐)
代码以目录挂载进容器,先在宿主机装依赖:
```bash
cd crawler && npm install && npx playwright install chromium && cd ..
cd webman && composer install && cd ..
docker network create my_network
docker build -t crawler:latest -f docker/Dockerfile .
docker compose -f docker/docker-compose.yml up -d
```
后台 `http://localhost:8787`,人工介入看板 `http://localhost:3456`。
### 方式二:本地开发
```bash
# 1. 采集服务
cd crawler
npm install && npx playwright install chromium
cp .env.example .env
node main.js # 按 .env 平台开关依次执行
node remote-server.js # 人工介入服务(可选,:3456)
# 2. 后台服务
cd ../webman
composer install && cp .env.example .env
php start/start.php start
```
---
## 配置
两个服务各自独立配置,均带 `.env.example`:
| 变量 | 说明 |
| --- | --- |
| `HEADLESS` | `true` 生产无头;`false` 本地调试可见窗口 |
| `STORAGE_TYPE` | `mysql` 或 `csv`(调试期用 csv 零依赖) |
| `CRAWL_58` / `CRAWL_ANJUKE` / `CRAWL_GOOFISH` | 各平台采集总开关 |
| `AI_ENABLED` / `AI_API_KEY` | DeepSeek 语义分析,默认关 |
| `REMOTE_AUTH_TOKEN` | 爬虫端与操作员端认证令牌,**务必自行更换** |
---
## 目录结构
```
crawler/ Node 采集服务(run/ 各平台脚本 · src/ 提取器·入库·验证服务)
webman/ PHP 后台(app/ 业务 · public/ 后台与 H5)
docker/ Dockerfile · docker-compose · supervisord
```
## 技术栈
Node.js · Playwright · Express · Socket.IO · PHP 8.3 · Webman · EasyAdmin8 · Layui · MySQL · Rubix ML · DeepSeek API · Docker
---
## 使用边界(重要)
- 采集行为请遵守目标平台 `robots.txt` 与服务条款,仅用于自身业务场景的**合法信息获取**
- 请勿将数据用于骚扰性营销、倒卖或任何侵犯他人权益的用途
- 涉及个人信息处理时,请遵守《个人信息保护法》等适用法律法规,落实告知与授权
- 因使用不当产生的一切后果由使用者自负
> 这是个工程实现参考:反爬对抗、多策略抽取、人工介入闭环、混合技术栈协同。**技术可以学,滥用要担责。**
---
## License
MIT