Solvedepicgames freebies claimer Error when claiming new mystery games

Outcome with error when claiming Shenmue III

Failed to claim Shenmue III (Error: Unable to acquire purchase token)

Specifications

  • epicgames-freebies-claimer Version: v1.5.7
  • Platform / OS: Debian
33 Answers

✔️Accepted Answer

Just did some debugging and I currently have a feeling that Epic blocks the access from node-epicgames-client, which is the underlying framework for this project.

When using this client to access ue-launcher-website-prod.ol.epicgames.com, Epic always returns Error 500 with We are currently doing some updates to the site., which is actually not the case - if you directly visit https://${ENDPOINT.PORTAL_ORIGIN}/purchase?showNavigation=true&namespace=${offer.namespace}&offers=${offer.id} with the same namespace and ID in any browser, the order page can be correctly shown. So Epic's servers should be fine.

I believe this requires some changes in the underlying node-epicgames-client to trick Epic. For those who are also interested in it, you can find where the purchaseToken is retrieved in lines 592 to 599 of this index.js file.

Other Answers:

Huh, I think I found the problem why server responds with 500 on our claimer, but not the browser.

Here's the actual curl to get purchaseToken for Remnant: From the Ashes, taken from the browser:

curl 'https://ue-launcher-website-prod.ol.epicgames.com/purchase?showNavigation=true&namespace=663e521f2a444199be58152fd93fa66e&offers=a0bb13a219f747f88dff4c2a50b070c0' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' \
  -H 'cookie: EPIC_BEARER_TOKEN=your_bearer_token_here;' \
  --compressed

Here's the curl in our claimer client (Authorization header is not needed):

curl 'https://ue-launcher-website-prod.ol.epicgames.com/purchase?showNavigation=true&namespace=d5241c76f178492ea1540fce45616757&offers=a0bb13a219f747f88dff4c2a50b070c0' \
  -H 'cookie: EPIC_BEARER_TOKEN=your_bearer_token_here;' \
  --compressed

Notice the diff? It's the namespace lol.

Apparently the namespace in freeGamesPromotions API is not correct.

What I did:

  • Put a breakpoint here:
    let purchased = await client.purchase(offer, 1);
  • In debug console, when it stops at that line, enter: offer.namespace = "663e521f2a444199be58152fd93fa66e"
  • Continue

Now it will respond with 200, the purchase token will load correctly.

I haven't tested fully to see if it can buy the game or not, because if I buy it, I will not have any account left to claim (lol). But I think this is the root cause, you can try it out yourself 😄

Another developer of a similar project said that epic has replaced a new order link, and the previous one seems to be unusable: luminoleon/epicgames-claimer#60 (comment)

You mean this?
luminoleon/epicgames-claimer@83d2707

This project uses a whole different approach, sadly. It uses a whole internet browser and automate user-actions. It's something I considered myself, but the approach I am currently (with just HTTP requests) using is way more lightweight and doesn't depend on the user interface.

Tried to get the game by hand, and EGS site is going nuts, can't even get the game manually, maybe this is the problem?

More Issues: