Shell · setup guide

wget proxy setup

A wget proxy is configured like any other wget setting: in the environment, in .wgetrc, or per run with -e. wget speaks HTTP proxies only and tunnels HTTPS through them with CONNECT. It has no SOCKS support, so point it at the HTTP gateway.
You will need

Residentialresi.proxymonkey.io:8000

ISP or datacenterIP:PORT

CredentialsUSER:PASS

Copy your own from the dashboard, which also lists the host and port for every order. Where it differs from this page, the dashboard is right.

Install

Most Linux distributions include it; on macOS it comes from Homebrew. Check it is there:

terminal
wget --version

Rotating residential

Each wget run opens a new connection through the residential gateway, so the two lines should print different addresses. -e applies a .wgetrc setting for one run, and use_proxy=yes makes sure a system config has not switched proxies off.

terminal
wget -qO- -e use_proxy=yes -e https_proxy=http://USER:[email protected]:8000 https://httpbin.org/ip
wget -qO- -e use_proxy=yes -e https_proxy=http://USER:[email protected]:8000 https://httpbin.org/ip

A static datacenter or ISP IP

For a static datacenter IP, keep the credentials out of the URL with --proxy-user and --proxy-password; wget sends them as Basic auth. For an ISP order, use the host and port your dashboard lists against it.

terminal
wget -qO- -e use_proxy=yes \
     -e https_proxy=http://IP:PORT \
     --proxy-user=USER --proxy-password=PASS \
     https://httpbin.org/ip

Keeping one identity

Within one run, wget keeps the connection open between URLs on the same host, so wget -i urls.txt through the rotating gateway can fetch several pages over one tunnel and one address. Add --no-http-keep-alive to rotate per URL. Nothing carries over between runs. For a residential address that holds across separate runs, use a sticky session; the session setting for your account is in the dashboard.

Specific to wget

Things worth knowing

A .wgetrc for the wget proxy

Put the settings in ~/.wgetrc and every run uses the proxy with no flags. The password sits in that file, so make it readable only by you: chmod 600 ~/.wgetrc.

~/.wgetrc
use_proxy = on
http_proxy = http://resi.proxymonkey.io:8000
https_proxy = http://resi.proxymonkey.io:8000
proxy_user = USER
proxy_password = PASS

No SOCKS5 proxy in wget

wget has no SOCKS support, and a socks5:// URL in https_proxy will not work. Use the HTTP gateway as on this page, or reach for curl, which takes --socks5-hostname.

Measure a download in bytes

We meter request bytes plus response bytes, headers included. -S prints the response headers to stderr, and wget does not ask for compression by default, so the saved file is the body without compression; a chunked response also carried a few bytes of chunk framing that the file drops. Add the two for a close figure; the request side of a GET is a few hundred bytes, and TLS overhead makes ours slightly higher. -S indents each header line by two spaces and drops its carriage return, so wc -c headers.txt reads about one byte per header line high.

terminal
wget -qS -O body.bin -e use_proxy=yes -e https_proxy=http://USER:[email protected]:8000 \
     https://example.com/ 2> headers.txt
wc -c headers.txt body.bin
When it breaks

Common errors and fixes

  • Proxy tunneling failed: Proxy Authentication Required

    Why
    The gateway answered the CONNECT with a 407: the credentials were wrong or missing. wget often runs this straight into Unable to establish SSL connection. on the same line.
    Fix
    Pass --proxy-user and --proxy-password rather than embedding them in the URL, and copy them fresh from the dashboard.
  • A run that seems to hang, then Read error (Connection timed out) and another try

    Why
    wget waits up to 900 seconds for data by default and retries up to 20 times, and every retry is metered.
    Fix
    Set --timeout=30 --tries=3. On the rotating gateway each retry is a new connection and leaves from a new address.
  • ERROR: cannot verify ...'s certificate

    Why
    The target's certificate or an outdated CA store. TLS runs through the tunnel to the target; the proxy is not part of it.
    Fix
    Update ca-certificates, or point --ca-certificate at the right bundle. --no-check-certificate is for a quick test only.
  • Your own IP comes back instead of a proxy address

    Why
    Only http_proxy was set and the URL is https://, which reads https_proxy; or a system wgetrc has use_proxy = off.
    Fix
    Set https_proxy as well and pass -e use_proxy=yes, then check again against https://httpbin.org/ip.

A failed connection that moved no data is not billed. Retries you send are billed like any other request, and each shows as its own line in your usage log.

The community layer

wget still misbehaving?

Paste the error and the few lines that set up the proxy into Discord, with the password taken out. Someone there has seen it before.

Join the Discord

4,200+monkeys in the Discord

  • Help from humans

    Post your error, get an answer. Usually in minutes, usually from someone who has hit the same wall.

  • A status bot that tells on us

    Pool health, incidents and maintenance posted automatically. Including the bad days.

  • Deals and free traffic

    Bonus GB drops, early access to new pools, and the occasional giveaway for a good bug report.

Join the Discord4,200+ monkeys, free to lurk