Bruke ei proxy-IP i Python Requests
Oppgje tydelege proxyruter per førespurnad i Requests, vel rett endepunktskjema og handter tidsavbrot og feil i HTTPS-tunnelar.
Når Requests er tilgjengeleg i prosjektet, sender du ei proxytilordning til kallet:
import requests
proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)
Byt loopback-endepunktet med din køyrande proxy eller ein kandidat frå lista over HTTP-proxyar som du vil teste med førespurnaden. Nøklane skildrar skjema for målet: http for HTTP-URL-ar og https for HTTPS-URL-ar. Verdiane skildrar lyttepunktet til proxyen. Det kan vere ulike endepunkt dersom nettverket krev skilde ruter.
Ein proxyverdi med http:// under nøkkelen https er tilsikta. Requests ber HTTP-lyttepunktet om ein CONNECT-tunnel og opprettar deretter TLS til målet gjennom han, underlagd reglane til proxyen for mål og portar. Å endre verdien til https:// ber om TLS til sjølve proxyen; det kan mislukkast dersom lyttepunktet ventar ukryptert HTTP.
Kva dei to timeouttala tyder
timeout=(5, 15) set tidsgrenser for tilkopling og lesing. Det set ikkje ei samla frist på femten sekund. Data som kjem med mellomrom, fleire adresser og tilkoplingsforsøk kan forlengje tida som går. Requests gjev inga generell tidsgrense når innstillinga er utelaten. Vel difor grenser som passar svaret, og legg til ei frist på applikasjonsnivå dersom jobben krev eit strengt samla tidsbudsjett.
Handter feilen på steget der han oppstår
try:
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
except requests.exceptions.ProxyError as error:
print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
print("HTTP status:", error.response.status_code)
Ein avvist CONNECT kan utløyse ProxyError før det finst eit svar frå målet. Greina HTTPError følgjer eit motteke svar med feilstatus; Timeout tyder at ei innstilt grense er gått ut. Undersøk unntakskjedene ved tilkoplingsoppsett lokalt, og fjern endepunkt med innloggingsopplysningar og private URL-ar før du deler dei.
Lat sertifikatverifisering vere aktivert. Dersom det autoriserte nettverket brukar ein privat CA eller administrert avskjering, oppgje venta tillitsmateriale i staden for å slå av verifiseringa.
Tydelege oppføringar per førespurnad styrer rutene som er gjevne her, men utelatne skjema kan framleis bli påverka av proxysøk i miljøet. Når kallet blir flytta til ein gjenbrukbar Session, avgjer korleis miljøvariablar, Session-standardar og overstyringar per førespurnad skal verke saman; gjenbruk av samband og rutingsreglar er skilde val.