Récupérez automatiquement vos jeux gratuits
Epic, Steam, GOG, Prime Gaming : j'en avais marre de cliquer partout. J'ai fait un outil Docker qui récupère les jeux gratuits tout seul, clés comprises.
Tous les mois, Epic, Steam, GOG et Prime Gaming offrent des jeux. Et tous les mois, j’en oublie la moitié. J’ai fini par écrire un truc qui va les chercher à ma place, les clés comprises.
Ça a commencé par une news sur GOG
Il y a quelque temps, j’ai vu passer la news : GOG allait sortir une version native Linux de GOG Galaxy. J’étais content, et dans ma tête ça cogite. Je me dis tiens, je vais aller voir les jeux gratos sur Prime Gaming.
Sauf que ça a changé de nom, c’est rangé ailleurs, bref c’est le bordel. Je ne retrouve plus mes jeux, j’en ai marre.
Et là je commence à me demander combien de jeux Epic j’ai loupés. Combien de jeux Prime aussi. Je me souviens que The Witcher a été offert un jour, un jeu que j’ai toujours voulu faire. Enfin je suppose, en fait j’en sais rien : je n’y ai jamais joué, alors que j’ai lu les bouquins.
10 000 clics pour rien
Récupérer ses jeux gratuits, c’est une perte de temps. Quatre sites, quatre connexions, cliquer, valider, recommencer. C’est long, c’est pour rien, et de toute façon tu en oublies tout le temps.
Entre-temps, au taf, on m’a fait faire les tests end to end de l’appli. En gros, des tests où le navigateur se pilote tout seul pour vérifier que l’interface marche. Et là, le déclic : ça suffit, on va automatiser tout ça.
claim-auto : tu branches tes comptes, il fait le reste
Ça a donné claim-game-auto. Tu connectes tes comptes Epic, Steam, GOG et Prime Gaming une bonne fois, il analyse les jeux gratuits du moment et les ajoute directement dans tes collections. Avec leur clé quand il y en a une. Zéro clic, ou presque.
Il tourne deux fois par jour par défaut, mais la planification se règle. Le reste du temps, tu ouvres la page quand tu veux voir ce qui est tombé.

Le « ou presque », c’est les captchas
Pour en arriver là, j’ai tranché deux choses.
La première : la connexion n’est pas en full API. L’outil lance de vrais navigateurs, dans des environnements virtuels cachés, et clique comme le ferait un humain. C’est ce qui permet de couvrir quatre boutiques qui n’ont aucune envie qu’on automatise quoi que ce soit. Et forcément, à un moment, un anti-captcha se réveille.
La deuxième découle de la première : quand un captcha est détecté, l’interface te propose d’ouvrir une fenêtre VNC, du contrôle à distance, sur ce navigateur caché. Mais dans une page web. Oui, un navigateur dans ton navigateur, lol. Tu résous le truc à la main, tu cliques sur « J’ai fini », le VNC se coupe et tout repasse en headless.

C’est le même écran qui sert pour les connexions initiales, mot de passe et 2FA compris. Une fois le profil enregistré, tu n’y reviens plus. Et il récupère même tes clés GOG et Legacy Games tout seul.
Une notif quand il a besoin de toi
Par-dessus ça, il peut te prévenir. Quand un captcha bloque, il t’envoie une notification sur le canal que tu veux : Discord, Telegram, Slack, ntfy, un webhook maison, un mail, ou même un SMS si tu es chez Free. Tu cliques sur le lien reçu et ça t’ouvre directement le contrôle à distance sur le navigateur coincé, celui de juste au-dessus. Tu règles le captcha, et la réclamation repart toute seule derrière.
Et si vraiment ça coince, l’interface te donne les liens directs pour claim à la main, à l’ancienne. Comme ça, même si un problème persiste, ça reste gérable. 😀
L’installation, c’est un docker compose
Rien à cloner, rien à compiler : l’image est publiée sur Docker Hub. Tu fais un compose, ou tu le colles direct dans Portainer (va voir l’article), tu verras c’est hyper simple.
services:
claim-auto:
image: smeagolworms4/claim-game-auto:latest
container_name: claim-auto
restart: unless-stopped
stop_grace_period: 45s
user: "${PUID:-1000}:${PGID:-1000}"
env_file:
- .env
environment:
HOME: /data/home
ports:
- "${WEB_PORT_HOST:-8080}:8080"
volumes:
- ./data:/data
shm_size: "1gb"
Tu lances, tu ouvres 127.0.0.1:8080, et tu connectes tes boutiques une par une. Il y a même une image pour Raspberry Pi.
Si tu l’exposes sur le web, mets un mot de passe
Attention à ce point, il est important : cette interface donne accès à tes comptes de jeu. Quelqu’un qui l’ouvre est connecté à ton Steam et à ton Epic. Donc si tu la sors de chez toi, tu remplis WEB_USER et WEB_PASSWORD, et tu ne publies pas les ports 6080 et 5900 : le VNC passe déjà par l’interface web, protégé par la même authentification.
Pour le nom de domaine, Duck DNS fait très bien l’affaire. Derrière, il te faut un reverse proxy pour gérer le certificat et l’aiguillage. Chez moi c’est Nginx Proxy Manager, je n’ai pas encore fait l’article dessus, promis il arrive.
C’est fait main, et j’attends vos retours
Je préfère être clair : c’est fait main et peu testé, c’est loin d’être parfait. Les quatre boutiques changent leurs pages quand elles veulent et leurs protections aussi, et régler ce genre de chose est assez complexe. Claudio m’a déjà bien aidé, mais il reste sûrement plein de cas que je n’ai pas vus.
Donc n’hésitez pas si vous avez des soucis, et surtout si vous avez des solutions. Les correctifs et les ajustements sont les bienvenus.
Moi, je voulais surtout tester. Pour le moment ça marche. Peut-être que ça passera plus dans six mois, on verra. Ça ne m’a pas coûté trop de temps à faire, donc à voir. J’attends vos retours.
Image d’en-tête générée par IA.
SmeagolWorms4
Commentaires