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 条评论