前言
Epic作为一家游戏分销商,因其“知乎聊游戏哲学、慈善流送游戏、持续给steam平台做背景板“被广大玩家所熟知。自2018年12月上线后一直定期免费送游戏,曾经送过GTA5、文明6、消逝的光芒等等大作,假设自费在其他平台购买送过的游戏,上千RMB是跑不掉的。
曾经 luminoleon/epicgames-claimer
可以帮助玩家全自动领取游戏,但随着验证力度加大,官方封号等原因,该项目已被作者删除不再可用。现在有一个替代项目可以半自动领取游戏(后文会解释为什么是半自动),避免错过游戏拍断大腿。
epicgames-freegames
本文使用charlocharlie/epicgames-freegames-node
完成目标: Github | Dockerhub
为尽可能得照顾大多数NAS玩家群体,本文尝试在Unraid的基础上补充群晖的配置方法,其他系统用户请融会贯通。
docker pull & run
编写配置
在拉取镜像之前,需要先将配置文件写好。配置文件是json格式,需要有分隔符,如果书写有困难的请不要随意增加删减内容或使用JSON格式化这类工具进行检查
{ // 运行配置,详见下方解释 "runOnStartup": true, "timezone": "Asia/Hong_Kong", "cronSchedule": "5 16 * * *", "logLevel": "info", "webPortalConfig": { "baseUrl": "https://epic.exmaple.com", }, "accounts": [ // 账号配置,填写你的Epic账号密码以及二步验证(TOTP) { "email": "[email protected]", "password": "abc1234", "totp": "EMNCF83ULU3K3PXPJBSWY3DPEHPK3PXPJWY3DPEHPK3YI69R39NE" } ], "notifiers": [ // 通知配置,可以配置尽可能多的通知方式作为提醒,支持Email/Telegram/Bark/Discord等 { "type": "telegram", "token": "644739147:AAGMPo-Jz3mKRnHRTnrPEDi7jUF1vqNOD5k", "chatId": "-987654321" } ] }
运行配置
runOnStartup:启动时运行一次,推荐开启,方便调试
timezone:设置时区,便于定时运行设置
cronSchedule:定时运行,具体含义可参考这里,推荐一个测试工具
logLevel:日志等级,默认为info
webPortalConfig:web界面配置,非常重要!"webPortalConfig": { "baseUrl": "https://epic.exmaple.com", "localtunnel": false },
baseUrl需要设置为你可以访问到的链接,以下举例可能的情况
- 无公网且只想要在内网访问,则填写
http://Docker所在设备IP:3000
有公网又分为以下三种
- 该Docker可以直接暴露端口至公网,则填写
http://公网IP:3000
- 该Docker无法直接暴露端口至公网,需转发(例如从NAS转发至拨号设备),则填写
http://公网IP:转发端口
- 该Docker借助Nginx这类服务转发至公网,则填写
http://服务绑定的域名
- 该Docker可以直接暴露端口至公网,则填写
localtunnel在符合baseUrl的情况时请保持false,仅在下列情况时
- 无公网但需要外网访问,则baseUrl保持不变,
"localtunnel": *true*
账号配置
totp:
如果你在你的账户上启用了双因素认证(2FA),你需要把你的TOTP秘密作为一个环境变量加入。为了获得你的TOTP密钥,你可能需要重新进行2FA设置:- 点击这里来启用2FA。
- 点击 "启用认证器应用程序"。
- 在标有 "手动输入密钥 "的部分,复制密钥。
- 使用你的认证器应用程序添加扫描QR码。
- 通过完成表格并点击激活来激活2FA。
- 一旦2FA被启用,使用你复制的密钥作为TOTP参数的值。
如果你不能用这个工具进行2FA,请尝试在你的Epic账户设置中为 "认证器应用程序 "启用MAKE PRIMARY。
多账号:
可以按照这个格式
"accounts": [ { "email": "[email protected]", "password": "abc1234", "totp": "EMNCF83ULU3K3PXPJBSWY3DPEHPK3PXPJWY3DPEHPK3YI69R39NE" }, { "email": "[email protected]", "password": "def5678", "totp": "PEHPK3PXPJWY3DPEHPK3YI69R39NEEMNCF83ULU3K3PXPJBSWY3D" } ],
通知配置
选择你习惯的通知方式即可,详见官方示例
以上是关键的配置项,更多配置请阅读文档
编写完配置后,请上传至Docker所在设备,记下保存路径,稍后需要映射至容器内。为方便教程,保存路径设置为
/mnt/user/epicgames-freegames
//docker/epicgames-freegames
- 无公网且只想要在内网访问,则填写
启动
Unraid
Unraid可以直接在应用中搜
epicgames-freegames
,已有模板可以使用我这里已经安装,故没有安装按钮。点击安装后,会跳转至配置界面
点击应用即可启动。
群晖
点击 Docker - 映像 - 新增 - 从URL添加
输入
https://hub.docker.com/r/charlocharlie/epicgames-freegames
点击新增后进入配置向导,请注意以下两个配置,其他保持默认即可
结束配置向导后启动。
使用
登录
应用启动不久后,会在先前设置的通知渠道收到一条Login提示信息,笔者设置的Telegram,收到了如下信息
点击 Click here ,将会打开网页
手动通过hCaptcha验证后登录领取游戏
如果一切顺利,并且账号还未领取本周游戏,稍后就会在先前设置的通知渠道收到一条Purchase消息。
点击 Click here ,将会打开网页手动通过hCaptcha验证后领取游戏,稍后就可以在游戏库里找到领取的游戏
至此,已经完成了这个程序的配置。在设定的时间,程序会开始领取游戏并发送验证地址,如上步骤手动通过验证领取游戏。这就是为什么是半自动领取。
常见问题
通知推送的链接无法访问
请再次阅读运行配置中baseUrl的释义,结合自身网络条件选择访问方式。
例如有公网IP且NAS上搭建此Docker,那么需要在路由器将其从内网端口转发至外网端口
Docker占用内存过大
在启动参数中添加
-m 2g
,以限制该容器最大可用内存至2GBUnraid
新建Dockers的模板中,高级视图 - 额外参数 -
-m 2g
群晖
新建Dockers的配置向导中,常规配置 - 勾选启用资源限制 - 2048MB
结语
万恶的hCaptcha验证码导致无法全自动领取,但还是最大程度的帮助提醒以及简化领取流程。虽然游戏领了也不一定玩,但一定要有!
学习了
之前用得都是邮件解决hCaptcha,有一阵子总也过不去验证就放弃了。
劳资不领了。