Sign inSign up

proxmint/local-proxy

By proxmint

•Updated 3 days ago

Local proxy with no login for Chrome and Selenium: Proxmint residential, datacenter or mobile IPs

Image
0

94

proxmint/local-proxy repository overview

⁠Proxmint local proxy

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.

⁠Quick start

  1. Buy bandwidth for a product on the pricing page⁠. It is sold per GB with no subscription, and can be paid in crypto⁠.
  2. Create an API key under Settings in the dashboard⁠.
  3. Start the proxy:
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 and Selenium

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)

⁠Settings

VariableDefaultWhat it does
PROXMINT_API_KEYAPI key from the dashboard. Reads the product's proxy login at start-up
PROXMINT_PRODUCTresidentialresidential, premium-residential, datacenter or mobile
PROXMINT_USERNAME, PROXMINT_PASSWORDThe proxy login from your product page, instead of an API key
PROXMINT_COUNTRYanyExit country as a two-letter code
PROXMINT_STATE, PROXMINT_CITY, PROXMINT_ZIP, PROXMINT_ASNFiner targeting inside the country. Needs a country
PROXMINT_STICKY0Keep one exit IP for 1 to 120 minutes. 0 gives every connection a new IP
PORT8080The port the proxy listens on inside the container

For several locations at once, run one container per location, each on its own port.

⁠When a request is refused

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.

⁠Security

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.

⁠Good to know

  • Web traffic works on destination ports 80, 443, 8080, 8443, 8888 and 8090 (port access⁠).
  • A short list of sites, mostly banking and government, is refused by the network (blocked websites⁠).
  • City, state, ZIP and ASN targeting meter at 2x on residential, datacenter and mobile (targeting⁠).
  • The login is read once at start-up. Restart the container after you change the proxy password, or to get a new sticky IP.
  • Images for 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⁠.

⁠License

MIT

Tag summary

Content type

Image

Digest

sha256:2f2f0749f…

Size

59.6 MB

Last updated

3 days ago

docker pull proxmint/local-proxy