前言
自动嫖E宝儿的游戏!刚上车没几天,E宝看不下去了,直接把车给掀了。
后来又有后继者重新上传分享了镜像数据,但是在尝试之后,用QQ邮箱总是无法通过校验,暂且搁置。
安装新镜像
又一次更新的时候,发现了新的镜像库,心情好到飞起~
# 拉取镜像 docker pull charlocharlie/epicgames-freegames
登陆网站查看内容:Docker Hub
看完阅读说明,运行命令。
docker run \
-d \
-e TZ=Asia/Shanghai \
-e EMAIL=epic邮箱 \
-e PASSWORD=epic密码 \
-e RUN_ON_STARTUP=true \
-e BASE_URL=https://www.epicgames.com \
-e EMAIL_SENDER_ADDRESS=1533859388@qq.com \
-e EMAIL_SENDER_NAME="Epic Games Captchas" \
-e EMAIL_RECIPIENT_ADDRESS=qq号@qq.com \
-e SMTP_SECURE=true \
-e SMTP_USERNAME=qq号@qq.com \
-e SMTP_PASSWORD=qq邮箱密码 \
-v /home/keen/docker/epic/:/usr/app/config:rw \
-p 3000:3000 \
--restart=always \
-m 2g \
charlocharlie/epicgames-freegames:latest
-
-d
:后台运行 -
-e TZ=Asia/Shanghai
:设置时区为上海 -
-e EMAIL
: 账号 -
-e PASSWORD
: 密码 -
-e TOTP
: 开启双重认证后填入双重认证密钥,我没有就删掉了 -
-e RUN_ON_STARTUP
: 开启即运行,脚本参数 -
-e BASE_URL
: 指定Epic的官网 -
-e EMAIL_SENDER_ADDRESS
:发送邮件的地址 -
-e EMAIL_SENDER_NAME
: 邮件的主题 -
-e EMAIL_RECIPIENT_ADDRESS
: 邮件的接受地址 -
-e SMTP_USERNAME
: 邮箱的登陆账号 -
-e SMTP_PASSWORD
: 邮箱的登陆密码 -
-v
路径映射 -
-p 3000:3000
:映射宿主机的3000端口到容器服务的3000端口 -
--restart=always
:Docker 重启的时候容器也会重启 -
-m
: 设置最大使用内存为2G -
使用镜像charlocharlie/epicgames-freegames的最新版本
的确是所见即所得,重新登陆到账号上面去看,没有自动领取游戏。
参考官网简介,重新修改配置文件,还花了两毛钱,打开了qq邮箱的SMTP服务,将"testNotifiers"
设置为true,尝试测试能否校验通过。
{ "cronSchedule": "0 12 * * *", "searchStrategy": "all", "runOnStartup": true, "runOnce": false, "timezone": "Asia/Shanghai", "intervalTime": 60, "logLevel": "info", "notificationTimeoutHours": 24, "testNotifiers":true, "skipVersionCheck": false, "noHumanErrorHelp": false, "browserLaunchTimeout": 15, "browserLaunchRetryAttempts": 5, "browserNavigationTimeout": 30000, "accounts": [ { "email": "Epic的邮箱", "password": "Epic的密码" } ], "webPortalConfig": { "localtunnel": false, "baseUrl": "https://www.epicgames.com" }, "notifiers": [ { "type": "email", "smtpHost": "mail.qq.com", "smtpPort": 587, "emailSenderAddress": "qq邮箱", "emailSenderName": "Epic Games Captchas", "emailRecipientAddress": "qq邮箱", "secure": false, "auth": { "user": "qq邮箱", "pass": "SMTP密钥" } } ] }
学艺不精,使用Node发送邮件一直失败,所以校验总是不通过,暂且放下之后慢慢尝试吧。
安装旧镜像
不用再看这个镜像了,因为这个镜像的作者已经删库跑路了,大家直接忽略就可以了。
安装epicgames-claimer
首先搜索并且拉取镜像。
docker search epicgames
docker pull luminoleon/epicgames-claimer
哦吼~先建个临时容器看看是怎么样子的。
# 运行容器
docker run \
--name='epicFreeGame' \
luminoleon/epicgames-claimer
# 进入容器
docker exec -it epicFreeGame /bin/bash
哈哈,原来是python脚本啊,退出容器后,将这个python文件复制出来,然后删除临时容器。
#退出容器
exit
# 复制文件
mkdir -p /home/keen/docker/epic/
docker cp epicFreeGame:/epicgames_claimer.py /home/keen/docker/epic/epicgames_claimer.py
docker cp epicFreeGame:/main.py /home/keen/docker/epic/main.py
docker cp epicFreeGame:/requirements.txt /home/keen/docker/epic/requirements.txt
# 停止并销毁临时容器
docker stop epicFreeGame && docker rm epicFreeGame
仔细查看代码后,没有什么明显的后门,那就姑且一用。
docker run \
-d \
--restart=always \
-e PYTHONUNBUFFERED=0 \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Shanghai \
-e RUN_AT=09:27 \
--name epicFreeGame \
-v /home/keen/docker/epic/User_Data:/User_Data \
-v /home/keen/docker/epic/main.py:/main.py \
-v /home/keen/docker/epic/epicgames_claimer.py:/epicgames_claimer.py \
-v /home/keen/docker/epic/requirements.txt:/requirements.txt \
luminoleon/epicgames-claimer \
-u qq邮箱 \
-p 密码
运行之后,还会新增一个截图,可以拿出来看看。
docker cp epicFreeGame:/screenshot.png /home/keen/docker/epic/screenshot.png
是没有领取成功的意思么?不知道诶……,成功领取到了!
日志持久化和修改容器映射
没有办法看到日志的嘛?全局搜索后也没找到,仔细查看了epicgames_claimer.py
文件之后,发现了就是使用print
函数打印到命令行了,头大,干脆就小小的修改一下好了。
先进去容器,新建一个日志文件
docker exec -it epicFreeGame /bin/bash
touch /tmp/keen.log
接着修改脚本内容:
f = open("./tmp/keen.log", 'w+')
def log(text: str, level: str = "info") -> None:
localtime = time.asctime(time.localtime(time.time()))
if level == "info":
print("[{}] {}".format(localtime, text), file=f)
elif level == "warning":
print("\033[33m[{}] Warning: {}\033[0m".format(localtime, text), file=f)
elif level == "error":
print("\033[31m[{}] Error: {}\033[0m".format(localtime, text), file=f)
不要忘记将该容器内新增一个文件映射,修改对应容器的
# 默认容器的配置文件/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
/var/lib/docker/containers/2f532f52c833/hostconfig.json
修改其中的
"Binds": ["/home/keen/docker/epic/User_Data:/User_Data", "/home/keen/docker/epic/main.py:/main.py", "/home/keen/docker/epic/keen.log:/tmp/keen.log", "/home/keen/docker/epic/epicgames_claimer.py:/epicgames_claimer.py", "/home/keen/docker/epic/requirements.txt:/requirements.txt"],
到这里算是完成了,接着关掉并且重启该容器即可。
docker stop epicFreeGame && docker start epicFreeGame
感谢
感谢现在的好奇,为了能成为更好的自己。
谨以此文献给以前贫穷的自己,还有现在的穷鬼。/捂脸痛哭