Connectez-vous automatiquement et recherchez les jeux gratuits disponibles sur Epic Games Store. Vous envoie un lien de paiement prérempli afin que vous puissiez finaliser le paiement après vous être connecté. Prend en charge plusieurs comptes, sessions de connexion et exécutions planifiées.
L'outil peut être configuré avec une combinaison de variables JSON et d'environnement. Le fichier de configuration prend en charge la syntaxe JSON5 (commentaires, virgules finales, etc.). Pour chaque propriété, la valeur de configuration JSON est prioritaire sur la valeur de la variable d'environnement respective.
Pour plus de détails sur chaque option, ses valeurs par défaut et la clé de variable d'environnement, consultez le site de documentation de configuration.
Le fichier de configuration est stocké dans le volume /usr/app/config
monté et peut être nommé config.json
ou config.json5
.
config.json
ou config.json5
{
"runOnStartup" : true ,
"cronSchedule" : "0 0,6,12,18 * * *" ,
"logLevel" : "info" ,
"webPortalConfig" : {
"baseUrl" : "https://epic.example.com" ,
} ,
"accounts" : [
{
"email" : "[email protected]" ,
} ,
] ,
"notifiers" : [
// You may configure as many of any notifier as needed
// Here are some examples of each type
{
"type" : "email" ,
"smtpHost" : "smtp.gmail.com" ,
"smtpPort" : 587 ,
"emailSenderAddress" : "[email protected]" ,
"emailSenderName" : "Epic Games Captchas" ,
"emailRecipientAddress" : "[email protected]" ,
"secure" : false ,
"auth" : {
"user" : "[email protected]" ,
"pass" : "abc123" ,
} ,
} ,
{
"type" : "discord" ,
"webhookUrl" : "https://discord.com/api/webhooks/123456789123456789/A-abcdefghijklmn-abcdefghijklmnopqrst12345678-abcdefghijklmnop123456" ,
// Optional list of users or roles to mention
"mentionedUsers" : [ "914360712086843432" ] ,
"mentionedRoles" : [ "734548250895319070" ] ,
} ,
{
"type" : "telegram" ,
// Optional Custom TELEGRAM server URL
"apiUrl" : "https://api.telegram.org" ,
"token" : "644739147:AAGMPo-Jz3mKRnHRTnrPEDi7jUF1vqNOD5k" ,
"chatId" : "-987654321" ,
} ,
{
"type" : "apprise" ,
"apiUrl" : "http://192.168.1.2:8000" ,
"urls" : "mailto://user:[email protected]" ,
} ,
{
"type" : "pushover" ,
"token" : "a172fyyl9gw99p2xi16tq8hnib48p2" ,
"userKey" : "uvgidym7l5ggpwu2r8i1oy6diaapll" ,
} ,
{
"type" : "gotify" ,
"apiUrl" : "https://gotify.net" ,
"token" : "SnL-wAvmfo_QT" ,
} ,
{
"type" : "homeassistant" ,
"instance" : "https://homeassistant.example.com" ,
"token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" ,
"notifyservice" : "mobile_app_smartphone_name" ,
} ,
{
"type" : "bark" ,
// your bark key
"key" : "xxxxxxxxxxxxxxxxxxxxxx" ,
// bark title, optional, default: 'epicgames-freegames'
"title" : "epicgames-freegames" ,
// bark group, optional, default: 'epicgames-freegames'
"group" : "epicgames-freegames" ,
// bark private service address, optional, default: 'https://api.day.app'
"apiUrl" : "https://api.day.app"
} ,
{
"type" : "ntfy" ,
"webhookUrl" : "https://ntfy.example.com/mytopic" ,
"priority" : "urgent" ,
"token" : "tk_mytoken"
} ,
{
"type" : "webhook" ,
//url of your webhook server
"url" : "https://webhook.site/my_uuid" ,
//Optional headers
"headers" : {
"Authentication" : "Bearer 123456"
}
} ,
] ,
}
Ce projet peut occasionnellement vous demander de vous connecter via l'authentification par code de l'appareil. La session de code d'appareil d'Epic Games expire après 10 minutes, ce projet utilise donc un serveur Web et une redirection pour éviter de vous envoyer un nouveau lien toutes les 10 minutes. Il existe deux options pour exécuter le serveur Web :
Si vous êtes familier avec l'hébergement de serveurs Web et/ou de proxys inverses, suivez ceci :
-p 81:3000
mappe le port 81 de la machine hôte au port 3000 du conteneur)webPortalConfig.baseUrl
dans la configuration Si vous n'avez pas la possibilité de porter un proxy direct/inverse sur votre réseau, vous pouvez toujours accéder au serveur Web à distance en définissant :
{
"webPortalConfig" : {
"localtunnel" : true ,
} ,
}
dans votre config.json
.
Chaque méthode de notification comporte des instructions de configuration uniques. Lisez sa documentation (méthodes de notification) sur le site de configuration pour des détails et des instructions exactes. L'exemple de configuration peut également être utile à titre d'exemple.
Étant donné que les actions de l'utilisateur ne sont pas toujours requises, les méthodes de notification et le serveur Web peuvent être testés manuellement. En gros, il vous suffit d'ajouter :
"testNotifiers" : true ,
à la racine de votre config.json
. Pour plus de détails, consultez la documentation de configuration. Remarque : pour optimiser l'utilisation de la mémoire en veille, le serveur Web ne s'exécute pas lorsque le processus n'est pas en cours d'exécution. Le serveur Web ne sera disponible que lors d'une exécution planifiée.
Cette image est disponible à la fois sur GitHub Container Registry et sur Docker Hub :
ghcr.io/claabs/epicgames-freegames-node:latest
charlocharlie/epicgames-freegames:latest
Si vous rencontrez des problèmes avec le démarrage de Chromium (se bloque lors de la connexion/notification), vous pouvez essayer l'image Debian :
ghcr.io/claabs/epicgames-freegames-node:debian
charlocharlie/epicgames-freegames:debian
Si vous utilisez une configuration JSON complète, les seuls configurables Docker restants sont le port et le volume.
La plupart des options de configuration peuvent être définies via une variable d'environnement. Recherchez la balise env
dans la documentation de configuration pour la clé de chaque option.
Si, pour une raison quelconque, vous souhaitez modifier le répertoire de configuration par défaut ou le nom du fichier de configuration, CONFIG_DIR
et CONFIG_FILE_NAME
sont disponibles comme variables d'environnement.
Port hôte | Port à conteneurs | Description |
---|---|---|
3000 | 3000 | Mappage de port sur lequel réside le serveur Web hébergeant la page de résolution de captcha |
Emplacement de l'hôte | Emplacement du conteneur | Mode | Description |
---|---|---|---|
/my/host/dir/ | /usr/app/config | rw | Emplacement du ou des fichiers de configuration et des cookies |
Il est recommandé d'ajouter -m 2g
comme paramètre docker run
pour définir une utilisation maximale de la mémoire de 2 Go. Les processus Chromium peuvent parfois s'emballer et, sans limite, votre système peut éventuellement se bloquer.
$ docker run -d -v /my/host/dir/:/usr/app/config:rw -p 3000:3000 -m 2g ghcr.io/claabs/epicgames-freegames-node:latest
Sans configuration JSON, vous ne pouvez configurer qu'un seul compte.
$ docker run -d -e TZ=America/Chicago -e [email protected] -e RUN_ON_STARTUP=true -e BASE_URL=https://example.com -e SMTP_HOST=smtp.gmail.com -e SMTP_PORT=587 -e [email protected] -e EMAIL_SENDER_NAME="Epic Games Captchas" -e [email protected] -e SMTP_SECURE=true -e [email protected] -e SMTP_PASSWORD=abc123 -v /my/host/dir/:/usr/app/config:rw -p 3000:3000 -m 2g ghcr.io/claabs/epicgames-freegames-node:latest
Si vous rencontrez des problèmes de connexion avec l'authentification par code de l'appareil, vous pouvez importer des cookies pour une session temporaire.
https://www.epicgames.com/id
et cliquez sur le bouton d'exportation : ./config
monté, créez <email_address>-cookies.json
(par exemple [email protected]
) et collez vos cookies.Si, pour une raison quelconque, vous ne souhaitez pas utiliser Docker pour exécuter cet outil, vous pouvez l'exécuter à partir des sources en clonant ce dépôt et en installant Node.js.
git clone https://github.com/claabs/epicgames-freegames-node.git
config
dans le répertoire cloné/décompressénpm i
npm run start
git pull
npm i
Dans la v5, plusieurs options ont été ajoutées ou supprimées. Les options ajoutées/supprimées ne devraient pas affecter les configurations v4 existantes, mais il faudra peut-être modifier votre config.json
pour une solution stable.
cronSchedule
: La valeur par défaut a été modifiée à toutes les six heures. Vous devez modifier votre planification cron pour qu'elle s'exécute plus souvent que toutes les 8 heures, car le jeton d'actualisation d'authentification du code de l'appareil expire après 8 heures. account.password
: les identifiants de connexion ne sont plus utilisésaccount.totp
: les identifiants de connexion ne sont plus utilisésnoHumanErrorHelp
: l'achat n'est plus automatiséhcaptchaAccessibilityUrl
: était obsolète dans la v4email
: était obsolète dans la v4, utilisez notifiers
avec "type": "email"
baseUrl
: était obsolète dans la v4, utilisez webPortalConfig.baseUrl
onlyWeekly
: était obsolète dans la v4, utilisez searchStrategy
Merci à epicgames-weekly-freegames pour l'inspiration.
Merci à EpicResearch pour la documentation qui a rendu possible l'authentification du code de l'appareil.