Avito铲运机
Avito模块化刮刀,支持CLI、MCP服务器和代理。
机会
✅ MVP(实现):
- 过滤产品搜索
- 获取公告的详细信息
- CLI接口
- 控制台(表)和JSON输出
- Anti-Detection(用户代理,意外延迟)
- 隐形浏览器模式
- 手动验证码解决方案(在可见模式下)
✅ 代理(实现):
- 支持HTTP/HTTPS/SOCKS4/SOCKS5✅
- Авторизация(用户名:密码)✅
- socks5 auth通过代理链✅
- 3种旋转策略:顺序/随机/圆形罗宾✅
- 自动旋转每n个请求✅
- 禁用无效代理(round robin)✅
- 从文件加载✅
✅ 毁灭(实现):
- 搜索全部页面(
search-all) ✅
✅ MCP服务器(实现):
- 与Claude Desktop集成的MCP服务器✅
- 3инструмента:航空搜索,航空搜索_详情,航空搜索_all✅
- 自动重新使用浏览器✅
- 见E/CN.4/Sub.2/2000/SR.1。 docs/MCP_SETUP.md ✅
🚧 开发:
- 抗俘获(API网站)
- 通过环境变量在MCP服务器上支持代理
安装
pnpm install在安装依赖关系时,Playwright Browsers将自动安装。
使用
命令行界面
产品搜索:
# Базовый поиск
pnpm dev search "Samsung SSD 2TB"
# С фильтрами
pnpm dev search "Samsung SSD 2TB" --price-max 15000 --sort price_asc
# Сохранить результаты в JSON
pnpm dev search "Samsung SSD" --price-max 15000 --output results.json
# Без headless режима (показать браузер)
pnpm dev search "Samsung SSD" --headless false
# С прокси
pnpm dev search "Samsung SSD" --price-max 15000 --proxy-file config/proxies.txt
# С прокси и ротацией
pnpm dev search "Samsung SSD" \
--price-max 15000 \
--proxy-file config/proxies.txt \
--proxy-rotation round-robin \
--proxy-rotate-every 10获取广告详细信息:
# Вывод в консоль
pnpm dev details "https://www.avito.ru/item/12345678"
# Сохранить в JSON
pnpm dev details "https://www.avito.ru/item/12345678" --output item.json搜索所有页面:
pnpm dev search-all "Samsung SSD" --output all-results.json --price-max 15000软件API
import { AvitoScraper } from './src/core/scraper.js';
const scraper = new AvitoScraper({
headless: true,
timeout: 30000,
delayMs: [1000, 3000],
});
// Поиск
const results = await scraper.search({
query: 'Samsung SSD 2TB',
priceMax: 15000,
sort: 'price_asc',
});
console.log(results);
// Детали
const details = await scraper.getItemDetails('https://www.avito.ru/item/12345678');
console.log(details);
// Закрыть браузер
await scraper.close();MCP服务器(克劳德桌面)
快速设置:
- 收集项目:
pnpm install && pnpm build- 添加到
claude_desktop_config.json:
{
"mcpServers": {
"avito-scraper": {
"command": "node",
"args": ["C:\\Temp\\mcp-avito\\dist\\mcp\\server.js"],
"env": {
"CHROME_EXECUTABLE_PATH": "C:\\Temp\\mcp-avito\\chrome-win64\\chrome.exe"
}
}
}
}- 重新启动Claude Desktop
使用Claude Desktop:
Найди Samsung SSD до 15000 рублей на AvitoClaude将自动调用 avito_search 并显示结果。
📚 完整说明: docs/MCP_SETUP.md
实例
找到Samsung SSD至15000↓
pnpm dev search "Samsung SSD 2TB M.2 server" \
--price-max 15000 \
--sort price_asc \
--output ssd-results.json价格监测:
# Сохранять результаты с датой
pnpm dev search "Samsung PM983" \
--price-max 15000 \
--output "output/ssd-$(date +%Y%m%d).json"项目结构
avito-scraper/
├── src/
│ ├── core/
│ │ ├── scraper.ts # Основной scraper
│ │ ├── browser.ts # Управление браузером
│ │ ├── parser.ts # Парсинг HTML
│ │ └── types.ts # TypeScript типы
│ ├── plugins/
│ │ └── output/
│ │ ├── console.ts # Вывод в консоль
│ │ └── json.ts # Сохранение в JSON
│ ├── utils/
│ │ ├── delays.ts # Случайные задержки
│ │ ├── user-agents.ts # User-agent pool
│ │ └── url-builder.ts # Построение URL
│ └── cli.ts # CLI интерфейс
├── config/
│ └── proxies.txt # Список прокси (будущее)
└── output/ # Выходные файлы选项
刮刀选项
{
headless?: boolean; // Headless режим (default: true)
timeout?: number; // Таймаут запросов (default: 30000ms)
retries?: number; // Повторные попытки (default: 3)
delayMs?: [number, number]; // Задержка [min, max] (default: [1000, 3000])
userAgent?: string; // Custom user-agent
}搜索筛选器
{
query: string; // Поисковый запрос (обязательно)
priceMin?: number; // Минимальная цена
priceMax?: number; // Максимальная цена
locationId?: number; // ID региона
page?: number; // Номер страницы
sort?: string; // Сортировка: date | price_asc | price_desc
}反侦测
Scraper使用多种技术来绕过检测:
- ✅ 随机User-agents
- ✅ 查询之间的意外延迟
- ✅ Stealth Mode(隐藏WebDriver)
- ✅ 现实浏览器设置(ViewPort,Locale,TimeZone)
- ✅ 代理支持(HTTP/HTTPS/SOCKS4/SOCKS5授权)
- ✅ 代理旋转(3种策略)
- 🚧 CAPTCHA解决方案(手动非头模式,自动计划)
路线图
见E/CN.4/Sub.2/2000/SR.1。详细的开发计划 docs/PLAN.md
以下版本(v1.1.0):
- \[\]与Claude Desktop集成的MCP服务器
- \[\]MCP工具:avito_search、avito_get_details、avito_serch_all
- \[\]Claude Desktop的配置
未来版本:
- \[\]Anti-captcha.com API
- \[\]Web UI仪表板
- \[\]价格监测和通知
- \[\]CSV/Excel导出
故障排除
“检测到验证码”:
- 降低查询频率
- 使用代理(实现时)
- 添加Anti-CAPTCHA Solver
空结果:
- 检查搜索查询
- 从
--headless false用于目视检查 - 检查选择器
parser.ts(Avito可以更改HTML)
浏览器无法启动:
- 确保安装了Chromium:
npx playwright install chromium
许可证
麻省理工学院
免责声明
该工具仅用于教育目的。使用刮擦可能会违反服务条款。用你自己的风险。
