Docker系列六EPIC领游戏

前言

自动嫖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

感谢

感谢现在的好奇,为了能成为更好的自己。

谨以此文献给以前贫穷的自己,还有现在的穷鬼。/捂脸痛哭

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值