本项目是一个集成了移动端(App)自动化和桌面端(Web)自动化的多功能信息采集平台。它提供了一个Web界面来管理和运行各项自动化任务,并支持通过Docker进行容器化部署。
- 🌐 Web管理界面: 基于Flask和Waitress,提供友好的用户界面,用于配置、启动和监控自动化任务。
- 📱 App自动化 (TikTok):
- 图像搜索: 自动进入TikTok商城,可使用PC端指定图片或手机摄像头拍照进行商品搜索。
- 链接采集: 自动遍历搜索结果,进入商品详情页并提取分享链接。
- 结果保存: 将采集到的链接保存到带时间戳的本地文本文件中。
- 🖥️ Web自动化 (秒手):
- 链接处理: 自动读取采集到的链接文件。
- 浏览器操作: 在Chrome浏览器中打开链接,并可配置代理、加载扩展程序、自动登录秒手平台等。
- 🐳 Docker支持: 提供
Dockerfile
,支持一键构建和部署,实现环境隔离和快速迁移。 - ⚙️ 灵活配置: 所有关键参数均通过
config.yaml
进行配置,易于修改和维护。
AutoCollect/
├── app.py # Flask Web应用主程序
├── automation_task.py # App自动化核心逻辑
├── link_opener.py # Web自动化核心逻辑
├── config.yaml # 全局配置文件
├── Dockerfile # Docker配置文件
├── requirements.txt # Python依赖
├── README.md # 项目说明文档
├── pages/ # Appium页面对象模型
├── utils/ # 工具类
├── templates/ # Flask前端模板
├── shared_links/ # 存放采集结果的目录
└── uploads/ # 存放用于图像搜索的图片
- 部署环境: Windows, macOS, Linux 或任何支持Docker的系统。
- Python版本: 3.11+
- Node.js: (如果需要手动运行Appium)
- Appium Server: 用于驱动移动端App。
- Android SDK:
adb
等工具。 - 已连接的Android设备或模拟器,并开启USB调试。
- 设备上已安装TikTok应用。
本项目包含三个核心组件,可以根据需求选择不同的运行方式:
- Web管理界面 (
app.py
): 提供配置和任务触发的可视化界面。 - App自动化 (
automation_task.py
): 执行基于Appium的移动端任务。此组件强依赖于外部Appium服务和物理设备连接,不适合在Docker容器内运行。 - Web自动化 (
link_opener.py
): 执行基于Playwright的浏览器任务。此组件可以被容器化。
因此,我们提供两种部署策略:本地运行和Docker部署。
此方法在你的开发机上直接运行所有组件,功能最完整,尤其适合需要同时进行App和Web自动化的场景。
-
克隆项目:
git clone <项目地址> cd AutoCollect
-
安装Python依赖:
pip install -r requirements.txt
-
安装Playwright浏览器依赖: 这是Web自动化所必需的。
playwright install
-
配置Appium: 这是App自动化所必需的。 确保Appium服务器正在运行,并且Android设备已正确连接。
# (可选) 启动Appium服务器 appium server
-
修改配置: 根据你的实际环境,编辑
config.yaml
文件,特别是设备ID、App包名、秒手账号、插件路径等。 -
启动Web服务:
python app.py
-
访问Web界面: 打开浏览器,访问
http://localhost:8080
。
Docker部署提供了标准化的环境,主要用于隔离运行 Web管理界面 和 Web自动化 任务。我们提供两个独立的Dockerfile。
此镜像仅包含Flask Web应用,体积较小。它本身无法执行自动化任务,但可以作为一个远程触发器(需要进行代码修改以支持远程执行)。
- 构建镜像:
docker build -t autocollect-ui -f Dockerfile .
- 运行容器:
docker run --rm -p 8080:8080 \ -v "$(pwd)/shared_links:/app/shared_links" \ -v "$(pwd)/uploads:/app/uploads" \ -v "$(pwd)/config.yaml:/app/config.yaml" \ autocollect-ui
此镜像包含Web界面、Playwright和Chromium浏览器,能够完整地在容器内执行Web自动化任务。
-
准备Chrome插件:
- 在项目根目录创建一个名为
extensions
的文件夹。 - 将你解压后的Chrome插件完整地放入
extensions
文件夹中。 - 这是构建镜像前的必需步骤。
- 在项目根目录创建一个名为
-
修改配置:
- 打开
config.yaml
,找到web_automation
部分。 - 将
extension_path
修改为容器内的路径:/app/extensions/
。
- 打开
-
构建镜像:
docker build -t autocollect-playwright -f Dockerfile.playwright .
-
运行容器:
# --shm-size=1g: 推荐为Chromium设置,防止因内存不足而崩溃 docker run --rm -it -p 8080:8080 \ -v "$(pwd)/shared_links:/app/shared_links" \ -v "$(pwd)/config.yaml:/app/config.yaml" \ --shm-size=1g \ autocollect-playwright
注意: 在Windows PowerShell中,请使用
${pwd}
代替$(pwd)
。 -
访问和使用:
- 打开浏览器访问
http://localhost:8080
。 - 在此容器中,只有 Web自动化 (打开链接) 功能可以成功执行。App自动化任务会因缺少Appium环境而失败。
- 打开浏览器访问
- 访问主页: 打开
http://localhost:8080
。 - 上传图片: (仅App自动化需要) 如果需要使用特定图片进行搜索,请将图片文件放入项目根目录下的
uploads
文件夹中。 - 配置参数: 在Web界面上,根据需求填写或修改各项配置:
- APP自动化配置: 设置设备版本、名称、TikTok包名等。
- APP自动化任务: 设置本次任务要处理的商品数量和用于搜索的图片。
- Web自动化配置: 设置代理服务器、秒手URL、用户名、密码和浏览器扩展路径。
- 启动App自动化任务:
- 在主页的“APP自动化任务”板块,选择一张图片。
- 点击“开始任务”按钮,后台将开始执行TikTok图像搜索和链接采集。
- 任务状态会实时显示在界面上,完成后可以点击“查看结果”或刷新主页查看采集到的链接文件。
- 启动Web自动化任务:
- 在主页的“已采集链接文件”列表中,会显示所有已生成的链接文件。
- 点击任意文件旁的“在浏览器中打开”按钮。
- 后台将启动一个Chrome浏览器,根据配置自动处理该文件中的所有链接。
# Appium服务器地址
appium:
server_url: http://127.0.0.1:4723
# 移动设备配置
device:
platform_name: "Android"
platform_version: "13" # 你的安卓版本
device_name: "Your_Device_ID" # adb devices获取到的设备ID
automation_name: UiAutomator2
no_reset: true
# App自动化任务配置
task:
max_products_to_process: 5 # 每次任务最多采集的商品链接数
pc_image_path: "uploads/your_image.jpg" # 用于图像搜索的图片路径(在Web界面选择会覆盖此项)
share_target: file # 结果处理方式,'file'表示保存到文件
# TikTok应用配置
tiktok:
app_package: com.zhiliaoapp.musically
app_activity: com.ss.android.ugc.aweme.splash.SplashActivity
# (可选) Web自动化配置
web_automation:
proxy_server: "http://user:pass@host:port" # 代理服务器地址
miaoshou_url: "https://www.miaoshou.com/login" # 秒手登录URL
miaoshou_username: "your_username"
miaoshou_password: "your_password"
extension_path: "path/to/your/chrome_extension" # Chrome扩展程序路径
- 路径问题: 在配置文件和Web界面中填写路径时,请使用正斜杠
/
或双反斜杠\\
。 - Appium会话: 确保没有其他程序正在占用Appium服务。Web界面启动的任务是独占的,请等待一个任务完成后再启动下一个。
- 浏览器驱动: Web自动化功能依赖于
webdriver-manager
自动下载匹配的ChromeDriver。如果自动下载失败,请手动安装与你的Chrome浏览器版本对应的ChromeDriver。