Korištenje IP adrese proxyja u Python Requestsu
Odredite izričite proxy rute po zahtjevu u Requestsu, izaberite odgovarajuću shemu krajnje tačke i obradite isteke vremena i greške HTTPS tunela.
Kada je Requests dostupan u projektu, proslijedite pozivu mapiranje proxyja:
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)
Zamijenite loopback krajnju tačku aktivnim proxyjem ili kandidatom sa liste HTTP proxyja kojeg ćete testirati ovim zahtjevom. Ključevi opisuju sheme odredišta: http za HTTP URL-ove i https za HTTPS URL-ove. Vrijednosti opisuju sučelje proxyja koje osluškuje. Mogu biti različite tačke ako mreža zahtijeva odvojene rute.
Vrijednost proxyja http:// pod ključem https je namjerna. Requests traži CONNECT tunel od HTTP sučelja, a onda kroz njega uspostavlja TLS s odredištem, u skladu s politikom proxyja za odredišta i portove. Promjena vrijednosti u https:// traži TLS do samog proxyja; može propasti ako sučelje očekuje nešifrirani HTTP.
Šta znače dva broja vremenskog ograničenja
timeout=(5, 15) postavlja ograničenja za povezivanje i čitanje. Ne nameće ukupni rok od petnaest sekundi. Podaci koji periodično pristižu, više adresa i pokušaji povezivanja mogu produžiti proteklo vrijeme. Requests ne daje opće ograničenje kada se postavka izostavi. Birajte granice primjerene odgovoru i dodajte rok na nivou aplikacije ako posao traži strog ukupan vremenski budžet.
Obradite neuspjeh u fazi u kojoj se desi
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)
Odbijeni CONNECT može izazvati ProxyError prije nego postoji odgovor odredišta. Grana HTTPError slijedi primljeni odgovor sa statusom greške; Timeout znači istek podešene granice. Lance izuzetaka uspostavljanja veze pregledajte lokalno i prije dijeljenja uklonite krajnje tačke s pristupnim podacima i privatne URL-ove.
Ostavite provjeru certifikata uključenom. Ako ovlaštena mreža koristi privatni CA ili upravljano presretanje, dajte očekivani materijal povjerenja umjesto isključivanja provjere.
Izričiti unosi po zahtjevu kontrolišu ovdje date rute, ali na izostavljene sheme i dalje može utjecati pronalaženje proxyja iz okruženja. Pri prebacivanju poziva u višekratno upotrebljivu Session odredite kako varijable okruženja, zadane vrijednosti Session i nadjačavanja po zahtjevu treba da djeluju; ponovna upotreba veze i politika rutiranja zasebni su izbori.