Playwright synthetic user sent to the wrong regional site from a single datacenter region
This page as markdown: https://aluvia.io/geo/playwright.md
Updated · Aluvia
A Playwright job is meant to walk one market as a synthetic user. Playwright Chrome from one datacenter region still presents that region's IP, so the storefront sees the runner, not the country the script asked for. The page that opens is the host's regional site, or the shop says the content is not available in your country.
That cloud agent not available in your country Playwright result is the shop reading the datacenter address, not the locale you set on the test. Playwright's locale, timezone, and geolocation APIs do not rewrite the request IP. Ask the agent to run setup on the host that already launches that Chrome. Aluvia does not open a second browser.
The regional site followed the host, not the script
Playwright drives a real Chrome session from whichever region the runner sits in. Language, currency, and whether a market page exists are decided from that request IP. We built Aluvia as a local CLI and proxy daemon for the Chrome the job already has.
If the tab is already a Cloudflare or Turnstile challenge, that is not this diagnosis. Use the Cloudflare challenge guide and leave this page for the wrong-country storefront. If you cannot run commands on the host that owns Chrome, this path does not apply.
Attach the country exit to the Chrome Playwright already opened
Setup attaches the existing Chrome on that host. If Playwright starts its own browser or a separate context, set that browser's proxy yourself; setup does not cover every context automatically. See Playwright proxy configuration. Installing on your laptop does not change a cloud runner's browser, and a VPN on that laptop does not either. Change a cloud browser's IP country without a VPN.
Install on the Playwright host
npx aluvia-cli setupFirst 10 MB free without an account, API key or payment; then 2 USD per GB. Requires Node.js 18 or later, a usable local Chrome or Chromium browser, and command access to its host. No target page URL is required. Initial configuration can restart Chrome. Quickstart, setup changes, runtime evidence.
Check setup before continuing
Read the JSON result. ready: true confirms the browser/proxy path and upstream check, not target-site access. Follow next if recovery is needed. Successful setup already enables proxy traffic. If aluvia is not on PATH, use npx aluvia-cli instead.
Check country availability
Choose the country the task needs from the current list. The command below is an example; substitute an available country or skip selection if the global pool is suitable.
aluvia geosSend this Chrome through DE, or the country the regional site expects
Run aluvia geos and pick the country the storefront is actually gating on. aluvia proxy-on --geo DE sends the existing Playwright Chrome through a German residential or mobile IP when the synthetic user is meant to walk a German page. Replace DE with the country that regional site expects.
Reload the same session and read the catalog, currency, and shipping line. CLI status is not a passing storefront. If setup restarted Chrome, reconnect Playwright to the same browser before treating the reload as evidence. Sticky sessions last up to 30 minutes. Country only: Aluvia does not pick a city and does not write GPS, timezone, or Accept-Language.
aluvia proxy-on --geo DEIf the page is still the datacenter's region
If the shop still serves the host region's catalog, aluvia rotate-ip requests one different residential or mobile IP in the country you already selected. It does not change country. Try once, then stop.
aluvia rotate-ipWhat a country IP does not fix
A residential or mobile exit sometimes reaches the right regional storefront. After the address looks local, fingerprint, TLS, and canvas checks can still fail, and Aluvia does not claim to beat them. This is not a human VPN, not a streaming tool, and not an MCP. It will not complete a login, SSO, or 2FA form.
If the tab is already a Cloudflare or Turnstile challenge, stop treating it as a regional-site miss. Use the Cloudflare challenge guide. What setup changes.
Reload and verify
Reload the target using the same browser tool and check the required content. Run status and follow its next field. For a suspected IP refusal, rotate once and reload; stop if it still fails. For a rate limit, wait and reduce requests.
aluvia statusUndo the IP change
When finished, return to the machine's IP. After setup, this keeps Chrome running.
aluvia proxy-offWhen the trial ends
Show the actual claim_url from payment_required to the operator. They can claim the account and buy data at 2 USD per GB. Run aluvia auth login to wait, inspect the response and retry. Never invent a claim URL or reveal a key. Payment handoff.