Proxy address, port, username and password
Every working proxy is described by five basic fields: protocol, host address, port, login, and password.
Puppeteer controls Chrome, so the proxy is set the way Chrome expects it, and the username and password are given to Puppeteer separately. This guide shows the launch argument, the login step, the per-context option and the checks.
The Puppeteer documentation says the args option of puppeteer.launch() passes additional command-line arguments to the browser. The argument for a proxy is Chromium's --proxy-server, which the Chromium proxy documentation describes. Its value is a proxy address; with a http:// prefix Chrome uses an HTTP proxy.
import puppeteer from 'puppeteer'
const browser = await puppeteer.launch({
args: ['--proxy-server=http://proxy-host:port'],
})
const page = await browser.newPage()
await page.goto('https://ipinfo.io/json')
console.log(await page.evaluate(() => document.body.innerText))
await browser.close()Replace proxy-host and port with the values from your proxy list. Give the username and password to page.authenticate as shown next.
Puppeteer's documentation describes Page.authenticate() as providing credentials for HTTP authentication, and says passing null disables it. It also notes that request interception is turned on behind the scenes to implement authentication, which might affect performance. Call it before the first navigation of the page.
const page = await browser.newPage()
await page.authenticate({ username: 'USERNAME', password: 'PASSWORD' })
await page.goto('https://ipinfo.io/json')The credentials are separate fields, so the password needs no URL encoding here.
The Chromium documentation says HTTP proxies in Chrome support the same authentication schemes as target servers: Basic, Digest, Negotiate and NTLM. A proxy that rejects the login answers 407; see the authentication required guide.
The Puppeteer API reference lists proxyServer in the options of a browser context: a proxy server with an optional port to use for all requests, with the username and password set in Page.authenticate. A second option in that list takes the hosts that should not use the proxy. This lets two contexts in one browser use two different proxies.
const context = await browser.createBrowserContext({
proxyServer: 'http://proxy-host:port',
})
const page = await context.newPage()
await page.authenticate({ username: 'USERNAME', password: 'PASSWORD' })
await page.goto('https://ipinfo.io/json')
await context.close()Create the page from the context, not from the browser, so it uses the context proxy.
The Chromium proxy documentation lists HTTP, HTTPS, SOCKS4 and SOCKS5 proxy schemes. For SOCKS5 it says Chrome does name resolution on the proxy side and that no authentication methods are supported for SOCKS5 in Chrome. In practice, a SOCKS5 proxy that needs a username and password cannot be used with Chrome through this setting. Choose an HTTP proxy for Puppeteer when the proxy has a login. If you need SOCKS5 for another program, see the SOCKS5 proxies page.
Open https://ipinfo.io/json as in the examples and read the country and org fields; the proxy location guide explains how. If the response shows your own address, the proxy was not applied: make sure the argument is in the launch call, or that the page was created from the context that has proxyServer.
The Chromium documentation says that when the proxy server is unreachable, requests fail with ERR_PROXY_CONNECTION_FAILED. Check the host, the port and the scheme, and use the connection failed guide for a full list. A 407 or a login loop means the credentials were not given to page.authenticate, or are wrong; copy them again. To run the same job in another browser tool, the Playwright page covers its proxy setting, and the Node.js proxy guide covers plain HTTP clients. Make sure that any automation you run follows the terms of the sites you visit.
Any of these setups only needs the host, port, username and password of a Proxy302 proxy. For Puppeteer, choose HTTP, which is on port 2222 of proxy.proxy302.com. Rotating residential traffic is billed per GB and the exit country is set when you generate the proxy. A static ISP IP stays fixed for the whole lease term and does not rotate. The table shows exits in 7 countries from our latest hourly check; the probe sends its request to ChatGPT, which is only an example target. Details are on the rotating residential page and in the proxy location guide.
| Item | City | Network (ISP) | ASN |
|---|---|---|---|
| United States | Baton Rouge, Louisiana | Verizon Business | AS6167 |
| United Kingdom | Birkenhead, England | Virgin Media Limited | AS5089 |
| Germany | Hannover, Lower Saxony | htp GmbH | AS13045 |
| Japan | Saitama, Saitama | JCOM Co., Ltd. | AS9824 |
| Singapore | Yishun New Town, Singapore | Singtel Fibre Broadband | AS9506 |
| Brazil | Silvianópolis, Minas Gerais | intertel telecomunicacao LTDA | AS268801 |
| Indonesia | Jakarta, Jakarta | PT Mahawira Nusantara Grup | AS151576 |
Hourly check of the Proxy302 probe, 28 October 2026, 14:56 UTC: one request to ChatGPT per country through a dynamic residential exit, using the public Proxy302 entry. Only the first three octets of an IP are public. One sample per country, not an average; later checks will differ.
Open the rotating residential page, choose the line, and keep Protocol on HTTP or choose SOCKS5, then click Review cost and generate.
Open My assets (the console page that holds everything you bought) and copy HOST, PORT, USERNAME and PASSWORD. The Connect page shows a ready example with your own endpoint.
Enter the details in the browser or tool you are setting up.
Confirm the exit with https://ipinfo.io/json through the proxy.
From mainland China, start the helper tool from the Connect page first and keep it open while you use the proxy.
The Budget line costs US$1.50 per GB, US$1.35 per GB in a 100 GB package and US$1.20 per GB at 300 GB. There is no free trial, and the smallest purchase is 1 GB. Which exit locations are available changes daily.
Puppeteer starts Chrome, and the Chromium documentation says no authentication methods are supported for SOCKS5 in Chrome. Use an HTTP proxy when you need a login.
Create two browser contexts and pass a different proxyServer to each createBrowserContext() call, as described in the Puppeteer API reference.
The Puppeteer documentation says request interception is turned on behind the scenes to implement authentication, which might affect performance.
The Puppeteer API reference lists an option in the context options that takes a list of hosts for which the proxy is not used, and the Chromium documentation describes a matching launch switch.
Official documentation · Confirmed on:
Read on 28 October 2026: args are additional command-line arguments passed to the browser instance.
Official documentation · Confirmed on:
Read on 28 October 2026: provides credentials for HTTP authentication, null disables it, and request interception is turned on behind the scenes.
Official documentation · Confirmed on:
Read on 28 October 2026: proxyServer (proxy with optional port for all requests, credentials set in Page.authenticate) and the list of hosts that skip the proxy.
Official documentation · Confirmed on:
Read on 28 October 2026: takes BrowserContextOptions and returns a BrowserContext.
Official documentation · Confirmed on:
Read on 28 October 2026: --proxy-server, the host exclusion switch, the HTTP, HTTPS, SOCKS4 and SOCKS5 schemes, authentication schemes for HTTP proxies, no authentication methods for SOCKS5 in Chrome, and ERR_PROXY_CONNECTION_FAILED.
Product observation · Confirmed on:
Product facts file of the site (values checked against the console, the backend and the price table on 18-19 October 2026): products, prices in US$ (1 PTC = US$1), lease terms, protocols and ports, countries, quantity limits, no free trial.
Product observation · Confirmed on:
Public JSON of the probe at proxy302.com/live/connectivity/chatgpt.json, read 28 October 2026, 14:56 UTC: one request per exit country through a dynamic residential exit; exit city, ASN, network and response time.
Create an account, top up once, then pick rotating residential, static ISP or datacenter IPs and have one running in your browser within minutes.