Tarpinio serverio IP naudojimas Python Requests
Aiškiai nustatykite kiekvienos užklausos tarpinio serverio maršrutus Requests, pasirinkite tinkamą galinio taško schemą ir tvarkykite laiko ribas bei HTTPS tunelio klaidas.
Kai projekte yra Requests, perduokite iškvietimui tarpinių serverių atvaizdį:
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)
Grįžtamosios kilpos galinį tašką pakeiskite veikiančiu tarpiniu serveriu arba kandidatu iš HTTP tarpinių serverių sąrašo, kurį tikrinsite šia užklausa. Raktai nusako tikslo schemas: http HTTP URL ir https HTTPS URL. Reikšmės nusako tarpinio serverio klausytuvą. Tai gali būti skirtingi galiniai taškai, jei tinklas reikalauja atskirų maršrutų.
Tarpinio serverio reikšmė http:// po raktu https yra tyčinė. Requests prašo HTTP klausytuvo CONNECT tunelio ir tuomet per jį užmezga TLS su tikslu, pagal tarpinio serverio tikslų ir prievadų politiką. Pakeitus reikšmę į https:// prašoma TLS su pačiu tarpiniu serveriu; tai gali nepavykti, jei klausytuvas laukia nešifruoto HTTP.
Ką reiškia du laiko ribos skaičiai
timeout=(5, 15) nustato prisijungimo ir skaitymo laiko ribas. Tai nėra bendra penkiolikos sekundžių pabaigos riba. Periodiškai gaunami duomenys, keli adresai ir bandymai jungtis gali pailginti praėjusį laiką. Praleidus nustatymą, Requests bendros laiko ribos nepateikia. Pasirinkite atsakymui tinkamas ribas ir pridėkite programos lygmens terminą, jei darbui reikia griežto viso laiko biudžeto.
Klaidą tvarkykite tame etape, kuriame ji atsiranda
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)
Atmestas CONNECT gali sukelti ProxyError dar iki tikslo atsakymo. Šaka HTTPError seka gautą atsakymą su klaidos būsena; Timeout reiškia nustatytos ribos pabaigą. Ryšio užmezgimo išimčių grandines tikrinkite vietoje, o prieš dalydamiesi pašalinkite galinius taškus su prisijungimo duomenimis ir privačius URL.
Sertifikatų tikrinimą palikite įjungtą. Jei įgaliotas tinklas naudoja privatų CA ar valdomą perėmimą, pateikite numatytą pasitikėjimo medžiagą, o ne išjunkite tikrinimą.
Aiškūs kiekvienos užklausos įrašai valdo čia nurodytus maršrutus, bet praleistas schemas vis dar gali paveikti tarpinių serverių aptikimas iš aplinkos. Perkeldami iškvietimą į pakartotinai naudojamą Session nuspręskite, kaip sąveikaus aplinkos kintamieji, numatytosios Session reikšmės ir užklausos perrašymai; ryšio pakartotinis naudojimas ir maršrutų politika yra atskiri pasirinkimai.