Local proxy with no login for Chrome and Selenium: Proxmint residential, datacenter or mobile IPs
94
A local HTTP proxy with no login that sends your traffic out through Proxmint residential, datacenter or 4G/5G mobile IPs. Point Chrome, Selenium or any app that can't send a proxy username and password at it, and pick the exit country, state, city, ZIP or ASN with environment variables.
The container adds your proxy login and targeting to each request and passes it to the Proxmint gateway
(gw.proxmint.com). HTTPS goes through as an encrypted tunnel, so TLS runs end to end between your tool and the
site. The bandwidth comes out of your own Proxmint account.
docker run -d --name proxmint -p 127.0.0.1:8080:8080 \
-e PROXMINT_API_KEY=pmk_your_key -e PROXMINT_COUNTRY=us \
proxmint/local-proxy
Check the exit IP:
curl -x http://127.0.0.1:8080 https://api.ipify.org
Chrome's --proxy-server flag takes no username or password, so point it at the container:
google-chrome --proxy-server=http://127.0.0.1:8080
With Selenium in Docker Compose, Chrome reaches the proxy by its service name:
services:
proxmint:
image: proxmint/local-proxy
environment:
PROXMINT_API_KEY: ${PROXMINT_API_KEY}
PROXMINT_COUNTRY: de
chrome:
image: selenium/standalone-chrome
ports: ["127.0.0.1:4444:4444"]
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://proxmint:8080")
driver = webdriver.Remote("http://127.0.0.1:4444", options=options)
| Variable | Default | What it does |
|---|---|---|
PROXMINT_API_KEY | API key from the dashboard. Reads the product's proxy login at start-up | |
PROXMINT_PRODUCT | residential | residential, premium-residential, datacenter or mobile |
PROXMINT_USERNAME, PROXMINT_PASSWORD | The proxy login from your product page, instead of an API key | |
PROXMINT_COUNTRY | any | Exit country as a two-letter code |
PROXMINT_STATE, PROXMINT_CITY, PROXMINT_ZIP, PROXMINT_ASN | Finer targeting inside the country. Needs a country | |
PROXMINT_STICKY | 0 | Keep one exit IP for 1 to 120 minutes. 0 gives every connection a new IP |
PORT | 8080 | The port the proxy listens on inside the container |
For several locations at once, run one container per location, each on its own port.
If the gateway refuses a request, for example because the product is out of bandwidth or no IP matches the
targeting, your tool gets the gateway's answer as it is (407 NO_USER, 503 NO_RAY and so on) and the container
log says what to change:
docker logs proxmint
The error codes page lists them all.
Anyone who can reach the port spends your bandwidth. The proxy only answers this machine, Docker networks and
private networks (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10, fc00::/7),
and publishing the port on 127.0.0.1 keeps it off your network altogether. Pass the key with --env-file to keep
it out of your shell history.
linux/amd64 and linux/arm64. The proxy is one file of JavaScript with no dependencies; read it with
docker run --rm proxmint/local-proxy cat proxy.js.Full guide: proxmint.com/docs/docker.
MIT
Content type
Image
Digest
sha256:2f2f0749f…
Size
59.6 MB
Last updated
3 days ago
docker pull proxmint/local-proxy