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 svojim 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 krajnje 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, zatim kroz njega uspostavlja TLS s odredištem, prema pravilima proxyja za odredišta i portove. Promjena vrijednosti u https:// traži TLS do samog proxyja; može biti neuspješna ako sučelje očekuje nešifrirani HTTP.

Šta znače dva broja vremenskog ograničenja

timeout=(5, 15) postavlja vremenska ograničenja povezivanja i čitanja. Ne nameće ukupni rok od petnaest sekundi. Periodični dolasci podataka, više adresa i pokušaji povezivanja mogu produžiti proteklo vrijeme. Requests ne daje opće ograničenje ako izostavite postavku. Izaberite granice primjerene odgovoru i dodajte rok na nivou aplikacije ako posao zahtijeva strog ukupni vremenski budžet.

Obradite neuspjeh u fazi u kojoj nastaje

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 što postoji odgovor odredišta. Grana HTTPError slijedi primljeni odgovor sa statusom greške; Timeout znači istek postavljene granice. Lance izuzetaka uspostavljanja veze pregledajte lokalno te prije dijeljenja uklonite krajnje tačke s akreditivima i privatne URL-ove.

Ostavite provjeru certifikata uključenom. Ako ovlaštena mreža koristi privatni CA ili upravljano presretanje, pružite očekivani materijal povjerenja umjesto isključivanja provjere.

Izričiti unosi po zahtjevu upravljaju ovdje navedenim rutama, ali na izostavljene sheme i dalje može utjecati otkrivanje proxyja iz okruženja. Kada poziv premještate u višekratno upotrebljivu Session, odredite kako trebaju međudjelovati varijable okruženja, zadane vrijednosti Session i nadjačavanja po zahtjevu; ponovna upotreba veze i politika rutiranja odvojeni su izbori.

Povezani članci