Guide

How to Use a Proxy: Every Setup, Every Wall, Every Fix

Fifty-six setup guides in one map: browsers, every major language, the twelve anti-bot walls by name, the CAPTCHA families, and the error codes that follow.

HProxy Team · ·7 min read
HProxy. Guide

Free proxies won't hold up here.

Shared datacenter IPs get flagged and dropped fast. When it has to hold, gaming, streaming, accounts, you need mobile and residential IPs that read as a real device, from $0.44/GB, pay as you go.

See plans & pricing

Plugging a proxy into a tool takes about ten minutes, and that is true for every tool on this page. The reason this section runs to fifty-six guides is everything that happens after those ten minutes: the anti-bot wall that inspects the new IP, the CAPTCHA it decides to show you, and the error code that tells you which side of the connection gave up.

This page is the map. It is organized the way the problem actually unfolds: where the proxy plugs in, what the target does about it, and what the failure looks like on your screen. Every link goes to a guide with working configuration, not a sales page with a code snippet bolted on.

The shape of every proxy problem

Setup is the easy third. The other two thirds are the wall (a named anti-bot vendor scoring your connection) and the diagnosis (an error code that tells you whether the proxy, the target, or your own config refused). Knowing which third you are in saves more time than any snippet.

Plugging it into a browser or system

The browser route is where most people start, and it is genuinely the right tool for checking how a page renders from another country. Chrome has no proxy settings of its own, it inherits the operating system's, which surprises everyone the first time and is why setting up a proxy in Chrome is really an OS guide in disguise. The extension route fixes that: FoxyProxy gives Firefox and Chrome per-site rules, and SwitchyOmega does the same with profiles you can switch in one click.

For programs with no proxy settings at all, proxychains sits underneath and forces their traffic through your proxy anyway, which makes it the tool of last resort on Linux and the first resort for command-line tools that never heard of HTTP_PROXY.

Wiring it into code

Almost every HTTP library speaks the same two dialects: the HTTP_PROXY and HTTPS_PROXY environment variables, or an explicit proxy object on the client. HTTPS traffic rides through the proxy in a CONNECT tunnel either way, so the proxy carries the connection without reading it, a distinction the HTTP vs HTTPS proxy explainer settles properly. The guides differ because the details differ, and the details are where an afternoon disappears.

On the command line, curl is the reference implementation and the fastest sanity check you own, and curl-impersonate is what you switch to when the target checks TLS fingerprints and plain curl gets flagged before the first byte. In Python, requests takes a two-line dict, httpx renamed its proxy argument in a way that broke most older tutorials, and Scrapy moves the whole question into middleware. Browser automation has its own pair: Selenium wants the proxy at driver launch, while Playwright can give every browser context its own IP, which is how one process holds many identities.

The rest of the stack: Node.js needs an agent object because fetch has no proxy option, Go configures the Transport, Java splits proxy authentication from origin authentication and punishes anyone who conflates them, C# and .NET route through HttpClientHandler, PHP sets cURL options, Ruby passes proxy arguments to Net::HTTP, and Rust builds a reqwest client with a Proxy value. Each guide covers authentication, rotation, and the failure modes specific to that runtime.

The wall: twelve anti-bot systems by name

Sooner or later a defended site stops you, and the single most useful thing you can do is identify which vendor stopped you, because they check different things and respond to different fixes. The tells are usually visible in the cookies, the challenge page, or the response headers, and how websites detect proxies explains the shared machinery underneath: IP reputation, JA3 and JA4 TLS fingerprints, and behavior scoring.

Cloudflare is the one you will meet first, simply because a fifth of the web sits behind it. Akamai guards most large retailers and airlines with its sensor-data cookies. DataDome is common on European marketplaces and hands out its own CAPTCHA page. PerimeterX, now HUMAN, is the press-and-hold button. Kasada shows no visible challenge at all, which is precisely its tell. Imperva still announces itself through incapsula cookie names, Radware protects banks and airlines, and F5 Shape specializes in login flows with heavily obfuscated JavaScript. AWS WAF ships as a checkbox on CloudFront, so it appears on sites that never chose a bot vendor deliberately, and Fastly's bot defense rides the CDN the same way. Queue-it is not detection at all but a waiting room, a different problem with different rules, and Arkose Labs is the enforcement arm that serves the puzzles the next section covers.

Every one of those guides says the same honest thing in its own way: the proxy decides whether you are allowed to knock, the client fingerprint and behavior decide whether the door opens.

The puzzle: CAPTCHA families

CAPTCHAs are what a wall serves when it is not sure about you, so a CAPTCHA is feedback as much as it is an obstacle. Why you keep hitting reCAPTCHA explains the reputation mechanics behind the frequency, and reCAPTCHA v3 covers the invisible variant that scores you without ever showing a puzzle. Cloudflare Turnstile replaced the checkbox with browser attestation, hCaptcha sells detection to sites that left Google, FunCaptcha is Arkose's rotating 3D puzzle, and GeeTest is the slide-the-piece family that dominates Chinese platforms. The through-line in all six guides: solving is the expensive path, and not triggering the puzzle in the first place is the one worth engineering for.

The error on the screen

Error codes divide by who is refusing you, and reading them that way turns debugging from guesswork into a flowchart. A 407 is the proxy itself demanding credentials, before the target ever sees you. A 403 is the target rejecting what it saw, which on defended sites usually means the wall section above. A 429 is the target telling you the rate, not the IP, is the problem. A 502 means the proxy reached upstream and got garbage back, while a 504 means upstream never answered at all, and the difference matters because one is usually a dead exit and the other a slow target.

Client-side, curl's error codes map cleanly to causes once you know the table, Chrome's ERR_PROXY_CONNECTION_FAILED almost always means the OS-level settings point at a dead address, and Firefox's "proxy server is refusing connections" is the same disease with different phrasing.

Staying unblocked once it works

A working setup on Monday and a banned pool on Friday is the normal free-tier experience, and the fix is method rather than magic. How to avoid IP bans while scraping is the prevention checklist: pacing, session discipline, header hygiene, and rotation that matches how the target counts. Proxies for web scraping is the full playbook, and the use-case map covers the target-specific versions, because staying unblocked on Instagram and staying unblocked on a price API are different jobs that happen to share a tool.

The type decision runs through everything: datacenter vs residential is the honest version of that choice, and rotating vs sticky sessions decides whether your logins survive.

Paying for the right thing

Two guides exist so that the others never have to be diplomatic. How much do proxies cost works through advertised rates against the rates a new customer actually pays, the cheapest residential proxies ranks entry prices with the volume gates spelled out, and how to vet a proxy provider is the checklist for everything a pricing page will not tell you. The measured versions live in our data studies: the residential price study on the gap between advertised and entry rates, and the scraping API credit multipliers study on why an API "request" is rarely one credit. And if the real question is whether to pay at all, the free proxy map covers the tier below, including the narrow places where it genuinely holds.

The odd ones out

A few guides cover things that look like proxy setup and are actually something else. Telegram bakes its own MTProto proxy protocol into the app, so normal HTTP proxies do not apply. WhatsApp's in-app proxy exists for internet shutdowns, with its own rules. A proxy for school networks is mostly a question about the filter, not the proxy. Free Fire is a latency and region problem in a game that bans aggressively. And the Janitor AI and DeepSeek "proxies" are reverse-proxy API keys to language models, an entirely different animal wearing the same word, which both guides say before anything else.

From zero to working

  1. 1

    Prove the proxy first, alone

    One curl -x line against api.ipify.org, or our proxy checker. If the exit IP is wrong here, nothing downstream can be right, and you have spent thirty seconds finding that out.

  2. 2

    Wire it into your actual tool

    Pick the guide for your browser, language or framework above. Copy the auth handling, not just the proxy line, because credentials are where most first setups quietly fail.

  3. 3

    Hit the real target and read the refusal

    The error code names the refusing side: 407 is your proxy, 403 and 429 are the target, 502 and 504 are the path between. Diagnose before rotating, because rotation hides the cause without removing it.

  4. 4

    Match the proxy type to the wall

    If a named anti-bot vendor is in the way, its guide says what it checks. Move from datacenter to residential when the block rate proves you must, not because a marketing page said so.

Ten minutes of setup, honestly delivered, and the rest of the time goes where it belongs: on the target, the wall, and the method. That is the part this section was written for.

Frequently asked questions

What is the fastest way to test that a proxy works?
One curl line: curl -x http://user:pass@host:port https://api.ipify.org. If the IP that comes back is the proxy's and not yours, the proxy carries traffic. Our [proxy checker](/proxy-checker) does the same check with anonymity and latency detail on top, and [how to check if a proxy is working](/blog/how-to-check-if-a-proxy-is-working) covers the full routine.
Which language guide do I actually need?
Often none, because most HTTP tooling honors the HTTP_PROXY and HTTPS_PROXY environment variables without a line of code. Reach for the per-language guide when you need per-request proxies, authentication handled properly, or rotation, which is where the libraries genuinely differ: Python's httpx renamed its proxy argument, Java splits proxy auth from origin auth, and Node needs an agent object rather than an option.
Why am I seeing 407 Proxy Authentication Required?
The proxy itself is refusing you, before your request ever reaches the target site. Wrong or missing username and password is the usual cause, an IP-allowlist mismatch is the sneaky one. The status codes divide cleanly: 407 is the proxy talking, 403 and 429 are the target talking. Our [407 guide](/blog/how-to-fix-407-proxy-authentication-required) walks the checklist.
Will a proxy alone get me past Cloudflare or DataDome?
No, and any page saying otherwise is selling something. Modern anti-bot systems score the TLS fingerprint, the browser signals and the behavior alongside the IP, so a clean residential IP is necessary on hard targets but not sufficient. The per-wall guides below cover what each system actually checks and which combination of proxy type and client gets realistic results.

Proxies that don't die mid-job

Residential, ISP, datacenter and mobile, verified by the same engine that runs tens of millions of checks. They read as a real device and hold up under load. Pay as you go, and your balance never expires. $0.44/GB is the 2,000 GB+ rate; a single gigabyte is $0.50/GB, with no minimum order.

47M+ proxy checks run · 100+ countries · HTTP / HTTPS / SOCKS · re-checked every few minutes · no signup