前言

Epic作为一家游戏分销商,因其“知乎聊游戏哲学、慈善流送游戏、持续给steam平台做背景板“被广大玩家所熟知。自2018年12月上线后一直定期免费送游戏,曾经送过GTA5、文明6、消逝的光芒等等大作,假设自费在其他平台购买送过的游戏,上千RMB是跑不掉的。

曾经 luminoleon/epicgames-claimer 可以帮助玩家全自动领取游戏,但随着验证力度加大,官方封号等原因,该项目已被作者删除不再可用。现在有一个替代项目可以半自动领取游戏(后文会解释为什么是半自动),避免错过游戏拍断大腿。

epicgames-freegames

本文使用charlocharlie/epicgames-freegames-node完成目标: Github | Dockerhub

为尽可能得照顾大多数NAS玩家群体,本文尝试在Unraid的基础上补充群晖的配置方法,其他系统用户请融会贯通。
因Epic不定时更新验证机制,导致该程序会在某段时间无法正常工作,请密切关注程序作者Github页!

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://服务绑定的域名

    localtunnel在符合baseUrl的情况时请保持false,仅在下列情况时

    • 无公网但需要外网访问,则baseUrl保持不变,"localtunnel": *true*

    账号配置

    totp:
    如果你在你的账户上启用了双因素认证(2FA),你需要把你的TOTP秘密作为一个环境变量加入。为了获得你的TOTP密钥,你可能需要重新进行2FA设置:

    1. 点击这里来启用2FA。
    2. 点击 "启用认证器应用程序"。
    3. 在标有 "手动输入密钥 "的部分,复制密钥。
    4. 使用你的认证器应用程序添加扫描QR码。
    5. 通过完成表格并点击激活来激活2FA。
    6. 一旦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,已有模板可以使用

      1_unraidinstall.webp

      我这里已经安装,故没有安装按钮。点击安装后,会跳转至配置界面

      1_unraidinstall2.webp

      点击应用即可启动。

    • 群晖

      点击 Docker - 映像 - 新增 - 从URL添加

      输入 https://hub.docker.com/r/charlocharlie/epicgames-freegames

      1_dsminstall1.webp

      点击新增后进入配置向导,请注意以下两个配置,其他保持默认即可

      1_dsminstall2.webp

      结束配置向导后启动。

  • 使用

    • 登录

      应用启动不久后,会在先前设置的通知渠道收到一条Login提示信息,笔者设置的Telegram,收到了如下信息

      2_login.webp

      点击 Click here ,将会打开网页
      2_hCaptcha.webp
      手动通过hCaptcha验证后登录

    • 领取游戏

      如果一切顺利,并且账号还未领取本周游戏,稍后就会在先前设置的通知渠道收到一条Purchase消息。

      2_purchase.webp

      点击 Click here ,将会打开网页手动通过hCaptcha验证后领取游戏,稍后就可以在游戏库里找到领取的游戏

至此,已经完成了这个程序的配置。在设定的时间,程序会开始领取游戏并发送验证地址,如上步骤手动通过验证领取游戏。这就是为什么是半自动领取。

常见问题

  • 通知推送的链接无法访问

    请再次阅读运行配置中baseUrl的释义,结合自身网络条件选择访问方式。

    例如有公网IP且NAS上搭建此Docker,那么需要在路由器将其从内网端口转发至外网端口

  • Docker占用内存过大

    在启动参数中添加-m 2g,以限制该容器最大可用内存至2GB

    • Unraid

      新建Dockers的模板中,高级视图 - 额外参数 - -m 2g

    • 群晖

      新建Dockers的配置向导中,常规配置 - 勾选启用资源限制 - 2048MB

结语

万恶的hCaptcha验证码导致无法全自动领取,但还是最大程度的帮助提醒以及简化领取流程。虽然游戏领了也不一定玩,但一定要有!