Een proxy-IP gebruiken met urllib3
Kies ProxyManager voor een HTTP-proxy, bekijk urllib3-antwoordvelden en houd rekening met herpogingen en de aparte SOCKS-manager.
Gebruik voor een kleine urllib3-proxydiagnose ProxyManager met herpogingen uitgeschakeld. Dit toont de eerste poging in plaats van langer een niet meer werkende vermelding te blijven proberen. In een door uv beheerd project:
uv add urllib3Vervang het documentatie-eindpunt door een HTTP-proxy van je dienst of uit de lijst met HTTP-proxy’s en voer het verzoek via die manager uit:
import urllib3
proxy = urllib3.ProxyManager(
"http://203.0.113.10:8080",
timeout=urllib3.Timeout(connect=5, read=10),
retries=False,
)
try:
response = proxy.request("GET", "https://example.com/")
print(response.status)
print(response.data.decode("utf-8", errors="replace")[:200])
finally:
proxy.clear()
Lees eerst response.status en bekijk daarna response.data. Dit zijn de velden van urllib3; de Requests-velden status_code en text zijn geen vervangers. Een websiteweigering kan via een werkende proxy komen. Een uitzondering vóór een antwoord betekent juist dat het verzoek niet kon worden voltooid.
retries=False is een diagnostische keuze, geen herpogingsbeleid voor productie. De verbindingsinstelling van 5 seconden en leesinstelling van 10 seconden beperken hun eigen fases; ze vormen geen gegarandeerde totale deadline van 15 seconden. DNS en de voortgang van het antwoord kunnen de totale wachttijd beïnvloeden.
Het voorbeeld laadt de inhoud vooraf en leegt de pools van de manager aan het eind. Bewaar bij herhaalde verzoeken via hetzelfde eindpunt die manager tot het werk klaar is, zodat verbindingen hergebruikt kunnen worden. Overschakelen naar preload_content=False verandert die levenscyclus: de aanroeper moet het gestreamde antwoord lezen en vrijgeven.
Kies de manager die bij de luisterende dienst past. Een gewone PoolManager gaat geen proxy gebruiken omdat elders een URL is opgeslagen; SOCKS gebruikt urllib3.contrib.socks.SOCKSProxyManager en de optionele afhankelijkheden daarvan. De bovenstaande code volgt het HTTP-ProxyManager-pad.