Changelog
Version history and release notes. For the full commit log, see GitHub releases.
v1.5.4 — Pagro restored-session cart self-heal
- Fix: restored sessions whose server-side quote was garbage-collected by Magento (typical after long idle) now auto-recover. ATC catches the
Current customer does not have an active cartresponse, callsPOST /rest/V1/carts/mineto create a fresh quote, and retries once. No extra request on the happy path.
v1.5.3 — Skatedeluxe module (CC + bank transfer + register)
- New module: skatedeluxe.com (Skatedeluxe) — DE-based skate shop with
/api2/*JSON backend. buymode — Stripe credit-card checkout via directapi.stripe.com/v1/payment_methodstokenization (no Stripe.js iframe). Card brand auto-detected from CSVcard_number.bankmode — bank-transfer (Vorkasse / moneyorder). DE addresses only.registermode — creates the account via/api2/auth(Cloudflare Turnstile solved with CapSolver) and saves the CSV address as the customer's default in one go, so subsequent buys skip the address step.- Persistent login session (24h TTL) — second buy on the same account skips login entirely.
- All-REST
/api2/*ATC + tiny Range-limited PDP scrape; no full HTML page downloads.
v1.5.2 — Pagro speedups + Saferpay PaymentPage discovery
- Confirmed Saferpay redirect endpoint:
POST /rest/V1/carts/mine/saferpay/payment/paymentpageinitializationreturns thehttps://www.saferpay.com/VT2/mpp/PaymentSelection/Index/<token>URL directly. Replaces the earlier guess-based fallback chain (REST V1 order → 5 candidate redirect endpoints → success page scrape). - All-REST-V1 buy flow — no HTML PDP fetch, no form-based ATC, no form_key cookie dedupe. Single
POST /rest/V1/carts/mine/itemswith{cartItem: {sku, qty}}does add-to-cart and surfaces OOS via Magento's 400 message. - SKU is extracted from the URL slug (
...-<digits>.html) — works for any pagro listing without per-product config. - Persistent login session (
~/.axgst/sessions/pagro_<hash>.json, ~6h TTL): subsequent buys skip the CF solve + login entirely. Cached shipping carrier/method also persists, saving theestimate-shipping-methodscall on the second+ buy. - Auto-detects card brand from
card_number(Visa / Mastercard) and selects the matchingsaferpay_visa/saferpay_mastercardmethod. - Default request timeout 30s, 4 retries with capped backoff. Connection errors print a single retry line per attempt.
v1.5.1 — Pagro module (Magento 2 + Saferpay)
- New module: pagro.at (Pagro) — Austrian Magento 2 storefront. Buy + register modes.
- End-to-end Saferpay PaymentPage checkout — bot places the order via REST V1, fetches the Saferpay hosted-page URL, posts it to the webhook for the user to complete the card payment.
- Auto-detects card brand from CSV
card_numberand selects matchingsaferpay_visa/saferpay_mastercardmethod. - Cloudflare interactive Turnstile solved via
cf_solver(nodriver + pyautogui) — auth proxies supported through a local Proxy-Authorization forwarder, no extension needed. - Global cap of 5 concurrent CF solves so a large task fleet doesn't overload a small VPS. Tasks past the limit wait their turn.
- Persistent login session (~6h TTL) — second buy skips CF solve + login entirely.
- All-REST-V1 buy flow — no HTML PDP fetch, no form_key / uenc dance, no section/load polls. Single
cartItemsPOST handles ATC + OOS detection. - OOS retry loop — Magento returns a clear "out of stock" message; bot retries at CSV
delayuntil the item is back.
v1.5.0 — Elbenwald register mode
- New
registermode for Elbenwald — pure HTTP, no browser. Posts to/account/registerwith billing address; the form's hidden reCAPTCHA v3 token is solved via CapSolver. - Removed the legacy Selenium-based register path (no more
undetected-chromedriver/ Chrome dependency for Elbenwald registration). - CapSolver fallback for FriendlyCaptcha (login / ATC) removed — only the local pure-Python BLAKE2B PoW solver from v1.4.9 is used now. CapSolver is still required for register-time reCAPTCHA v3.
v1.4.9 — local FriendlyCaptcha solver (Elbenwald)
- Elbenwald's FriendlyCaptcha is now solved locally in pure Python (~0.1-0.7s on a modern CPU) instead of through the CapSolver API (~3-5s + per-solve cost).
- CapSolver stays as a fallback in case a site rolls to FriendlyCaptcha v2 (which uses a different protocol the local solver doesn't support yet).
- No CSV / config changes needed — drop-in.
v1.4.8 — generic Queue-it pass-through module
- New module: queueit (alias
qit) — site-agnostic Queue-it solver. Paste any*.queue-it.netqueue page URL into the CSV and the bot waits in the queue, then sends the resulting pass link to the webhook. Open it in a real browser within ~1-5 min and you're past the queue. - Works for any Queue-it customer (Supreme, Adidas, Ticketmaster, public-sector portals, IPZS, …) — no per-site module needed.
- Use this when the destination site has no AxgstAIO module of its own, or when you want manual checkout. For full end-to-end automation through a queued site, prefer the per-site module (e.g. IPZS).
v1.4.7 — shop.ipzs.it (IPZS) module
- New module: shop.ipzs.it (IPZS) — Italian State Mint, numismatic & commemorative coin shop. Buy mode only — register the account manually on the site, then plug the credentials into the CSV.
- Handles Queue-it gating on hyped drops automatically (no browser).
- OOS retry loop — when Magento reports stock gone, the bot keeps retrying ATC at the CSV
delayinterval, refetching the product page each time so live restocks during a drop are picked up automatically. - PayPal Express checkout — approval URL is sent to the webhook for the user to authorise.
v1.4.6 — catchyourcards.nl module
- New module: catchyourcards.nl (CatchYourCards) — Pokémon TCG / One Piece / Lorcana store. ~3-4 s end-to-end.
testmode — runs all 8 ATC variants and writes a debug log; useful during a real Queue-Fair drop to validate which paths still pass.- Auth-required proxies supported (no Chrome auth-dialog popup).
- Checkout returns a Mollie iDEAL URL on the webhook.
v1.4.5 — Elbenwald checkout fix
- ATC line items no longer silently dropped — checkout now reliably creates the order.
- Captcha-related session loss fixed; cart no longer appears empty after captcha solve.
- Switched to PayPal Express checkout — one-shot order placement, returns the PayPal URL on the webhook.
- Cart cleared on each run start — no more stacked qty from previous attempts.
v1.4.4 — Empik monitor rewrite
- Price monitor now uses a single small GraphQL request per tick instead of fetching the full HTML page.
- ~450× less proxy bandwidth on long monitor runs.
- Auto-rotates proxies on rate-limit / ban responses instead of hammering a dead IP.
v1.4.3 — Games Island + bandwidth savings
- New module: games-island.eu (Games Island) — JTL-Shop 5 store for TCG / tabletop / board games. Register + auto-saved address + reCAPTCHA v2. Checkout via Vorkasse / bank transfer.
- Empik price monitor switched to REST + GQL only (no HTML fallback) — per-hour proxy usage on long monitor runs capped at ~2–4 MB instead of ~480 MB.
- Empik buy: stops re-fetching the product page on ATC/checkout failures (was costing tens of MB per failure); falls back to price monitoring.
- BasketballEmotion + FutbolEmotion: drop-wait loop uses HEAD requests, ~800× less bandwidth while waiting.
v1.2.1 — Clean log output
- Removed debug prints, entry banners, and PayPal URL from the console (still posted to webhooks).
- Unified print style across all modules:
Restored session/Found: <name>/Size: <x>/Successful checkout (Ns). - No functional changes.
v1.2.0 — Checkout reliability
- Refetch checkout version immediately before
place-orderto eliminateorder-token-expirederrors. - Keeps the v1.1.9 parallelizations (product + login, GQL state + payment HTML).
v1.1.9 — Parallelization
get_product+loginrun in parallel threads.GQL CHECKOUT_STATE+ payment HTML page fetched in parallel.- ~6 s faster end-to-end on Zalando checkouts.
v1.1.8 — Experimental (reverted in v1.2.0)
- Attempted to skip the 2nd
GQL CHECKOUT_STATEcall forversion. Triggeredorder-token-expiredbecause version changes after PayPal select. Rolled back.
v1.1.7 — Checkout address detection
- Broader address-present check in Zalando checkout state. Looks at 9 different delivery fields + recursive
street/city/zipsearch. - Removed in v1.2.1 once the flow stabilized.
v1.1.6 — Abort on login failure
- Checkout tasks now abort immediately on login failure instead of continuing to probe + ATC.
v1.1.5 — Web login body shape
- Added
response_type,scope,nonce,statetoauthentication_requestbody. Zalando server was rejecting the body without them.
v1.1.4 — Akamai halt handling
- Explicit detection for
{"edge_error":"halt"}responses — no more uncaught exceptions. - Wrapped
.json()in try/except across login and register flows.
v1.1.3 — Login reverted to web flow
- Mobile OAuth flow (
fashion-store-mobile-android) consistently failed with401 Xsrf validation failedonauthentications/credentials. Web flow (fashion-store-web) works and is stable. - Register still uses mobile flow.
v1.1.2 — Update mechanism fix (WinError 183)
- Switched
Path.rename()→os.replace()for Windows-safe overwrites. - Stale
.old/.tmpare cleaned at the start of every update.
v1.1.0–1.1.1 — Zalando mobile SSO
- First attempt at mobile-Android flow for Zalando. Correct redirect URI
de.zalando.mobile://zalando/authdiscovered via APK decompilation. - Register body switched to SPA-compatible shape (
client_id + request_id + redirect_uri + ui_locales + tc). - Login still failed with XSRF — see v1.1.3.
v1.0.9 and earlier
Initial releases. Basic support for Zalando, SportsShoes, Empik, BasketballEmotion, FutbolEmotion. No auto-update.