No description
Find a file
Ralf Vogler 21c13ad4d6 fix #14
`count` and `click` should use the same (button) locator
2022-04-21 20:37:10 +02:00
docker feat: use novnc, fix Thank you for buying timeout 2022-04-09 14:50:42 +07:00
.dockerignore fix: add screenshots to dockerignore 2022-04-01 02:00:49 +07:00
.gitignore epic-games: catch timeout and save screenshot of hcaptcha 2022-02-02 12:53:12 +01:00
Dockerfile feat: use novnc, fix Thank you for buying timeout 2022-04-09 14:50:42 +07:00
epic-games.js fix #14 2022-04-21 20:37:10 +02:00
jsconfig.json upgrade to ES6 modules and top-level await, add jsconfig.json with es2022 2022-02-24 18:27:25 +01:00
package-lock.json fix: reduce size, fix signin redirect 2022-04-01 01:47:48 +07:00
package.json feat: dockerize, fix sign in loop 2022-03-31 03:06:01 +07:00
prime-gaming.js prime-gaming: removing Headless from userAgent not required, works headless 2022-03-31 19:56:02 +02:00
README.md readme: prime-gaming works headless, docker for epic-games, see #11 2022-03-31 20:10:29 +02:00
util.js upgrade to ES6 modules and top-level await, add jsconfig.json with es2022 2022-02-24 18:27:25 +01:00

free-games-claimer

Claims free games on

Setup

... should be the same on Windows/macOS/Linux:

  1. Install Node.js
  2. Clone/download this repository and cd into it in a terminal
  3. Run npm install && npx playwright install chromium

This downloads Chromium (343 MB) to a cache in home (doc).

Usage

Both scripts start an automated Chromium instance, either with the browser GUI shown or hidden (headless mode).

Login has to be done in the browser. It's hard to automate since you usually need to enter some OTP (but you can select 'remember this device'). After login, the script will just continue, but you can also restart it.

If something goes wrong, use PWDEBUG=1 node ... to inspect.

Epic Games Store

Run node epic-games

Does not run headless, but can be run quasi-headless inside a Docker container (see below).

They detect headless mode (despite stealth plugin) and it gets stuck with a captcha challenge (issue).

Amazon Prime Gaming

Run node prime-gaming

Runs headless. Run node prime-gaming show to show the GUI (to login).

Claiming the Amazon Games works, external Epic Games also work if the account is linked. Keys for Origin (and GOG?) should be printed to the console and need to be redeemed manually at the moment (issue). Other stores not tested.

Docker

See https://github.com/vogler/free-games-claimer/pull/11 (TODO).

Run periodically

Epic Games releases one (sometimes more) free game every week, but around christmas every day. Prime Gaming has new games every month.

It is save to run both scripts every day. Since they are not running headless, it makes sense to run them at a time or on a machine that you are not actively using at that point. You could run them in a virtual machine, on a server, or you wake your PC at night to do it.

History/DevLog

Click to expand

Tried epicgames-freebies-claimer, but does not work anymore since epicgames introduced hcaptcha (see issue).

Played around with puppeteer before, now trying newer https://playwright.dev which is pretty similar. Playwright Inspector and codegen to generate scripts are nice, but failed to generate the right code for clicking a button in an iframe.

Added main.spec.ts which was the test script generated by npx playwright codegen with manual fix for clicking buttons in the created iframe. Can be executed by npx playwright test. The test runner has options --debug and --timeout and can execute typescript which is nice. However, this only worked up to the button 'I Agree', and then showed an hcaptcha.

Added main.captcha.js which uses beta of playwright-extra@next and @extra/recaptcha@next (from comment on puppeteer-extra). However, playwright-extra seems to be old and missing :has-text selector (fixed here) and page.frameLocator, so the script did not run without adjustments. Also, solving via 2captcha is a paid service which takes time and may be unreliable.

Added main.stealth.js which uses the stealth plugin without playwright-extra wrapper but up-to-date playwright (from comment). The listed evasions are enough to not show an hcaptcha. Script claimed game successfully in non-headless mode.

Removed main.captcha.js. Using Playwright Test (main.spec.ts) instead of Library (main.stealth.js) has the advantage of free CLI like --debug and --timeout.

Button selectors should preferably use text in order to be more stable against changes in the DOM.

Renamed repository from epicgames-claimer to free-games-claimer since a script for Amazon Prime Gaming was also added. Removed all old scripts in favor of just epic-games.js and prime-gaming.js.

epic games: headless mode gets hcaptcha challenge. More details/references in issue.