Bruke en proxy-IP i Python Requests
Angi uttrykkelige proxyruter per forespørsel i Requests, velg riktig endepunktskjema og håndter tidsavbrudd og feil i HTTPS-tunneler.
Når Requests er tilgjengelig i prosjektet, sender du en 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)
Bytt loopback-endepunktet med din kjørende proxy eller en kandidat fra listen over HTTP-proxyer som du vil teste med forespørselen. Nøklene beskriver målets skjemaer: http for HTTP-URL-er og https for HTTPS-URL-er. Verdiene beskriver proxyens lyttepunkt. Det kan være ulike endepunkter hvis nettverket krever separate ruter.
En proxyverdi med http:// under nøkkelen https er tilsiktet. Requests ber HTTP-lyttepunktet om en CONNECT-tunnel og oppretter deretter TLS til målet gjennom den, underlagt proxyens regler for mål og porter. Å endre verdien til https:// ber om TLS til selve proxyen; det kan mislykkes hvis lyttepunktet forventer ukryptert HTTP.
Hva de to timeouttallene betyr
timeout=(5, 15) setter tidsgrenser for tilkobling og lesing. Det setter ikke en samlet frist på femten sekunder. Data som kommer med mellomrom, flere adresser og tilkoblingsforsøk kan forlenge tiden som går. Requests gir ingen generell timeout når innstillingen utelates. Velg derfor grenser som passer svaret, og legg til en frist på applikasjonsnivå hvis jobben krever et strengt samlet tidsbudsjett.
Håndter feilen på trinnet der den 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)
En avvist CONNECT kan utløse ProxyError før det finnes et svar fra målet. Grenen HTTPError følger et mottatt svar med feilstatus; Timeout betyr at en innstilt grense er utløpt. Undersøk unntakskjedene ved tilkoblingsoppsett lokalt, og fjern endepunkter med påloggingsopplysninger og private URL-er før du deler dem.
La sertifikatverifisering være aktivert. Hvis det autoriserte nettverket bruker en privat CA eller administrert avskjæring, oppgi forventet tillitsmateriale i stedet for å slå av verifiseringen.
Uttrykkelige poster per forespørsel styrer rutene som gis her, men utelatte skjemaer kan fortsatt påvirkes av proxysøk i miljøet. Når kallet flyttes inn i en gjenbrukbar Session, avgjør hvordan miljøvariabler, Session-standarder og overstyringer per forespørsel skal samhandle; gjenbruk av forbindelser og rutingsregler er separate valg.