Gebruik ’n instaanbediener-IP in Python Requests
Stel uitdruklike instaanbedienerroetes per versoek in Requests, kies die regte eindpuntskema en hanteer uitteltye en HTTPS-tonnelfoute.
Wanneer Requests in jou projek beskikbaar is, gee ’n instaanbedienerkartering aan die oproep:
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)
Vervang die terugluseindpunt met jou lopende instaanbediener of ’n kandidaat uit die HTTP-instaanbedienerlys wat jy met hierdie versoek sal toets. Die sleutels beskryf bestemmingskemas: http vir HTTP-URL’s en https vir HTTPS-URL’s. Die waardes beskryf die instaanbediener se luisterpunt. Dit kan verskillende eindpunte wees as jou netwerk afsonderlike roetes vereis.
’n Instaanbedienerwaarde met http:// onder die sleutel https is opsetlik. Requests vra die HTTP-luisterpunt vir ’n CONNECT-tonnel en vestig daarna bestemming-TLS daardeur, onderhewig aan die instaanbediener se bestemmings- en poortbeleid. Om dit na https:// te verander vra vir TLS na die instaanbediener self; dit kan misluk as die luisterpunt ongeënkripteerde HTTP verwag.
Wat die twee uittelgetalle beteken
timeout=(5, 15) stel verbindings- en leesuitteltye. Dit lê nie ’n totale sperdatum van vyftien sekondes op nie. Gereelde inkomende data, verskeie adresse en verbindingspogings kan die verstreke tyd verleng. Requests gee geen algemene uitteltyd as jy die instelling weglaat nie. Kies dus perke wat by die antwoord pas en voeg ’n sperdatum op toepassingsvlak by as die taak ’n streng totale tydbegroting vereis.
Hanteer die fout waar dit ontstaan
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)
’n Verwerpte CONNECT kan ProxyError veroorsaak voordat daar ’n bestemmingsantwoord is. Die HTTPError-tak volg op ’n ontvangde antwoord met foutstatus; Timeout beteken dat ’n ingestelde perk verstryk het. Ondersoek verbindingsopstel se uitsonderingskettings plaaslik en verwyder eindpunte met aanmeldbesonderhede en private URL’s voordat jy dit deel.
Hou sertifikaatverifikasie aangeskakel. As die gemagtigde netwerk ’n private CA of bestuurde onderskepping gebruik, verskaf die verwagte vertrouensmateriaal eerder as om verifikasie af te skakel.
Uitdruklike inskrywings per versoek beheer die roetes wat hier gegee word, maar weggelate skemas kan steeds deur instaanbedieneropsporing uit die omgewing beïnvloed word. Wanneer jy die oproep na ’n herbruikbare Session verskuif, besluit hoe omgewingsveranderlikes, Session-verstekke en oorskrywings per versoek moet saamwerk; verbindingshergebruik en roetebeleid is afsonderlike keuses.