Starpniekservera IP izmantošana Python Requests
Nosakiet skaidrus starpniekservera maršrutus katram Requests pieprasījumam, izvēlieties pareizo galapunkta shēmu un apstrādājiet noildzes un HTTPS tuneļa kļūmes.
Kad projektā pieejams Requests, nododiet izsaukumam starpniekserveru kartējumu:
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)
Aizstājiet loopback galapunktu ar savu strādājošo starpniekserveri vai kandidātu no HTTP starpniekserveru saraksta, ko pārbaudīsiet ar šo pieprasījumu. Atslēgas apraksta galamērķa shēmas: http HTTP URL un https HTTPS URL. Vērtības apraksta starpniekservera klausītāju. Tie var būt dažādi galapunkti, ja tīklam vajadzīgi atsevišķi maršruti.
Starpniekservera vērtība http:// zem atslēgas https ir apzināta. Requests pieprasa CONNECT tuneli no HTTP klausītāja un tad caur to izveido TLS ar galamērķi atbilstoši starpniekservera galamērķu un portu politikai. Vērtības maiņa uz https:// pieprasa TLS ar pašu starpniekserveri; tas var neizdoties, ja klausītājs sagaida nešifrētu HTTP.
Ko nozīmē abi noildzes skaitļi
timeout=(5, 15) nosaka savienojuma un lasīšanas noildzi. Tas nenosaka kopējo piecpadsmit sekunžu termiņu. Periodiski saņemti dati, vairākas adreses un savienojuma mēģinājumi var pagarināt pagājušo laiku. Ja iestatījumu izlaiž, Requests nenodrošina vispārēju noildzi. Izvēlieties atbildei piemērotas robežas un pievienojiet lietotnes līmeņa termiņu, ja darbam vajadzīgs stingrs kopējā laika budžets.
Apstrādājiet kļūmi tajā posmā, kur tā rodas
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)
Noraidīts CONNECT var izraisīt ProxyError, vēl pirms ir galamērķa atbilde. Zars HTTPError seko saņemtai atbildei ar kļūdas statusu; Timeout nozīmē iestatītas robežas izbeigšanos. Savienojuma izveides izņēmumu ķēdes pārbaudiet lokāli un pirms kopīgošanas noņemiet galapunktus ar akreditācijas datiem un privātus URL.
Sertifikātu pārbaudi atstājiet ieslēgtu. Ja pilnvarotais tīkls izmanto privātu CA vai pārvaldītu pārtveršanu, nodrošiniet gaidīto uzticamības materiālu, nevis atspējojiet pārbaudi.
Skaidri ieraksti katram pieprasījumam nosaka šeit dotās trases, bet izlaistās shēmas joprojām var ietekmēt starpniekserveru atrašana vidē. Pārvietojot izsaukumu uz atkārtoti izmantojamu Session, nosakiet, kā sadarbojas vides mainīgie, Session noklusējumi un pieprasījuma pārrakstījumi; savienojuma atkārtota izmantošana un maršrutēšanas politika ir atsevišķas izvēles.