# 407 Proxy Authentication Required: wat het betekent en hoe op te lossen

> HTTP 407 Proxy Authentication Required betekent dat de proxy je inloggegevens heeft afgewezen of ze nooit heeft ontvangen. Exacte foutmeldingen in Python, curl, Node en oplossingen.

- URL: https://crawlrelay.com/nl/docs/errors/407-proxy-authentication-required/
- Laatst bijgewerkt: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

HTTP-statuscode (4xx, clientfout): het exacte bericht in elk hulpmiddel, de waarschijnlijke oorzaken in volgorde, en de oplossing die werkt.

**Kort antwoord — Wat betekent 407 Proxy Authentication Required bij een proxy?**

**407 Proxy Authentication Required** betekent dat de proxy je verzoek weigerde omdat hij geen of verkeerde inloggegevens kreeg. De doelwebsite is nooit benaderd. Bij CrawlRelay woonproxies, controleer drie dingen: de gebruikersnaam is die in je dashboard, het wachtwoord klopt, en eventuele speciale tekens zijn URL-gecodeerd. Het opnieuw proberen van hetzelfde verzoek lost een 407 nooit op.

## 407 Proxy Authentication Required in één oogopslag

| Attribuut | Waarde |
| --- | --- |
| Fout | 407 Proxy Authentication Required |
| Type | HTTP-statuscode (4xx, clientfout) |
| Verzonden door | De proxy-gateway, nooit de doelwebsite |
| Gedefinieerd in | RFC 9110, section 15.5.8 (headers: Proxy-Authenticate 11.7.1, Proxy-Authorization 11.7.2) |
| Opnieuw proberen? | Nee. Met dezelfde inloggegevens faalt het opnieuw; los dat eerst op |
| Eerst controleren | Voer de curl-test hieronder uit met alleen de gebruikersnaam en zonder targetparameters |

## Wat betekent 407 Proxy Authentication Required?

Een 407 komt van de proxy, niet van de site die je wilt bereiken. RFC 9110 beschrijft het als de proxy-versie van 401: de client moet eerst met de proxy authenticeren voordat er iets anders gebeurt. De proxy stuurt een `Proxy-Authenticate` header die het geaccepteerde schema noemt, bijna altijd `Basic`. Je client antwoordt met een `Proxy-Authorization` header die `username:password` in Base64 gecodeerd bevat.

Bij een HTTPS-doel, komt de 407 als antwoord op het `CONNECT` verzoek dat de tunnel opent. Daarom melden veel bibliotheken het als een tunnel- of verbindingsfout en niet als een HTTP-status: de TLS-sessie met de website is nooit gestart.

## Hoe ziet a 407 eruit in Python, curl, Node.js en browsers?

Dezelfde fout verschijnt anders in elk hulpmiddel. Dit zijn de berichten om in je logs te zoeken:

- **Python requests:** `ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))`
- **curl:** `curl: (56) CONNECT tunnel failed, response 407`
- **Scrapy:** `TunnelError: Could not open CONNECT tunnel with proxy ... [{'status': 407, 'reason': b'Proxy Authentication Required'}]`
- **Chrome, Playwright, Puppeteer:** `net::ERR_TUNNEL_CONNECTION_FAILED`, of een inlog-popup in een zichtbare browser
- **Node.js clients op een http:// target:** `Request failed with status code 407`

## Wat veroorzaakt a 407?

Waarschijnlijk eerst:

- **Verkeerde gebruikersnaam of wachtwoord.** Een tikfout, een oud wachtwoord na reset, of de inloggegevens van een andere subgebruiker.
- **Niet-gecodeerde speciale tekens.** Een wachtwoord met `@`, `:`, `/` of `#` breekt de `user:pass@host` URL. Percent-encodeer ze: `@` wordt `%40`, `:` wordt `%3A`.
- **Een kapotte targeting-suffix.** Gateways die targeting uit de gebruikersnaam lezen zien één lange gebruikersnaam. Een tikfout in een sleutel of landcode maakt het een gebruikersnaam die de proxy niet kent.
- **Inloggegevens die nooit je code verlaten.** Chrome negeert een gebruikersnaam en wachtwoord die in `--proxy-server` staan. Puppeteer heeft `page.authenticate()` nodig, en Selenium een lokale forwarder.
- **Een lege balans.** Controleer dat je account nog verkeer heeft voordat je de code debugt.

## Hoe diagnosticeer ik a 407 stap voor stap?

1. Test de inloggegevens met curl zonder enige targeting (onderstaand commando). Een `HTTP/1.1 407` regel in de verbose output bevestigt een inlogprobleem.
2. Voeg je targetingparameters één voor één terug toe, en test na elke toevoeging.
3. Log de proxy-URL die je programma bouwt, met gemaskeerd wachtwoord, en vergelijk hem teken voor teken met het dashboard.
4. Als curl slaagt en je programma faalt, verstuurt de bibliotheek de inloggegevens niet. Lees hieronder de oplossing voor jouw tool.

*Test de foutieve URL met curl (HTTP-poort, uitvoerig)*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## Hoe los ik a 407 op?

- **Encodeer inloggegevens** met `urllib.parse.quote(value, safe='')` in Python of `encodeURIComponent()` in JavaScript voordat je de URL bouwt.
- **Browsers:** geef `username` en `password` door in de `proxy` optie van Playwright, roep `page.authenticate()` aan in Puppeteer en gebruik een lokale forwarder voor Selenium. Zie de [Playwright](https://crawlrelay.com/nl/docs/playwright/) en [Puppeteer](https://crawlrelay.com/nl/docs/puppeteer/) gidsen.
- **Omgevingsvariabelen:** als je `HTTPS_PROXY` instelt, zet dan de hele waarde tussen aanhalingstekens in je shell, zodat `@` en `$` behouden blijven.
- **Draai het wachtwoord** om in het dashboard als je een lek vermoedt, en update dan elke scraper die het gebruikt.

*Python: bouw de proxy-URL met gecodeerde inloggegevens*

```python
from urllib.parse import quote

import requests

user = "USERNAME-country-us"
password = "p@ss:word/1"  # example containing special characters

# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
    quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy}  # http:// for both keys

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)
```

*Playwright (Python): inloggegevens als aparte velden*

```python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://gw.crawlrelay.com:7777",
        "username": "USERNAME-country-us",
        "password": "PASSWORD",
    })
    page = browser.new_page()
    response = page.goto("https://api.ipify.org")
    print(response.status, page.inner_text("body"))
    browser.close()
```

## Moet ik opnieuw proberen na a 407?

Probeer een 407 niet automatisch opnieuw. Een herhaling met dezelfde inloggegevens geeft hetzelfde antwoord, en een strakke retry-loop vult alleen je logs. Zie 407 als een configuratiefout: stop de taak, herstel de inloggegevens en herstart. Als een 407 plots verschijnt in een taak die dagen werkte, is het wachtwoord waarschijnlijk veranderd of de subgebruiker uitgeschakeld.

## Hoe geldt 407 Proxy Authentication Required voor CrawlRelay?

De CrawlRelay-gateway leest gebruikersnaam en wachtwoord bij elke nieuwe connectie. Targeting- en sessie-instellingen zitten in de gebruikersnaam, dus een geldig wachtwoord kan falen als de suffix niet klopt. Bouw de gebruikersnaam in één helperfunctie en log de output bij het opstarten. De [quick-start pagina](https://crawlrelay.com/nl/docs/) toont het exacte formaat.

Gateway: `gw.crawlrelay.com`, poort 7777 (HTTP, HTTPS via CONNECT) en poort 7778 (SOCKS5). Gebruikersnaamformaat: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. Gerelateerd: [401 versus 407](https://crawlrelay.com/nl/docs/errors/401-unauthorized/) · [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/nl/docs/errors/err-tunnel-connection-failed/) · [Kan niet verbinden met proxy](https://crawlrelay.com/nl/docs/errors/cannot-connect-to-proxy/).

## 407 Proxy Authentication Required: vragen die ontwikkelaars stellen

### Wordt een 407 gestuurd door de website die ik scrape?

Nee. Een 407 wordt altijd gestuurd door een proxy tussen jou en de website. Het verzoek bereikt de website nooit, dus die ziet je verkeer niet, telt het niet of blokkeert je er niet voor. Als de website inlog wilde, gaf die 401. Los de proxy-inloggegevens op en de 407 verdwijnt.

### Waarom krijg ik 407 in mijn code terwijl curl met dezelfde proxy werkt?

Je bibliotheek stuurt de inloggegevens niet mee, of op een andere manier. Gewone oorzaken zijn inloggegevens in een browserflag die genegeerd wordt, een omgevingsvariabele die speciale tekens verloor, of een niet URL-gecodeerd wachtwoord. Print de proxy-URL die je code bouwt, met wachtwoord gemaskeerd, en vergelijk met het curl-commando.

### Gebruikt een 407 verkeer van mijn plan?

Een 407-respons is enkele honderden bytes, en het verzoek bereikt het doel nooit, dus er wordt geen pagina gedownload. De kosten zitten elders: een scraper die in een 407 retry-loop vastzit verspilt tijd en vult je logs. Maak van 407 een harde stop in je foutafhandeling.

## Andere proxyfouten in deze referentie

- [401 Unauthorized vs 407](https://crawlrelay.com/nl/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/nl/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/nl/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/nl/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/nl/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/nl/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/nl/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/nl/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/nl/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/nl/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/nl/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/nl/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/nl/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/nl/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/nl/docs/errors/ssl-wrong-version-number/)

**Residentiële proxy's met documentatie die de faalgevallen beschrijft** CrawlRelay residentiële proxy's van US$ 0,50/GB, verkeer dat nooit verloopt. [Zie prijslijst](https://crawlrelay.com/nl/pricing/) · [Snelle start](https://crawlrelay.com/nl/docs/)

---

CrawlRelay: CrawlRelay is een developer-first dienst met roterende residentiële proxy's en mobiele 4G-proxy's voor scrapers en AI-datastromen: niet-vervalverkeer op basis van pay-as-you-go vanaf US$ 0,50/GB, betaald in crypto, zonder ID-upload. Zonder KYC — geen ID, geen selfie, geen documenten. Betaal met crypto.
