Photo by Carl Raw / Unsplash

Ajouter automatiquement les jeux gratuits EpicGames à son compte

Global 30 juin 2022

EpicGames propose des jeux gratuits chaque semaine. Pas la peine de les télécharger pour en profiter, il suffit de les ajouter à son compte, en les "achetant" (à 0€ donc). Ça prend en compte la version US du site, à savoir par rapport aux dates/décalage horaire.

Charlie Laabs propose un Docker qui permet d'automatiser leur ajout à notre compte. Enfin presque automatiquement, le captcha ne pouvant plus pour l'instant être résolu automatiquement il faudra tout de même cliquer sur un lien.

Voici ce que ça donne sur le Discord d'un ami (merci Matt !)

Il faut activer le 2FA sur son compte EpicGames, il semble que ce soit requis pour acquérir certains jeux et en tous cas ça permet de se connecter automatiquement à son compte. Je ne saurais que trop vous recommander de suivre mon fabuleux tutoriel (beh oui, je m'aime :P) au sujet de 2fauth.

Dans le compte EpicGames, aller sur Mot de passe et sécurité puis activer le 2FA.

On obtient le fameux QRCode à scanner (ou la clé équivalente) et Enregistrer sous l'image du code. Copier la clé, on en aura besoin pour la configuration du Docker epicgames-freegames

Sur 2fauth, cliquer sur Nouveau et uploader l'image du QRCode

Le compte EpicGames va être créé automatiquement et générer un code à usage unique, à entrer en retour sur l'interface d'EpicGames (en bas du screen).

Il propose ensuite de sauvegarder les codes de secours qui permettront de s'affranchir du 2FA en cas de problème.

Et sous 2fauth nous avons bien maintenant notre compte EpicGames.

On peut ensuite passer à la configuration du Docker epicgames-freegames. Le Docker en lui-même est très simple à lancer puisqu'il est recommandé de passer par un fichier de configuration annexe.

docker run -d \
--name=epic \
--restart always \
-e TZ=Europe/Paris \
-e BROWSER_NAVIGATION_TIMEOUT=100000 \
-v /volume1/docker/epicgames:/usr/app/config:rw \
-p 4207:3000 \
-m 2g \
--label=com.centurylinklabs.watchtower.enable=true \
charlocharlie/epicgames-freegames:latest

Modifiez au besoin le montage de /usr/app/config où sera le fichier de configuration.
-e BROWSER_NAVIGATION_TIMEOUT=100000 sert à palier à un timeout du navigateur, -m 2g sert à limiter l'utilisation de la RAM et comme toujours j'utilise Watchtower mais vous pouvez faire sans cette ligne --label=...

J'utilise également CloudflareDDNS pour générer un sous-domaine sur Cloudflare et MàJ mon IP dynamique (fibre Orange). Evidemment, ne pas oublier de créer ensuite le reverse proxy inhérent dans Nginx Proxy Manager ou autre. Et dans ce cas n'oubliez pas d'activer le Websocket (case à cocher) sinon vous aurez une erreur ;)

Mais on peut très bien ne le faire tourner qu'avec le classique IP:port

docker run -d \
--name=epicddns \
--restart always \
-e ZONE=upandclear.org \
-e HOST=epic.upandclear.org \
-e [email protected] \
-e API=xxx \
-e PROXY=true \
-e FORCE_CREATE=true \
--label=com.centurylinklabs.watchtower.enable=true \
joshuaavalon/cloudflare-ddns

Revenons à la configuration d'epicgames-freegames, on se base sur le config.json qu'il donne en exemple. Il est a créer/déposer dans le dossier monté pour /usr/app/config

Voici le mien, avec des notifcations Discord, mon email:pwd EpicGames et la clé d'identification 2FA. On peut ajouter plusieurs outils de notification.

{
  "runOnStartup": true,
  "cronSchedule": "5 16 * * *",
  "logLevel": "info",
  "webPortalConfig": {
    "baseUrl": "https://epic.upandclear.org",
    },
  "accounts": [
    {
      "email": "email_epicgames",
      "password": "pwd_epicgames",
      "totp": "clé_2fa_epicgames"
    },
  ],
  "notifiers": [
    {
      "type": "discord",
      "webhookUrl": "https://discordapp.com/api/webhooks/xx/xxx",
    },
  ],
}

Si vous n'avez pas de domaine, remplacer https://epic.upandclear.org

"baseUrl": "IP:port_publié_du_Docker"

Le cron de la configuration lancera la requête tous les jours à 16h05. C'est la valeur par défaut, autant la modifier pour éviter le SPAM d'EpicGames tous les jours à la même heure...

Une fois le Docker lancé on reçoit une notification pour aller valider le Captcha à la main (par défaut la notif est valable 24h)

Cliquer et on tombe sur l'URL du type https://neaj.upandclear.org/?targetId=A6423E30A5626BFC0FEC26FB1A3F17BF

On complète le Captcha et le processus se déroule automatiquement.

Le jeu est bien ajouté à la bibliothèque (cette semaine c'est notamment Iratus: Lord of the dead)

Il est bien ensuite en bibliothèque et installable quand on veut.

Avec le reçu par email

Si c'est la première fois qu'on utilise ce Docker et qu'on souhaite récupérer tous les jeux gratuits de la semaine on peut soit laisser faire le cron qui relancera l'opération tous les jours à 16h soit relancer à la main le Docker pour qu'il aille de suite récupérer tous les jeux.

docker restart epic

On peut voir le déroulé des opérations dans les logs (par curiosité)

[2022-06-30 17:08:53.948 +0200] DEBUG: Launching a new browser
    user: "[email protected]"
[2022-06-30 17:08:54.110 +0200] DEBUG: Launching a new page
    user: "[email protected]"
[2022-06-30 17:08:54.439 +0200] INFO: Loading purchase page
    user: "[email protected]"
    purchaseUrl: "https://www.epicgames.com/store/purchase?highlightColor=0078f2&offers=1-5a2108f4db804040aaf44d139bd21bd1-xx&orderId&purchaseToken&showNavigation=true"
[2022-06-30 17:09:05.713 +0200] DEBUG: Clicking placeOrderButton
    user: "[email protected]"
[2022-06-30 17:09:05.923 +0200] DEBUG: Clicking euRefundAgreeButton
    user: "[email protected]"
[2022-06-30 17:09:06.912 +0200] DEBUG: Waiting for receipt
    user: "[email protected]"
[2022-06-30 17:09:08.254 +0200] DEBUG: Captcha detected
    user: "[email protected]"
[2022-06-30 17:09:08.264 +0200] INFO: Go to this URL and do something
    user: "[email protected]"
    url: "https://epic.upandclear.org/?targetId=4770BC285A86FE0E95D22BF36E4F6EBA"
[2022-06-30 17:09:53.864 +0200] INFO: Done purchasing Hood: Outlaws & Legends
    user: "[email protected]"
[2022-06-30 17:09:53.864 +0200] INFO: Purchasing Iratus: Lord of the Dead
    user: "[email protected]"
[2022-06-30 17:09:53.864 +0200] DEBUG: hcaptchaAccessibilityUrl not configured, captchas are less likely to be bypassed. Follow this guide to set it up: https://github.com/claabs/epicgames-freegames-node#hcaptcha-accessibility-cookies
[2022-06-30 17:09:53.868 +0200] DEBUG: Logging in with puppeteer
    user: "[email protected]"
[2022-06-30 17:09:53.868 +0200] DEBUG: Launching a new browser
    user: "[email protected]"
[2022-06-30 17:09:54.126 +0200] DEBUG: Launching a new page
    user: "[email protected]"
[2022-06-30 17:09:55.072 +0200] INFO: Loading purchase page
    user: "[email protected]"
    purchaseUrl: "https://www.epicgames.com/store/purchase?highlightColor=0078f2&offers=1-d250bdf072934b70ab080c6fcee77734-xx&orderId&purchaseToken&showNavigation=true"
[2022-06-30 17:10:06.392 +0200] DEBUG: Clicking placeOrderButton
    user: "[email protected]"
[2022-06-30 17:10:06.601 +0200] DEBUG: Clicking euRefundAgreeButton
    user: "[email protected]"
[2022-06-30 17:10:07.604 +0200] DEBUG: Waiting for receipt
    user: "[email protected]"
[2022-06-30 17:10:09.687 +0200] INFO: Done purchasing Iratus: Lord of the Dead
    user: "[email protected]"
[2022-06-30 17:10:09.687 +0200] DEBUG: Closing browser
    user: "[email protected]"
Run once: false
Setting cron schedule as 5 16 * * *

Mots clés