Apple ID 自动化管理方案 Docker 项目部署
项目介绍
“以全新方式管理你的 Apple ID”这是一款基于密保问题的自动化 Apple ID 检测 & 解锁程序。前端用于管理账号,支持添加多个账号,并提供展示账号页面;支持创建包含多个账号的分享页面,并可以为分享页面设置密码与有效期。后端定时检测账号是否被锁定,若被锁定或开启二步验证则自动解锁,修改密码并向 API 回报密码。登录 Apple ID 并自动删除 Apple ID 中的设备。启用代理池和 Selenium 集群,提高解锁成功率,防止风控。
项目特点
- 多用户使用,权限控制
- 多账号管理
- 账号分享页,支持设置密码、有效期、自定义HTML内容
- 自动解锁与关闭二步验证
- 自动/定时修改密码
- 自动删除Apple ID中的设备
- 代理池与Selenium集群,提高解锁成功率
- 允许手动触发解锁
- ……
后端API介绍
后端 API 可实现在前端手动控制解锁任务,例如:
- 前端添加/编辑/删除账号时,实时同步到后端;
- 分享页允许用户触发解锁……
当 .env
中 [BACKEND]
部分的 ENABLE_API
为 true
时,后端会自动启用接口。监听的 IP 与端口也在前端配置文件中。由于后端 API 采用 HTTP 协议,我们强烈建议监听 127.0.0.1 而非 0.0.0.0 。如果前端与后端不在同一台服务器上但需要使用后端 API ,强烈建议使用 nginx 等进行反代。
后端文件说明
您可以使用"后端程序安装"部分的一键安装脚本来跳过本部分
backend\unblocker_manager.py
后端管理程序
说明:用于定时从 API 获取任务列表,并部署 task 对应的 docker 容器。(如果您使用本程序,您可以不用看下面第二个程序的介绍,会自动部署)
启动参数:-api_url <API地址> -api_key <API key>
(API 地址格式为http(s)://xxx.xxx
末尾不需要加/或路径)backend\unlocker\main.py
后端解锁程序
说明:通过 Webdriver 实现账号改密解锁,并向 API 提交新密码。该程序依赖 API 运行。
启动参数:-api_url <API地址> -api_key <API key> -taskid <Task ID>
后端管理程序会自动从API站点获取任务并部署容器,默认同步时间为10分钟(重启服务即可立即同步)
若不想使用自动同步,也可以手动部署后端解锁程序 ,docker 版 sahuidhsu/appleid_auto
架构
前端面板使用ThinkPHP6框架开发,前端框架使用Tabler
后端程序使用Python3编写
前端网站安装
网页端运行环境推荐 PHP 7.4 & MySQL 8.0,理论支持MySQL5.x,其他版本PHP可能不支持。
- 前往 Release 从最新版本下载网页源码(Source code)并解压
- 将配置文件
.example.env
复制一份,名字改为.env
,并填写设置项
有关后端 API 请参阅后端 API 介绍- # 启用调试模式
- APP_DEBUG = false
- # 是否开启注册功能
- ENABLE_REGISTER = true
- # API Key,用于调用前端的API
- API_KEY = 123456
- # Webdriver地址,末尾不要加斜杠
- WEBDRIVER = http://localhost:4444
- # 是否启用任务后台运行,即不显示浏览器窗口
- TASK_HEADLESS = true
- # 是否启用代理池
- ENABLE_PROXY_POOL = false
- # 当后端报告代理不可用时,是否自动禁用该代理
- PROXY_AUTO_DISABLE = false
- # 当任务执行失败时,是否5分钟后重试,否则直接等待下一次执行任务
- FAIL_RETRY = true
- [BACKEND]
- # 后端API配置
- # 通过后端API可实现在前端控制解锁任务,做到实时更新,并允许用户触发解锁
- # 由于后端API采用HTTP协议,强烈建议监听127.0.0.1而非0.0.0.0
- # 如果前端与后端不在同一台服务器上,强烈建议使用nginx等进行反代
- ENABLE_API = false
- LISTEN_IP = 127.0.0.1
- LISTEN_PORT = 3939
- API_URL = http://127.0.0.1:3939
- TOKEN = 1234561
- [DATABASE]
- # 数据库连接信息
- TYPE = mysql
- HOSTNAME = 127.0.0.1
- DATABASE = appleid_auto
- USERNAME = root
- PASSWORD = 123456
- HOSTPORT = 3306
- [APP]
- # 时区设置
- DEFAULT_TIMEZONE = Asia/Shanghai
- 前往 PHP 设置,删除对
putenv
函数的禁用,并安装fileinfo
拓展
对于宝塔用户,请前往软件商店
->对应PHP的设置
禁用函数
->删除putenv
和proc_open
安装拓展
->安装fileinfo
- 前往网站根目录,执行以下指令
- wget https://getcomposer.org/installer -O composer.phar
- php composer.phar
- php composer.phar install
- 设置网站运行目录为
/public
,并设置伪静态为- location ~* (runtime|application)/{
- return 403;
- }
- location / {
- if (!-e $request_filename){
- rewrite ^(.*)$ /index.php?s=$1 last; break;
- }
- }
- 手动导入数据库文件 (
db/db.sql
) - 在网站根目录下执行指令,创建管理员账户
php think register 用户名 密码
- 登录网站,此时请先不要添加账号,完成后端安装后再添加
后端程序安装
注意事项
环境需求
后端运行基于 Docker,安装脚本会自动检测 Docker 是否安装。
Selenium
后端执行任务需要调用 Webdriver,有两种部署方式:单机节点和集群。
单机节点(standalone)
请根据需求修改参数
- docker run -d --name=webdriver --log-opt max-size=1m --log-opt max-file=1 --shm-size="2g" --restart=always -e SE_NODE_MAX_SESSIONS=10 -e SE_NODE_OVERRIDE_MAX_SESSIONS=true -e SE_SESSION_RETRY_INTERVAL=1 -e SE_VNC_VIEW_ONLY=1 -p 4444:4444 -p 5900:5900 selenium/standalone-chrome
其中:
SE_VNC_VIEW_ONLY=1 表示 VNC 仅允许查看,不允许操作。
SE_NODE_MAX_SESSIONS=10 表示最多允许 10 个会话数。
4444 端口用于执行任务和面板,5900 端口用于 VNC。
VNC 默认密码 secret
如需在 ARM 设备上使用,请参阅 seleniarm/standalone-chromium
集群(grid)
Selenium Grid 需要一个中心控制器(Hub),并允许在多台服务器上部署节点(Node)。Hub 收到请求后会自动分配 Node,实现负载均衡,多 IP 访问等功能。
快速部署脚本请参考 sahuidhsu/selenium-grid-docker (这个脚本提供 x86_64 和 arm 部署支持)
一键部署后端
- bash <(curl -Ls https://raw.githubusercontent.com/pplulee/appleid_auto/backend/backend/install_unblocker.sh)
安装时按照提示输入参数即可。
默认会以 appleauto
为容器名部署一个 Docker 容器。
部署完成后可通过 docker logs appleauto
查看管理容器日志。
通过 docker ps | grep apple-auto | awk '{print $1}' | xargs docker logs $1
查看后端容器日志。
共有 0 条评论