Open Freekers opened 4 years ago
Is the account email verified?
Yes, the account email is verified.
Without changing anything, it claimed the game today just fine on the second account. Here's the log for comparison in case you need it :) Thanks!
[2020-06-05 17:34:00.253 +0000] INFO (24 on 65888ce00991): Checking free games for <REDACTED>
[2020-06-05 17:34:00.260 +0000] DEBUG (24 on 65888ce00991): Setting SID
[2020-06-05 17:34:00.261 +0000] DEBUG (24 on 65888ce00991): Refreshing CSRF
[2020-06-05 17:34:00.261 +0000] TRACE (24 on 65888ce00991): CSRF request
url: "https://www.epicgames.com/id/api/csrf"
[2020-06-05 17:34:00.823 +0000] TRACE (24 on 65888ce00991): Redirect request
params: {
"clientId": "<REDACTED>",
"redirectUrl": "https://www.epicgames.com/store/en-US/"
}
url: "https://www.epicgames.com/id/api/redirect"
[2020-06-05 17:34:01.300 +0000] TRACE (24 on 65888ce00991): Set SID request
params: {
"sid": "<REDACTED>"
}
url: "https://www.unrealengine.com/id/api/set-sid"
[2020-06-05 17:34:01.836 +0000] INFO (24 on 65888ce00991): Successfully refreshed login
[2020-06-05 17:34:01.836 +0000] TRACE (24 on 65888ce00991): Request store homepage
url: "https://www.epicgames.com/store/en-US/"
[2020-06-05 17:34:02.741 +0000] DEBUG (24 on 65888ce00991): Getting current free games list
[2020-06-05 17:34:02.742 +0000] TRACE (24 on 65888ce00991): Getting free games list
url: "https://store-site-backend-static.ak.epicgames.com/freeGamesPromotions"
params: {
"locale": "en",
"country": "US",
"allowCountries": "US"
}
[2020-06-05 17:34:03.065 +0000] INFO (24 on 65888ce00991): Available free games
availableGames: [
"Overcooked"
]
[2020-06-05 17:34:03.066 +0000] DEBUG (24 on 65888ce00991): Mapping IDs to offer
[2020-06-05 17:34:03.066 +0000] TRACE (24 on 65888ce00991): Fetching updated IDs
url: "https://store-content.ak.epicgames.com/api/en-US/content/products/overcooked"
[2020-06-05 17:34:03.175 +0000] DEBUG (24 on 65888ce00991): Checking ownership on available games
[2020-06-05 17:34:03.175 +0000] DEBUG (24 on 65888ce00991): Getting product info
linkedOfferNs: "4561b40e52584ac2bcf34bbd5c401480"
linkedOfferId: "e9428ad618aa45f4b3371b8c8c4f9de9"
[2020-06-05 17:34:03.176 +0000] TRACE (24 on 65888ce00991): Posting for offer entitlement
data: {
"query": "query launcherQuery($namespace:String!, $offerId:String!) {\n Launcher {\n entitledOfferItems(namespace: $namespace, offerId: $offerId) {\n namespace\n offerId\n entitledToAllItemsInOffer\n entitledToAnyItemInOffer\n }\n }\n }",
"variables": {
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"offerId": "e9428ad618aa45f4b3371b8c8c4f9de9"
}
}
url: "https://www.epicgames.com/store/backend/graphql-proxy"
[2020-06-05 17:34:03.556 +0000] INFO (24 on 65888ce00991): Unpurchased free games
purchasableGames: [
"Overcooked"
]
[2020-06-05 17:34:03.557 +0000] INFO (24 on 65888ce00991): Purchasing Overcooked
[2020-06-05 17:34:03.557 +0000] TRACE (24 on 65888ce00991): Request for purchase token
searchParams: {
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"offers": "e9428ad618aa45f4b3371b8c8c4f9de9"
}
url: "https://www.epicgames.com/store/purchase"
[2020-06-05 17:34:04.665 +0000] DEBUG (24 on 65888ce00991): purchaseToken
purchaseToken: "<REDACTED>"
[2020-06-05 17:34:04.666 +0000] TRACE (24 on 65888ce00991): Order preview request
body: {
"useDefault": true,
"setDefault": false,
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"country": null,
"countryName": null,
"orderId": null,
"orderComplete": null,
"orderError": null,
"orderPending": null,
"offers": [
"e9428ad618aa45f4b3371b8c8c4f9de9"
],
"offerPrice": ""
}
url: "https://payment-website-pci.ol.epicgames.com/purchase/order-preview"
[2020-06-05 17:34:05.337 +0000] DEBUG (24 on 65888ce00991): Order preview response
orderPreviewResponse: {
"affiliation": null,
"catalogResponse": {
"currencySymbolPlacement": "LEFT",
"code": "NL",
"displayName": "NETHERLANDS",
"ratingSystem": "PEGI",
"embargoed": false,
"sellerOfRecord": "EPIC_INT",
"vatChargeRate": 23,
"vatPercentage": 21,
"defaultCurrency": "EUR",
"vatIncluded": true,
"region": "EURO",
"sellerOfRecordName": "Epic Games International S.à r.l.",
"paymentCurrency": "EUR"
},
"country": "NL",
"countryName": "Netherlands",
"message": null,
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"offers": [
"e9428ad618aa45f4b3371b8c8c4f9de9"
],
"orderComplete": false,
"orderError": false,
"orderId": null,
"orderPending": false,
"orderResponse": {
"orderType": "PURCHASE",
"symbol": "€",
"country": "NL",
"agentUserName": "anonymous",
"toUSDExchangeRate": 1.133790841792956,
"totalPrice": 0,
"accountIpCountry": "NL",
"formattedTotalPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"formattedConvenienceFee": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"paymentCurrencySymbol": "€",
"orderStatus": "PREVIEW",
"epicAccountId": "<REDACTED>",
"salesChannel": "epic-store-web-purchase",
"formattedPresentmentAmount": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"canQuickPurchase": true,
"formattedBillingPaymentAmount": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"taxStatus": "NOT_APPLICABLE",
"totalTax": 0,
"isFree": true,
"coupons": [],
"walletPaymentAmount": 0,
"totalDiscounted": 0,
"useSplitPayment": false,
"currency": "EUR",
"formattedTotalTax": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"rewardVoucher": null,
"fraudScore": 0,
"lastModifiedDate": "2020-06-05T17:34:05.252+0000",
"paymentCurrencyCode": "EUR",
"paymentCurrencyAmount": 0,
"accountIpAddress": "<REDACTED>",
"vat": 0,
"batchJobFailedRetryCount": 0,
"lineOffers": [
{
"totalPrice": 0,
"formattedTotalPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"entitlementSource": "AppEpicgamesCom",
"sellerName": "Team17 Digital Ltd",
"refundedRevenueWithoutTax": 0,
"revenueWithoutTax": 0,
"title": "Overcooked",
"formattedBasePrice": {
"amount": "13.99",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"offerType": "BASE_GAME",
"basePayoutCurrencyCode": "USD",
"sellerId": "o-uvtztrtfjdn3xgrwyhbuwwb5z42mbv",
"formattedDiscountedPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"refundedBasePayoutPrice": 0,
"remainingDiscountPrice": 0,
"refundedConvenienceFee": 0,
"refundedTax": 0,
"initiatedBy": "SELLER",
"basePrice": 1399,
"formattedBasePayoutPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"unitPrice": 0,
"refundedDiscountPrice": 0,
"quantity": 1,
"vat": 0,
"formattedVoucherPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"refundedQuantity": 0,
"shareRate": 0,
"shareRateByDeveloper": 0,
"voucherDiscount": 0,
"namespaceDisplayName": "Overcooked",
"convenienceFee": 0,
"discountedPrice": 0,
"formattedTaxPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"formattedUnitPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"offerId": "e9428ad618aa45f4b3371b8c8c4f9de9",
"taxPrice": 0,
"basePayoutPrice": 0,
"roleNames": []
}
],
"merchantGroup": "EGS_MKT",
"creationDate": "2020-06-05T17:34:05.252+0000",
"formattedWalletPaymentAmount": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"convenienceFee": 0,
"identityId": "<REDACTED>",
"fraud": false,
"billingPaymentAmount": 0,
"vatIncluded": true,
"paymentCurrencyExchangeRate": 1,
"formattedTotalDiscounted": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"canSplitPayment": false
},
"paypalError": null,
"showCurrencyChangeMessage": false,
"syncToken": "<REDACTED>",
"voucherList": null
}
[2020-06-05 17:34:05.338 +0000] TRACE (24 on 65888ce00991): Confirm order request
body: {
"useDefault": true,
"setDefault": false,
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"country": "NL",
"countryName": "Netherlands",
"orderId": null,
"orderComplete": false,
"orderError": false,
"orderPending": false,
"offers": [
"e9428ad618aa45f4b3371b8c8c4f9de9"
],
"includeAccountBalance": false,
"totalAmount": 0,
"affiliateId": "",
"creatorSource": "",
"threeDSToken": "",
"voucherCode": null,
"syncToken": "<REDACTED>",
"isFreeOrder": false
}
url: "https://payment-website-pci.ol.epicgames.com/purchase/confirm-order"
[2020-06-05 17:34:05.727 +0000] DEBUG (24 on 65888ce00991): confirm order response
confirmOrderResponse: {
"captchaResult": "CAPTCHA",
"syncToken": "<REDACTED>",
"errorCode": "errors.com.epicgames.purchase.purchase.captcha.challenge"
}
[2020-06-05 17:34:05.727 +0000] DEBUG (24 on 65888ce00991): Captcha required
[2020-06-05 17:34:05.989 +0000] TRACE (24 on 65888ce00991): Requesting initial captcha page
url: "https://epic-games-api.arkoselabs.com/fc/api/nojs/?pkey=B73XXXXXXXXXXXXXXB&gametype=audio"
[2020-06-05 17:34:06.685 +0000] TRACE (24 on 65888ce00991): Requesting audio file
url: "https://epic-games-api.arkoselabs.com/fc/get_audio/?session_token=7XXXXXXXXXXXX605&analytics_tier=40&r=eu-west-1&game=0&language=en&d=1"
[2020-06-05 17:34:08.578 +0000] DEBUG (24 on 65888ce00991): Did not transcribe enough digits. Retrying
[2020-06-05 17:34:08.710 +0000] TRACE (24 on 65888ce00991): Requesting initial captcha page
url: "https://epic-games-api.arkoselabs.com/fc/api/nojs/?pkey=B73BD16E-3C8E-9082-F9C7-FA780FF2E68B&gametype=audio"
[2020-06-05 17:34:09.195 +0000] TRACE (24 on 65888ce00991): Requesting audio file
url: "https://epic-games-api.arkoselabs.com/fc/get_audio/?session_token=4XXXXXXXXXXXXX&analytics_tier=40&r=eu-west-1&game=0&language=en&d=1"
[2020-06-05 17:34:11.098 +0000] DEBUG (24 on 65888ce00991): Did not transcribe enough digits. Retrying
[2020-06-05 17:34:11.201 +0000] TRACE (24 on 65888ce00991): Requesting initial captcha page
url: "https://epic-games-api.arkoselabs.com/fc/api/nojs/?pkey=B73BXXXXXXXXXXXXXXXX8B&gametype=audio"
[2020-06-05 17:34:11.780 +0000] TRACE (24 on 65888ce00991): Requesting audio file
url: "https://epic-games-api.arkoselabs.com/fc/get_audio/?session_token=206XXXXXXXXXXXXXXXX69205&analytics_tier=40&r=eu-west-1&game=0&language=en&d=1"
[2020-06-05 17:34:13.609 +0000] DEBUG (24 on 65888ce00991): Guessing captcha
digitString: "2533333"
[2020-06-05 17:34:13.610 +0000] TRACE (24 on 65888ce00991): Captcha POST request
form: {
"fc-game[session_token]": "206XXXXXXXXXXXXXXXXX9205",
"fc-game[data]": "{\"ct\":\"SHXAUPaIxQKe+XXXXXXXXXXXXXXXXXXXXXXXXXXXxx\\/Ww\",\"iv\":\"edeXXXXXXXXXXXXXXXXXXX3bef7efc7eeb\",\"s\":\"38XXXXXX140d\"}",
"fc-game[audio_type]": 2,
"fc-game[audio_guess]": "2533333"
}
url: "https://epic-games-api.arkoselabs.com/fc/api/nojs/?pkey=B7XXXXXXXXXXXXXXXXXXXXXXXXXXF2E68B&gametype=audio"
[2020-06-05 17:34:14.069 +0000] INFO (24 on 65888ce00991): Captcha solved successfully
[2020-06-05 17:34:14.071 +0000] DEBUG (24 on 65888ce00991): Captcha session token
verificationCode: "<REDACTED>"
[2020-06-05 17:34:14.073 +0000] TRACE (24 on 65888ce00991): Confirm order request
body: {
"captchaToken": "<REDACTED>",
"useDefault": true,
"setDefault": false,
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"country": "NL",
"countryName": "Netherlands",
"orderId": null,
"orderComplete": false,
"orderError": false,
"orderPending": false,
"offers": [
"e9428ad618aa45f4b3371b8c8c4f9de9"
],
"includeAccountBalance": false,
"totalAmount": 0,
"affiliateId": "",
"creatorSource": "",
"threeDSToken": "",
"voucherCode": null,
"syncToken": "<REDACTED>",
"isFreeOrder": false
}
url: "https://payment-website-pci.ol.epicgames.com/purchase/confirm-order"
[2020-06-05 17:34:14.858 +0000] DEBUG (24 on 65888ce00991): confirm order response
confirmOrderResponse: {
"cardinalInfo": null,
"cardinalLookUpResponse": null,
"confirmation": "<REDACTED>",
"message": null,
"orderPending": null,
"receiptResponse": {
"orderType": "PURCHASE",
"symbol": "€",
"country": "NL",
"agentUserName": "anonymous",
"toUSDExchangeRate": 1.133790841792956,
"orderId": "<REDACTED>",
"totalPrice": 0,
"accountIpCountry": "NL",
"formattedTotalPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"formattedConvenienceFee": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"paymentCurrencySymbol": "€",
"orderStatus": "COMPLETED",
"epicAccountId": "<REDACTED>",
"salesChannel": "epic-store-web-purchase",
"formattedPresentmentAmount": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"taxStatus": "NOT_APPLICABLE",
"totalTax": 0,
"coupons": [],
"totalDiscounted": 0,
"currency": "EUR",
"formattedTotalTax": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"rewardVoucher": null,
"fraudScore": 0,
"completedAt": "2020-06-05T17:34:14.776+0000",
"comments": "Free Checkout",
"lastModifiedDate": "2020-06-05T17:34:14.776+0000",
"paymentCurrencyCode": "EUR",
"paymentCurrencyAmount": 0,
"accountIpAddress": "<REDACTED>",
"vat": 0,
"batchJobFailedRetryCount": 0,
"lineOffers": [
{
"totalPrice": 0,
"formattedTotalPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"entitlementSource": "AppEpicgamesCom",
"sellerName": "Team17 Digital Ltd",
"refundedRevenueWithoutTax": 0,
"revenueWithoutTax": 0,
"title": "Overcooked",
"formattedBasePrice": {
"amount": "13.99",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"offerType": "BASE_GAME",
"basePayoutCurrencyCode": "USD",
"sellerId": "o-uvtztrtfjdn3xgrwyhbuwwb5z42mbv",
"formattedDiscountedPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"refundedBasePayoutPrice": 0,
"remainingDiscountPrice": 0,
"refundedConvenienceFee": 0,
"refundedTax": 0,
"initiatedBy": "SELLER",
"basePrice": 1399,
"formattedBasePayoutPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"unitPrice": 0,
"refundedDiscountPrice": 0,
"quantity": 1,
"offerItems": [
{
"itemId": "407abe035be74f159ae6548e85273576",
"entitlementRevoked": false,
"entitlementId": "3b01fb5e26114a2da0ffdbfcc468b20a",
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"entitlementName": "407abe035be74f159ae6548e85273576"
}
],
"vat": 0,
"formattedVoucherPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"refundedQuantity": 0,
"shareRate": 0,
"shareRateByDeveloper": 0,
"voucherDiscount": 0,
"namespaceDisplayName": "Overcooked",
"convenienceFee": 0,
"discountedPrice": 0,
"formattedTaxPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"namespace": "4561b40e52584ac2bcf34bbd5c401480",
"formattedUnitPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"offerId": "e9428ad618aa45f4b3371b8c8c4f9de9",
"taxPrice": 0,
"basePayoutPrice": 0
}
],
"merchantGroup": "EGS_MKT",
"creationDate": "2020-06-05T17:34:14.701+0000",
"convenienceFee": 0,
"identityId": "<REDACTED>",
"fraudDecision": "APPROVE",
"fraud": false,
"vatIncluded": false,
"paymentCurrencyExchangeRate": 1,
"invoiceId": "F94459246",
"formattedTotalDiscounted": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
}
},
"syncToken": null
}
[2020-06-05 17:34:14.859 +0000] DEBUG (24 on 65888ce00991): Purchase successful
[2020-06-05 17:34:14.860 +0000] INFO (24 on 65888ce00991): Done purchasing Overcooked
I'm not really sure what's causing this. I was able to recreate the error, and I was also able to redeem it after a second try.
Here's what I can confirm it likely isn't:
I did make some improvements, though, so I'll push what I have.
I also saw this funny error message after an hour of testing on new accounts lol:
confirm order response
confirmOrderResponse: {
"captchaResult": "DECLINE",
"syncToken": "502c9bcf-4db4-416c-a3d8-8d0d8f452eff",
"message": "Your account is unable to download any more free games at this time, please wait 24 hours before trying to redeem a free game again.",
"errorCode": "errors.com.epicgames.purchase.purchase.captcha.decline"
}
Interesting findings! Thanks for figuring out what it could be :)
Lol well better an error message than an IP ban ;)
This time the Docker managed to grab the free game on first try for the second account, but failed to do so with the same HTTPError: Response code 400 (Bad Request) on the first account (which usually had no issues):
[2020-06-12 01:34:13.830 +0000] INFO (25 on 38ced4158ffd): Checking free games for XXXXXXXXXXXXXXXXXXXXXXXXXX
[2020-06-12 01:34:13.849 +0000] DEBUG (25 on 38ced4158ffd): Setting SID
[2020-06-12 01:34:13.850 +0000] DEBUG (25 on 38ced4158ffd): Refreshing CSRF
[2020-06-12 01:34:13.851 +0000] TRACE (25 on 38ced4158ffd): CSRF request
url: "https://www.epicgames.com/id/api/csrf"
[2020-06-12 01:34:14.819 +0000] TRACE (25 on 38ced4158ffd): Redirect request
params: {
"clientId": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"redirectUrl": "https://www.epicgames.com/store/en-US/"
}
url: "https://www.epicgames.com/id/api/redirect"
[2020-06-12 01:34:15.315 +0000] TRACE (25 on 38ced4158ffd): Set SID request
params: {
"sid": "XXXXXXXXXXXXXXXXXXXXXXXXXX"
}
url: "https://www.unrealengine.com/id/api/set-sid"
[2020-06-12 01:34:15.841 +0000] INFO (25 on 38ced4158ffd): Successfully refreshed login
[2020-06-12 01:34:15.841 +0000] TRACE (25 on 38ced4158ffd): Request store homepage
url: "https://www.epicgames.com/store/en-US/"
[2020-06-12 01:34:16.915 +0000] DEBUG (25 on 38ced4158ffd): Getting current free games list
[2020-06-12 01:34:16.916 +0000] TRACE (25 on 38ced4158ffd): Getting free games list
url: "https://store-site-backend-static.ak.epicgames.com/freeGamesPromotions"
params: {
"locale": "en",
"country": "US",
"allowCountries": "US"
}
[2020-06-12 01:34:16.995 +0000] INFO (25 on 38ced4158ffd): Available free games
availableGames: [
"SAMURAI SHODOWN NEOGEO COLLECTION",
"ARK: Survival Evolved"
]
[2020-06-12 01:34:17.001 +0000] DEBUG (25 on 38ced4158ffd): Mapping IDs to offer
[2020-06-12 01:34:17.002 +0000] TRACE (25 on 38ced4158ffd): Fetching updated IDs
url: "https://store-content.ak.epicgames.com/api/en-US/content/products/samurai-shodown-neogeo-collection"
[2020-06-12 01:34:17.006 +0000] TRACE (25 on 38ced4158ffd): Fetching updated IDs
url: "https://store-content.ak.epicgames.com/api/en-US/content/products/ark"
[2020-06-12 01:34:17.102 +0000] DEBUG (25 on 38ced4158ffd): Checking ownership on available games
[2020-06-12 01:34:17.105 +0000] DEBUG (25 on 38ced4158ffd): Getting product info
linkedOfferNs: "3e84a6d0684b4f7593e6bf88bee0cbaf"
linkedOfferId: "b3678744f16842debd1f2d57fbe12e9c"
[2020-06-12 01:34:17.107 +0000] TRACE (25 on 38ced4158ffd): Posting for offer entitlement
data: {
"query": "query launcherQuery($namespace:String!, $offerId:String!) {\n Launcher {\n entitledOfferItems(namespace: $namespace, offerId: $offerId) {\n namespace\n offerId\n entitledToAllItemsInOffer\n entitledToAnyItemInOffer\n }\n }\n }",
"variables": {
"namespace": "3e84a6d0684b4f7593e6bf88bee0cbaf",
"offerId": "b3678744f16842debd1f2d57fbe12e9c"
}
}
url: "https://www.epicgames.com/store/backend/graphql-proxy"
[2020-06-12 01:34:17.110 +0000] DEBUG (25 on 38ced4158ffd): Getting product info
linkedOfferNs: "ark"
linkedOfferId: "16b7c8509ea8427898981145d244316c"
[2020-06-12 01:34:17.111 +0000] TRACE (25 on 38ced4158ffd): Posting for offer entitlement
data: {
"query": "query launcherQuery($namespace:String!, $offerId:String!) {\n Launcher {\n entitledOfferItems(namespace: $namespace, offerId: $offerId) {\n namespace\n offerId\n entitledToAllItemsInOffer\n entitledToAnyItemInOffer\n }\n }\n }",
"variables": {
"namespace": "ark",
"offerId": "16b7c8509ea8427898981145d244316c"
}
}
url: "https://www.epicgames.com/store/backend/graphql-proxy"
[2020-06-12 01:34:17.537 +0000] INFO (25 on 38ced4158ffd): Unpurchased free games
purchasableGames: [
"SAMURAI SHODOWN NEOGEO COLLECTION",
"ARK: Survival Evolved"
]
[2020-06-12 01:34:17.538 +0000] INFO (25 on 38ced4158ffd): Purchasing SAMURAI SHODOWN NEOGEO COLLECTION
[2020-06-12 01:34:17.539 +0000] TRACE (25 on 38ced4158ffd): Request for purchase token
searchParams: {
"namespace": "3e84a6d0684b4f7593e6bf88bee0cbaf",
"offers": "b3678744f16842debd1f2d57fbe12e9c"
}
url: "https://www.epicgames.com/store/purchase"
[2020-06-12 01:34:18.768 +0000] DEBUG (25 on 38ced4158ffd): purchaseToken
purchaseToken: "XXXXXXXXXXXXXXXXXXXXXXXXXX"
[2020-06-12 01:34:18.769 +0000] TRACE (25 on 38ced4158ffd): Order preview request
body: {
"useDefault": true,
"setDefault": false,
"namespace": "3e84a6d0684b4f7593e6bf88bee0cbaf",
"country": null,
"countryName": null,
"orderId": null,
"orderComplete": null,
"orderError": null,
"orderPending": null,
"offers": [
"b3678744f16842debd1f2d57fbe12e9c"
],
"offerPrice": ""
}
url: "https://payment-website-pci.ol.epicgames.com/purchase/order-preview"
[2020-06-12 01:34:19.354 +0000] DEBUG (25 on 38ced4158ffd): Order preview response
orderPreviewResponse: {
"affiliation": null,
"catalogResponse": {
"currencySymbolPlacement": "LEFT",
"code": "NL",
"displayName": "NETHERLANDS",
"ratingSystem": "PEGI",
"embargoed": false,
"sellerOfRecord": "EPIC_INT",
"vatChargeRate": 23,
"vatPercentage": 21,
"defaultCurrency": "EUR",
"vatIncluded": true,
"region": "EURO",
"sellerOfRecordName": "Epic Games International S.à r.l.",
"paymentCurrency": "EUR"
},
"country": "NL",
"countryName": "Netherlands",
"message": null,
"namespace": "3e84a6d0684b4f7593e6bf88bee0cbaf",
"offers": [
"b3678744f16842debd1f2d57fbe12e9c"
],
"orderComplete": false,
"orderError": false,
"orderId": null,
"orderPending": false,
"orderResponse": {
"orderType": "PURCHASE",
"symbol": "€",
"country": "NL",
"agentUserName": "anonymous",
"toUSDExchangeRate": 1.1288726186706002,
"totalPrice": 0,
"accountIpCountry": "NL",
"formattedTotalPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"formattedConvenienceFee": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"paymentCurrencySymbol": "€",
"orderStatus": "PREVIEW",
"epicAccountId": "1f40b9eb3a0e461a934037ea37229c97",
"salesChannel": "epic-store-web-purchase",
"formattedPresentmentAmount": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"canQuickPurchase": true,
"formattedBillingPaymentAmount": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"taxStatus": "NOT_APPLICABLE",
"totalTax": 0,
"isFree": true,
"coupons": [],
"walletPaymentAmount": 0,
"totalDiscounted": 0,
"useSplitPayment": false,
"currency": "EUR",
"formattedTotalTax": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"rewardVoucher": null,
"fraudScore": 0,
"lastModifiedDate": "2020-06-12T01:34:19.271+0000",
"paymentCurrencyCode": "EUR",
"paymentCurrencyAmount": 0,
"accountIpAddress": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"vat": 0,
"batchJobFailedRetryCount": 0,
"lineOffers": [
{
"totalPrice": 0,
"formattedTotalPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"entitlementSource": "AppEpicgamesCom",
"sellerName": "SNK CORPORATION",
"refundedRevenueWithoutTax": 0,
"revenueWithoutTax": 0,
"title": "SAMURAI SHODOWN NEOGEO COLLECTION",
"formattedBasePrice": {
"amount": "39.99",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"offerType": "BASE_GAME",
"basePayoutCurrencyCode": "USD",
"sellerId": "o-bse2s8gp28ptrv924lby79vx66vsz6",
"formattedDiscountedPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"refundedBasePayoutPrice": 0,
"remainingDiscountPrice": 0,
"refundedConvenienceFee": 0,
"refundedTax": 0,
"initiatedBy": "SELLER",
"basePrice": 3999,
"formattedBasePayoutPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"unitPrice": 0,
"refundedDiscountPrice": 0,
"quantity": 1,
"vat": 0,
"formattedVoucherPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"refundedQuantity": 0,
"shareRate": 0,
"shareRateByDeveloper": 0,
"voucherDiscount": 0,
"namespaceDisplayName": "Sunstone",
"convenienceFee": 0,
"discountedPrice": 0,
"formattedTaxPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"namespace": "3e84a6d0684b4f7593e6bf88bee0cbaf",
"formattedUnitPrice": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"offerId": "b3678744f16842debd1f2d57fbe12e9c",
"taxPrice": 0,
"basePayoutPrice": 0,
"roleNames": []
}
],
"merchantGroup": "EGS_MKT",
"creationDate": "2020-06-12T01:34:19.271+0000",
"formattedWalletPaymentAmount": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"convenienceFee": 0,
"identityId": "1f40b9eb3a0e461a934037ea37229c97",
"fraud": false,
"billingPaymentAmount": 0,
"vatIncluded": true,
"paymentCurrencyExchangeRate": 1,
"formattedTotalDiscounted": {
"amount": "0.00",
"symbol": "€",
"placement": "f",
"decimals": 2,
"digits": 2
},
"canSplitPayment": false
},
"paypalError": null,
"showCurrencyChangeMessage": false,
"syncToken": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"voucherList": null
}
[2020-06-12 01:34:19.367 +0000] TRACE (25 on 38ced4158ffd): Confirm order request
body: {
"useDefault": true,
"setDefault": false,
"namespace": "3e84a6d0684b4f7593e6bf88bee0cbaf",
"country": "NL",
"countryName": "Netherlands",
"orderId": null,
"orderComplete": false,
"orderError": false,
"orderPending": false,
"offers": [
"b3678744f16842debd1f2d57fbe12e9c"
],
"includeAccountBalance": false,
"totalAmount": 0,
"affiliateId": "",
"creatorSource": "",
"threeDSToken": "",
"voucherCode": null,
"syncToken": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"eulaId": null,
"useDefaultBillingAccount": true,
"canQuickPurchase": true
}
url: "https://payment-website-pci.ol.epicgames.com/purchase/confirm-order"
[2020-06-12 01:34:19.761 +0000] DEBUG (25 on 38ced4158ffd): confirm order response
confirmOrderResponse: {
"captchaResult": "CAPTCHA",
"syncToken": "e8084d9b-cc01-4156-9faf-91b4ebdb87d0",
"errorCode": "errors.com.epicgames.purchase.purchase.captcha.challenge"
}
[2020-06-12 01:34:19.761 +0000] DEBUG (25 on 38ced4158ffd): Captcha required
[2020-06-12 01:34:19.993 +0000] TRACE (25 on 38ced4158ffd): Requesting initial captcha page
url: "https://epic-games-api.arkoselabs.com/fc/api/nojs/?pkey=XXXXXXXB&gametype=audio"
[2020-06-12 01:34:20.806 +0000] TRACE (25 on 38ced4158ffd): Requesting audio file
url: "https://epic-games-api.arkoselabs.com/fc/get_audio/?session_token=2XXXXXXX5&analytics_tier=40&r=eu-west-1&game=0&language=en&d=1"
[2020-06-12 01:34:23.512 +0000] DEBUG (25 on 38ced4158ffd): Did not transcribe enough digits. Retrying
[2020-06-12 01:34:23.694 +0000] TRACE (25 on 38ced4158ffd): Requesting initial captcha page
url: "https://epic-games-api.arkoselabs.com/fc/api/nojs/?pkey=BXXXXXXXX9C7-FA780FF2E68B&gametype=audio"
[2020-06-12 01:34:24.272 +0000] TRACE (25 on 38ced4158ffd): Requesting audio file
url: "https://epic-games-api.arkoselabs.com/fc/get_audio/?session_token=367XXXXXXXXX4607705&analytics_tier=40&r=eu-west-1&game=0&language=en&d=1"
[2020-06-12 01:34:26.606 +0000] DEBUG (25 on 38ced4158ffd): Guessing captcha
digitString: "1038998"
[2020-06-12 01:34:26.606 +0000] TRACE (25 on 38ced4158ffd): Captcha POST request
form: {
"fc-game[session_token]": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"fc-game[data]": "{\"ct\":\"XXXh\\/cQCg7XXXXXf5XXXXXWY\\/3JU+XXXXBXXX5x\\/9XXXXSAEZU\\/XXXXXXXExaBEve\",\"iv\":\"0ad4XXXXXb47c4\",\"s\":\"42ce395XXX017a8\"}",
"fc-game[audio_type]": 2,
"fc-game[audio_guess]": "1038998"
}
url: "https://epic-games-api.arkoselabs.com/fc/api/nojs/?pkey=B7XXXXX80FF2E68B&gametype=audio"
[2020-06-12 01:34:27.050 +0000] INFO (25 on 38ced4158ffd): Captcha solved successfully
[2020-06-12 01:34:27.054 +0000] DEBUG (25 on 38ced4158ffd): Captcha session token
verificationCode: "XXXXXXXXXXXXXXXXXXXXXXXXXX|r=eu-west-1"
[2020-06-12 01:34:27.055 +0000] TRACE (25 on 38ced4158ffd): Confirm order request
body: {
"captchaToken": "XXXXXXXXXXXXXXXXXXXXXXXXXX|r=eu-west-1",
"useDefault": true,
"setDefault": false,
"namespace": "3e84a6d0684b4f7593e6bf88bee0cbaf",
"country": "NL",
"countryName": "Netherlands",
"orderId": null,
"orderComplete": false,
"orderError": false,
"orderPending": false,
"offers": [
"b3678744f16842debd1f2d57fbe12e9c"
],
"includeAccountBalance": false,
"totalAmount": 0,
"affiliateId": "",
"creatorSource": "",
"threeDSToken": "",
"voucherCode": null,
"syncToken": "eXXXXXXXXXXXXXXX0",
"eulaId": null,
"useDefaultBillingAccount": true,
"canQuickPurchase": true
}
url: "https://payment-website-pci.ol.epicgames.com/purchase/confirm-order"
[2020-06-12 01:34:27.795 +0000] ERROR (25 on 38ced4158ffd):
error: true
message: ""
syncToken: "b0XXXXXXXXXXXXXXXX35cec"
[2020-06-12 01:34:27.796 +0000] ERROR (HTTPError/25 on 38ced4158ffd): Response code 400 (Bad Request)
HTTPError: Response code 400 (Bad Request)
at PromisableRequest.<anonymous> (/usr/app/node_modules/got/dist/source/as-promise/index.js:124:28)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
I'll wait and report if it manages to grab it during the second try, scheduled for this afternoon.
I think this may be caused by a polling action on the Epic backend to validate a captcha session ID. In https://github.com/claabs/epicgames-freegames-node/commit/48594c9a3247a5280d89a2506dccd3e3743b6df1, I added a 2 second wait after solving to maybe solve this. We'll see how it plays out over time.
From my findings, it seems like EpicGames has put a (rate)limit on the amount of accounts that can claim free games via the API from the same IP address. The bot consistently grabs the free games for one account at the scheduled time, but fails to do so for the other account at the schedule time (which is 1 hour later than the other account). The next day, it will grab the game(s) for the second account just fine at the scheduled time. The logging is the same as posted before; it always fails to grab with 400 Bad Request on the same day, but does so without issue on the second day.
So in sum; it works, even though there's a day in between grabbing the game(s) for each account, which is fine by me :)
edit: opened #143 instead
Hi there :)
The Docker claimed the current free game (Overcooked) fine on one account, but failed on a second account. The first account contains paid games as well whereas the second account only contains 'free' games. The claiming interval between the two accounts is 1 hours and 10 minutes. Both accounts use the same region.
Please find the trace level logging below:
Thank you!