Proxy-IP használata Python Requestsben
Adjon meg kifejezett kérésenkénti proxyútvonalakat a Requestsben, válassza a megfelelő végpontsémát, és kezelje az időtúllépést és a HTTPS-alagút hibáit.
Ha a Requests elérhető a projektben, adjon a hívásnak proxyleképezést:
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)
A visszacsatolási végpontot cserélje le működő proxyjára vagy a HTTP-proxyk listájából választott jelöltre, amelyet ezzel a kéréssel tesztel. A kulcsok a cél sémáit írják le: http HTTP URL-ekhez, https HTTPS URL-ekhez. Az értékek a proxy figyelőjét írják le. Különböző végpontok is lehetnek, ha a hálózat külön útvonalakat igényel.
A http:// proxyérték a https kulcs alatt szándékos. A Requests CONNECT-alagutat kér a HTTP-figyelőtől, majd ezen keresztül építi fel a cél TLS-kapcsolatát, a proxy célokra és portokra vonatkozó szabályzata szerint. Az érték https:// formára cserélése magához a proxyhoz kér TLS-t; ez meghiúsulhat, ha a figyelő titkosítatlan HTTP-t vár.
Mit jelent a két időkorlátérték?
A timeout=(5, 15) a kapcsolódás és olvasás időkorlátját állítja be. Nem szab tizenöt másodperces teljes határidőt. Az időszakosan érkező adatok, több cím és kapcsolódási próbálkozások meghosszabbíthatják az eltelt időt. A Requests nem ad általános időkorlátot, ha a beállítás kimarad. Válasszon a válaszhoz illő korlátokat, és adjon alkalmazásszintű határidőt, ha a feladat szigorú teljes időkeretet igényel.
A hibát abban a fázisban kezelje, ahol bekövetkezik
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)
Az elutasított CONNECT ProxyError kivételt okozhat még azelőtt, hogy lenne célválasz. A HTTPError ág hibastátuszú beérkezett választ követ; a Timeout egy beállított korlát lejártát jelenti. A kapcsolatépítési kivételláncokat helyben vizsgálja meg, és megosztás előtt távolítsa el a hitelesítő adatokat tartalmazó végpontokat és privát URL-eket.
Hagyja bekapcsolva a tanúsítvány-ellenőrzést. Ha az engedélyezett hálózat privát CA-t vagy felügyelt elfogást használ, a várt bizalmi anyagot adja meg az ellenőrzés kikapcsolása helyett.
A kifejezett kérésenkénti bejegyzések az itt megadott útvonalakat szabályozzák, de a kihagyott sémákra továbbra is hatással lehet a környezetből történő proxyfelderítés. A hívás újrahasználható Sessionbe helyezésekor döntse el, hogyan működjenek együtt a környezeti változók, Session-alapértékek és kérésenkénti felülírások; a kapcsolat újrahasználata és az útvonalválasztási szabályzat külön döntés.