Uzi prokurilan IP-adreson en Python Requests
Agordu eksplicitajn prokurilajn vojojn por ĉiu peto en Requests, elektu la ĝustan finpunktan skemon kaj traktu tempolimojn kaj HTTPS-tunelajn malsukcesojn.
Kiam Requests disponeblas en via projekto, transdonu prokurilan mapigon al la alvoko:
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)
Anstataŭigu la buklorevenan finpunkton per via funkcianta prokurilo aŭ kandidato el la listo de HTTP-prokuriloj, kiun vi testos per ĉi tiu peto. La ŝlosiloj priskribas la celskemojn: http por HTTP-URL-oj kaj https por HTTPS-URL-oj. La valoroj priskribas la prokurilan aŭskultanton. Ili povas esti malsamaj finpunktoj se la reto postulas apartajn vojojn.
Prokurila valoro http:// sub la ŝlosilo https estas intenca. Requests petas CONNECT-tunelon de la HTTP-aŭskultanto kaj poste starigas TLS al la celo tra ĝi, laŭ la celaj kaj pordaj reguloj de la prokurilo. Ŝanĝi la valoron al https:// petas TLS al la prokurilo mem; tio povas malsukcesi se la aŭskultanto atendas neĉifritan HTTP.
Kion signifas la du tempolimaj nombroj
timeout=(5, 15) difinas tempolimojn por konektado kaj legado. Ĝi ne trudas totalan limdaton de dek kvin sekundoj. Periode alvenantaj datumoj, pluraj adresoj kaj konektoprovoj povas plilongigi la pasintan tempon. Requests ne donas ĝeneralan tempolimon se vi preterlasas la agordon. Elektu limojn taŭgajn al la respondo kaj aldonu limdaton je aplikaĵa nivelo se la laboro bezonas striktan totalan tempobuĝeton.
Traktu la malsukceson ĉe la koncerna etapo
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)
Malakceptita CONNECT povas kaŭzi ProxyError antaŭ ol cela respondo ekzistas. La branĉo HTTPError sekvas ricevitan respondon kun erarstato; Timeout signifas, ke agordita limo eksvalidiĝis. Ekzamenu lokan konektstarigan esceptoĉenon kaj forigu finpunktojn kun akreditaĵoj kaj privatajn URL-ojn antaŭ ol dividi ĝin.
Lasu atestilkontrolon ŝaltita. Se la rajtigita reto uzas privatan CA aŭ administratan interkapton, donu la atendatajn fidmaterialojn anstataŭ malŝalti la kontrolon.
Eksplicitaj enskriboj por ĉiu peto regas la ĉi tie donitajn vojojn, sed preterlasitaj skemoj povas ankoraŭ esti influitaj de prokurila malkovro el la medio. Movante la alvokon en reuzeblan Session, decidu kiel interagu medivariabloj, defaŭltoj de Session kaj superregoj por ĉiu peto; konekta reuzo kaj vojiga politiko estas apartaj elektoj.