闲鱼秒拍,只为快人一步
该项目是一个用于闲鱼平台的自动化工具,主要功能包括自动秒杀商品。工具通过Selenium控制Chrome浏览器实现闲鱼平台的自动操作。
- 自动登录:自动打开闲鱼网站并检查登录状态,首次使用需手动登录,后续会保存Cookie自动登录
- 收藏商品管理:自动获取用户收藏的商品列表,并进行筛选
- 自动添加商品:根据日期自动搜索当天预售商品并添加到收藏列表,支持只添加关注用户的商品
- 日期识别:从商品标题中自动识别秒杀时间,并按时间进行分组
- 自动秒杀:在指定时间自动进行秒杀操作,提高抢购成功率
- 智能重试:遇到网络问题时自动重试,保证操作的可靠性
- 可视化搜索界面:提供Web界面,可以直观地搜索商品,支持价格筛选和结果展示
- Python 3.6或更高版本
- Chrome浏览器
- 必要的Python依赖包
- 适合您Chrome版本的ChromeDriver (如果选择本地驱动模式)
pip install selenium flaskautomation/
├── 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:
- 从 Chrome for Testing 下载与您Chrome浏览器版本匹配的驱动
- 解压得到的
chromedriver文件,放入项目的drivers目录下 - 确保脚本中的
USE_LOCAL_DRIVER设置为True
# 配置项 - 修改这里以适应您的环境
USE_LOCAL_DRIVER = True # 是否使用本地ChromeDriver
LOCAL_DRIVER_PATH = os.path.join(os.getcwd(), "drivers", "chromedriver") # 本地ChromeDriver路径如果您可以正常访问Google的资源,可以使用自动下载功能:
- 修改脚本中的配置:
USE_LOCAL_DRIVER = False # 设置为False使用自动下载python -m automation.service.execute_task.executepython -m automation.ui.run运行后会自动在浏览器中打开操作界面,您可以在界面上:
- 输入搜索关键词
- 设置价格筛选范围
- 选择是否只搜索关注的人发布的商品
- 查看搜索结果并将商品添加到收藏列表
- 清空收藏列表
- 启动:程序自动打开Chrome浏览器并访问闲鱼网站
- 登录:
- 首次运行需要手动登录
- 登录成功后,会自动保存Cookie,下次运行时自动使用
- 获取收藏:
- 程序自动获取您收藏的商品列表
- 按商品状态进行筛选,只处理有效商品
- 解析时间:
- 从商品标题中提取日期时间信息 (格式: XXXX年XX月XX日XX点XX分)
- 按日期时间分组,相同时间的商品会被一起处理
- 秒杀准备:
- 程序会计算距离秒杀时间的时间差
- 如果时间差较大,会进入等待模式
- 执行秒杀:
- 在秒杀时间点附近启动秒杀任务
- 使用高效的网络请求方式提高秒杀成功率
- 结果反馈:
- 实时反馈秒杀结果和状态
配置文件位于:automation/config/config.json
您可以在配置文件中修改以下参数:
{
"headers": {
// 浏览器请求头配置
},
"apiConfig": {
"secKillConfig": {
// 秒杀API配置
},
"collectConfig": {
// 收藏商品API配置
}
}
}在收藏商品时,为了让系统能正确识别秒杀时间,商品标题应包含特定格式的日期时间,例如:
闲鱼秒杀测试商品 2024年10月31日10点30分
日期时间格式必须为:XXXX年XX月XX日XX点XX分,系统会自动识别这种格式并安排秒杀任务。
如果商品标题中没有包含上述格式的日期时间,系统会使用当前时间作为默认值。
如果遇到以下错误:
This version of ChromeDriver only supports Chrome version XX
Current browser version is YY
请确保下载与您Chrome浏览器版本匹配的ChromeDriver。
如果遇到以下错误:
No such file or directory: config.json
这通常是由路径问题引起的。项目已经修复了相对路径的问题,使用绝对路径来引用配置文件和缓存文件。
如果遇到以下错误:
Message:
Stacktrace:
0 chromedriver...
可能是因为浏览器崩溃。解决方法:
- 确保使用了最新版本的代码,已添加更健壮的错误处理和元素定位
- 尝试以下Chrome启动选项:
- 添加
--no-sandbox参数 (已在最新代码中添加) - 添加
--disable-dev-shm-usage参数 (已在最新代码中添加) - 添加
--disable-gpu参数 (已在最新代码中添加)
- 添加
- 如果崩溃仍然发生,尝试增加程序中的等待时间(sleep)
首次运行时需要手动登录闲鱼账号,登录后程序会保存Cookie供后续使用。如果登录遇到问题,程序会提示您手动完成登录并按回车继续。
如果在使用过程中遇到操作超时的问题(如元素无法找到),可以尝试:
- 在代码中增加等待时间:
WebDriverWait(driver, 20) # 增加等待时间到20秒- 在关键操作前添加短暂延迟:
time.sleep(5) # 添加5秒延迟如果在使用Web界面时遇到问题:
- 确保已安装Flask:
pip install flask- 如果界面无法加载,检查Flask是否正在运行:
正在启动闲鱼秒拍搜索工具...
应用将在默认浏览器中打开
* Serving Flask app 'app' (lazy loading)
* Environment: production
* Debug mode: on
* Running on http://127.0.0.1:5000
- 如果显示端口已被占用,可以修改
run.py中的端口号:
app.run(debug=True, port=5001) # 修改为其他端口使用Selenium WebDriver控制Chrome浏览器,实现页面导航、元素定位、点击和输入等操作。
使用自定义的Socket连接方式进行秒杀请求,比标准的requests库更快,提高秒杀成功率。
使用正则表达式从商品标题中提取日期时间信息,支持多种格式的日期时间表示。
使用线程池管理多个秒杀任务,提高并发性能,增加秒杀成功率。
全面的异常捕获和处理机制,确保程序在各种异常情况下都能保持运行,增强稳定性。
使用Flask框架提供Web界面,结合Bootstrap实现响应式布局,提供直观的用户体验。
- 移除了旧版本(automation_v1)相关代码
- 修复了配置文件路径问题
- 增强了登录过程的稳定性
- 添加了更详细的调试信息输出
- 改进了元素定位方式,提高了页面识别的稳定性
- 添加了异常捕获和错误处理,防止程序意外退出
- 增加了Chrome浏览器启动参数,提高稳定性
- 添加了基于Web的UI界面,支持可视化搜索和筛选
- 增加了价格筛选功能
- 改进了搜索结果的展示方式
- 添加了商品批量添加到收藏列表的功能
- 优化了用户体验和界面设计
- 新增功能:显示发布者昵称,便于识别卖家身份
- 新增功能:显示商品标签信息,如"2小时前发布"、"包邮"等
- 新增功能:支持"1天内上新"等上新标签,并以特殊颜色高亮显示
- 新增功能:添加快速聊天按钮,点击可直接打开闲鱼聊天页面与卖家沟通
- 新增功能:添加立即下单按钮,一键跳转到商品详情页进行购买
- 新增功能:添加自动刷新功能,可设置刷新间隔时间,自动获取最新商品
- 优化功能:设置默认排序为"最新发布",优先显示最新上架商品
- 优化功能:改进"只看关注的人"选项的显示样式
- 优化搜索功能:高级搜索现在调用普通搜索函数,确保功能一致性并提高代码复用性
- 改进UI展示:卡片视图和表格视图都支持显示更详细的商品信息,不同类型标签采用不同颜色区分
该工具主要用于学习和研究,请合理使用,避免违反闲鱼平台的使用条款。使用本工具产生的一切后果由使用者自行承担。
项目还包含一个用于自动添加闲鱼商品到收藏列表的工具,位于automation/service/auto_add_commodity/AutoAddCommodity.py。
该工具主要提供以下功能:
- 自动登录闲鱼平台(首次使用需手动登录,之后会保存Cookie自动登录)
- 搜索当天预售的闲鱼商品并自动加入收藏
- 支持只添加关注用户发布的商品
- 支持自定义搜索商品名称
- 清空收藏列表功能
在运行脚本前,请确保已安装必要的依赖:
pip install selenium requests由于此脚本使用本地ChromeDriver,请确保:
- 使用与您的Chrome浏览器版本匹配的ChromeDriver
- ChromeDriver已放置在项目的
drivers目录下 - ChromeDriver有可执行权限,如需要可使用以下命令设置:
chmod +x drivers/chromedriver
对于macOS用户,由于系统安全策略,可能需要额外步骤:
- 下载ChromeDriver后,在Finder中右键点击chromedriver文件,选择"打开"
- 系统会显示安全警告,点击"打开"按钮以允许运行
- 如果遇到"无法验证开发者"的提示,需要到系统偏好设置 > 安全性与隐私中允许运行
- 您也可以通过终端命令解除限制:
xattr -d com.apple.quarantine drivers/chromedriver
然后直接运行Python脚本:
python automation/service/auto_add_commodity/AutoAddCommodity.py-
运行脚本后,首次使用时需要手动登录闲鱼账号
-
登录成功后,会显示以下选项:
- 选项1:清空收藏列表
- 选项2:搜寻今日秒拍商品并加入收藏
- 选项3:搜寻商品,但只加入关注的用户商品
- 选项4:根据自定义名称搜索商品
-
选择对应功能后,脚本会自动执行相应操作
默认搜索格式为:#卖闲置YYYY年MM月DD日,其中日期会自动设置为当天。
选择选项2或3后,脚本会自动搜索符合当天日期的闲鱼商品,并将符合条件的商品加入收藏列表。
选择选项4后,可以自定义搜索关键词,找到符合条件的商品后自动加入收藏列表。
- 脚本运行过程中会打开Chrome浏览器,请勿关闭
- 首次运行时需要手动登录,之后会自动使用保存的Cookie
- 脚本会检测商品是否为当天预售商品,只有符合条件的商品才会被加入收藏
为了提高秒杀成功率,推荐使用以下完整流程:
-
运行自动添加商品工具收集商品:
python automation/service/auto_add_commodity/AutoAddCommodity.py
-
首次运行时根据提示登录闲鱼账号(后续会自动登录)
-
在选项菜单中选择功能:
- 选择选项2收集当天所有预售商品
- 或选择选项3只收集关注用户的预售商品
-
等待工具自动搜索并将符合条件的商品添加到收藏列表
-
收藏完成后,运行秒杀主程序:
python -m automation.service.execute_task.execute
-
程序会自动:
- 获取您收藏列表中的商品
- 从商品标题中提取秒杀时间
- 按时间分组排序秒杀任务
- 等待至接近秒杀时间
-
在秒杀时间点,程序会自动执行抢购操作
-
您可以通过程序输出查看秒杀结果和状态
以下是闲鱼秒拍工具的实际运行效果展示:
- 提前收藏:建议至少在秒杀开始前10分钟完成收藏操作
- 标题格式:确保收藏的商品标题中包含正确的时间格式(如:2024年10月31日10点30分)
- 同时秒杀:如果有多个相同时间点的商品,系统会并发处理
- 登录状态:保持登录状态有效,避免秒杀时需要重新登录
- 网络环境:使用稳定且速度较快的网络连接,提高秒杀成功率
- 请合理使用此工具,遵守闲鱼平台规则
- 过于频繁的操作可能导致账号被限制
- 建议每次秒杀操作后适当休息,避免连续大量请求


