Skip to content

magic007/xianyu-instant-purchase-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

闲鱼秒拍工具

闲鱼秒拍,只为快人一步

项目说明

该项目是一个用于闲鱼平台的自动化工具,主要功能包括自动秒杀商品。工具通过Selenium控制Chrome浏览器实现闲鱼平台的自动操作。

主要功能

  1. 自动登录:自动打开闲鱼网站并检查登录状态,首次使用需手动登录,后续会保存Cookie自动登录
  2. 收藏商品管理:自动获取用户收藏的商品列表,并进行筛选
  3. 自动添加商品:根据日期自动搜索当天预售商品并添加到收藏列表,支持只添加关注用户的商品
  4. 日期识别:从商品标题中自动识别秒杀时间,并按时间进行分组
  5. 自动秒杀:在指定时间自动进行秒杀操作,提高抢购成功率
  6. 智能重试:遇到网络问题时自动重试,保证操作的可靠性
  7. 可视化搜索界面:提供Web界面,可以直观地搜索商品,支持价格筛选和结果展示

环境准备

  1. Python 3.6或更高版本
  2. Chrome浏览器
  3. 必要的Python依赖包
  4. 适合您Chrome版本的ChromeDriver (如果选择本地驱动模式)

安装依赖

pip install selenium flask

目录结构

automation/
├── cache/               # 存储Cookies和缓存文件
├── config/              # 配置文件目录
│   └── config.json      # 主配置文件
├── js/                  # JavaScript文件目录
├── service/             # 核心服务模块
│   └── execute_task/    # 任务执行模块
│       ├── execute.py   # 主入口文件
│       ├── manage.py    # 任务管理类
│       ├── task.py      # 任务定义类
│       └── request_config.py # 请求配置类
├── ui/                  # Web界面模块
│   ├── app.py           # Flask应用主文件
│   ├── run.py           # 启动脚本
│   ├── templates/       # HTML模板
│   │   └── index.html   # 主页模板
│   └── static/          # 静态资源
│       ├── css/         # 样式文件
│       └── js/          # JavaScript文件
└── utool/               # 工具类目录
    └── sokcet_connect.py # 网络连接工具

drivers/                 # ChromeDriver存放目录

ChromeDriver 设置

项目支持两种方式使用ChromeDriver:

1. 使用本地驱动 (推荐)

  1. Chrome for Testing 下载与您Chrome浏览器版本匹配的驱动
  2. 解压得到的chromedriver文件,放入项目的drivers目录下
  3. 确保脚本中的USE_LOCAL_DRIVER设置为True
# 配置项 - 修改这里以适应您的环境
USE_LOCAL_DRIVER = True  # 是否使用本地ChromeDriver
LOCAL_DRIVER_PATH = os.path.join(os.getcwd(), "drivers", "chromedriver")  # 本地ChromeDriver路径

2. 使用自动下载驱动 (需要网络访问)

如果您可以正常访问Google的资源,可以使用自动下载功能:

  1. 修改脚本中的配置:
USE_LOCAL_DRIVER = False  # 设置为False使用自动下载

运行方式

命令行方式运行

python -m automation.service.execute_task.execute

Web界面方式运行

python -m automation.ui.run

运行后会自动在浏览器中打开操作界面,您可以在界面上:

  1. 输入搜索关键词
  2. 设置价格筛选范围
  3. 选择是否只搜索关注的人发布的商品
  4. 查看搜索结果并将商品添加到收藏列表
  5. 清空收藏列表

运行流程

  1. 启动:程序自动打开Chrome浏览器并访问闲鱼网站
  2. 登录
    • 首次运行需要手动登录
    • 登录成功后,会自动保存Cookie,下次运行时自动使用
  3. 获取收藏
    • 程序自动获取您收藏的商品列表
    • 按商品状态进行筛选,只处理有效商品
  4. 解析时间
    • 从商品标题中提取日期时间信息 (格式: XXXX年XX月XX日XX点XX分)
    • 按日期时间分组,相同时间的商品会被一起处理
  5. 秒杀准备
    • 程序会计算距离秒杀时间的时间差
    • 如果时间差较大,会进入等待模式
  6. 执行秒杀
    • 在秒杀时间点附近启动秒杀任务
    • 使用高效的网络请求方式提高秒杀成功率
  7. 结果反馈
    • 实时反馈秒杀结果和状态

配置说明

配置文件位于:automation/config/config.json

您可以在配置文件中修改以下参数:

{
  "headers": {
    // 浏览器请求头配置
  },
  "apiConfig": {
    "secKillConfig": {
      // 秒杀API配置
    },
    "collectConfig": {
      // 收藏商品API配置
    }
  }
}

商品标题日期格式

在收藏商品时,为了让系统能正确识别秒杀时间,商品标题应包含特定格式的日期时间,例如:

闲鱼秒杀测试商品 2024年10月31日10点30分

日期时间格式必须为:XXXX年XX月XX日XX点XX分,系统会自动识别这种格式并安排秒杀任务。

如果商品标题中没有包含上述格式的日期时间,系统会使用当前时间作为默认值。

常见问题

1. ChromeDriver版本不匹配

如果遇到以下错误:

This version of ChromeDriver only supports Chrome version XX
Current browser version is YY

请确保下载与您Chrome浏览器版本匹配的ChromeDriver。

2. 配置文件路径错误

如果遇到以下错误:

No such file or directory: config.json

这通常是由路径问题引起的。项目已经修复了相对路径的问题,使用绝对路径来引用配置文件和缓存文件。

3. 浏览器崩溃问题

如果遇到以下错误:

Message: 
Stacktrace:
0   chromedriver...

可能是因为浏览器崩溃。解决方法:

  1. 确保使用了最新版本的代码,已添加更健壮的错误处理和元素定位
  2. 尝试以下Chrome启动选项:
    • 添加 --no-sandbox 参数 (已在最新代码中添加)
    • 添加 --disable-dev-shm-usage 参数 (已在最新代码中添加)
    • 添加 --disable-gpu 参数 (已在最新代码中添加)
  3. 如果崩溃仍然发生,尝试增加程序中的等待时间(sleep)

4. 登录问题

首次运行时需要手动登录闲鱼账号,登录后程序会保存Cookie供后续使用。如果登录遇到问题,程序会提示您手动完成登录并按回车继续。

5. 操作超时问题

如果在使用过程中遇到操作超时的问题(如元素无法找到),可以尝试:

  1. 在代码中增加等待时间:
WebDriverWait(driver, 20)  # 增加等待时间到20秒
  1. 在关键操作前添加短暂延迟:
time.sleep(5)  # 添加5秒延迟

6. Web界面问题

如果在使用Web界面时遇到问题:

  1. 确保已安装Flask:
pip install flask
  1. 如果界面无法加载,检查Flask是否正在运行:
正在启动闲鱼秒拍搜索工具...
应用将在默认浏览器中打开
 * Serving Flask app 'app' (lazy loading)
 * Environment: production
 * Debug mode: on
 * Running on http://127.0.0.1:5000
  1. 如果显示端口已被占用,可以修改run.py中的端口号:
app.run(debug=True, port=5001)  # 修改为其他端口

技术实现

1. 浏览器自动化

使用Selenium WebDriver控制Chrome浏览器,实现页面导航、元素定位、点击和输入等操作。

2. 网络请求优化

使用自定义的Socket连接方式进行秒杀请求,比标准的requests库更快,提高秒杀成功率。

3. 智能日期识别

使用正则表达式从商品标题中提取日期时间信息,支持多种格式的日期时间表示。

4. 并发处理

使用线程池管理多个秒杀任务,提高并发性能,增加秒杀成功率。

5. 错误处理

全面的异常捕获和处理机制,确保程序在各种异常情况下都能保持运行,增强稳定性。

6. Web界面

使用Flask框架提供Web界面,结合Bootstrap实现响应式布局,提供直观的用户体验。

更新日志

2024-10-31

  • 移除了旧版本(automation_v1)相关代码
  • 修复了配置文件路径问题
  • 增强了登录过程的稳定性
  • 添加了更详细的调试信息输出
  • 改进了元素定位方式,提高了页面识别的稳定性
  • 添加了异常捕获和错误处理,防止程序意外退出
  • 增加了Chrome浏览器启动参数,提高稳定性

2024-11-01

  • 添加了基于Web的UI界面,支持可视化搜索和筛选
  • 增加了价格筛选功能
  • 改进了搜索结果的展示方式
  • 添加了商品批量添加到收藏列表的功能
  • 优化了用户体验和界面设计

2023-XX-XX 版本更新

  1. 新增功能:显示发布者昵称,便于识别卖家身份
  2. 新增功能:显示商品标签信息,如"2小时前发布"、"包邮"等
  3. 新增功能:支持"1天内上新"等上新标签,并以特殊颜色高亮显示
  4. 新增功能:添加快速聊天按钮,点击可直接打开闲鱼聊天页面与卖家沟通
  5. 新增功能:添加立即下单按钮,一键跳转到商品详情页进行购买
  6. 新增功能:添加自动刷新功能,可设置刷新间隔时间,自动获取最新商品
  7. 优化功能:设置默认排序为"最新发布",优先显示最新上架商品
  8. 优化功能:改进"只看关注的人"选项的显示样式
  9. 优化搜索功能:高级搜索现在调用普通搜索函数,确保功能一致性并提高代码复用性
  10. 改进UI展示:卡片视图和表格视图都支持显示更详细的商品信息,不同类型标签采用不同颜色区分

注意事项

该工具主要用于学习和研究,请合理使用,避免违反闲鱼平台的使用条款。使用本工具产生的一切后果由使用者自行承担。

自动添加商品工具

项目还包含一个用于自动添加闲鱼商品到收藏列表的工具,位于automation/service/auto_add_commodity/AutoAddCommodity.py

功能说明

该工具主要提供以下功能:

  1. 自动登录闲鱼平台(首次使用需手动登录,之后会保存Cookie自动登录)
  2. 搜索当天预售的闲鱼商品并自动加入收藏
  3. 支持只添加关注用户发布的商品
  4. 支持自定义搜索商品名称
  5. 清空收藏列表功能

运行方式

在运行脚本前,请确保已安装必要的依赖:

pip install selenium requests

由于此脚本使用本地ChromeDriver,请确保:

  1. 使用与您的Chrome浏览器版本匹配的ChromeDriver
  2. ChromeDriver已放置在项目的drivers目录下
  3. ChromeDriver有可执行权限,如需要可使用以下命令设置:
    chmod +x drivers/chromedriver

macOS用户特别说明

对于macOS用户,由于系统安全策略,可能需要额外步骤:

  1. 下载ChromeDriver后,在Finder中右键点击chromedriver文件,选择"打开"
  2. 系统会显示安全警告,点击"打开"按钮以允许运行
  3. 如果遇到"无法验证开发者"的提示,需要到系统偏好设置 > 安全性与隐私中允许运行
  4. 您也可以通过终端命令解除限制:
    xattr -d com.apple.quarantine drivers/chromedriver

然后直接运行Python脚本:

python automation/service/auto_add_commodity/AutoAddCommodity.py

使用流程

  1. 运行脚本后,首次使用时需要手动登录闲鱼账号

  2. 登录成功后,会显示以下选项:

    • 选项1:清空收藏列表
    • 选项2:搜寻今日秒拍商品并加入收藏
    • 选项3:搜寻商品,但只加入关注的用户商品
    • 选项4:根据自定义名称搜索商品
  3. 选择对应功能后,脚本会自动执行相应操作

示例

默认搜索格式为:#卖闲置YYYY年MM月DD日,其中日期会自动设置为当天。

选择选项2或3后,脚本会自动搜索符合当天日期的闲鱼商品,并将符合条件的商品加入收藏列表。

选择选项4后,可以自定义搜索关键词,找到符合条件的商品后自动加入收藏列表。

注意事项

  • 脚本运行过程中会打开Chrome浏览器,请勿关闭
  • 首次运行时需要手动登录,之后会自动使用保存的Cookie
  • 脚本会检测商品是否为当天预售商品,只有符合条件的商品才会被加入收藏

完整使用流程:从收藏到秒杀

为了提高秒杀成功率,推荐使用以下完整流程:

第一步:收集待秒杀商品

  1. 运行自动添加商品工具收集商品:

    python automation/service/auto_add_commodity/AutoAddCommodity.py
  2. 首次运行时根据提示登录闲鱼账号(后续会自动登录)

  3. 在选项菜单中选择功能:

    • 选择选项2收集当天所有预售商品
    • 或选择选项3只收集关注用户的预售商品
  4. 等待工具自动搜索并将符合条件的商品添加到收藏列表

第二步:执行秒杀任务

  1. 收藏完成后,运行秒杀主程序:

    python -m automation.service.execute_task.execute
  2. 程序会自动:

    • 获取您收藏列表中的商品
    • 从商品标题中提取秒杀时间
    • 按时间分组排序秒杀任务
    • 等待至接近秒杀时间
  3. 在秒杀时间点,程序会自动执行抢购操作

  4. 您可以通过程序输出查看秒杀结果和状态

效果展示

以下是闲鱼秒拍工具的实际运行效果展示:

秒拍工具界面1

秒拍工具界面2

秒拍工具界面3

使用技巧

  • 提前收藏:建议至少在秒杀开始前10分钟完成收藏操作
  • 标题格式:确保收藏的商品标题中包含正确的时间格式(如:2024年10月31日10点30分)
  • 同时秒杀:如果有多个相同时间点的商品,系统会并发处理
  • 登录状态:保持登录状态有效,避免秒杀时需要重新登录
  • 网络环境:使用稳定且速度较快的网络连接,提高秒杀成功率

注意事项

  • 请合理使用此工具,遵守闲鱼平台规则
  • 过于频繁的操作可能导致账号被限制
  • 建议每次秒杀操作后适当休息,避免连续大量请求

About

该项目是一个用于闲鱼平台的自动化工具,主要功能包括自动秒杀商品。工具通过Selenium控制Chrome浏览器实现闲鱼平台的自动操作。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors