Коришћење IP адресе проксија у Python Requests-у
Поставите изричите прокси руте по захтеву у Requests-у, изаберите одговарајућу шему крајње тачке и обрадите временска прекорачења и грешке HTTPS тунела.
Када је Requests доступан у пројекту, проследите позиву мапирање проксија:
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)
Замените loopback крајњу тачку својим активним проксијем или кандидатом са листе HTTP проксија којег ћете тестирати овим захтевом. Кључеви описују шеме одредишта: http за HTTP URL-ове и https за HTTPS URL-ове. Вредности описују интерфејс проксија који ослушкује. Могу бити различите крајње тачке ако мрежа захтева одвојене руте.
Вредност проксија http:// под кључем https је намерна. Requests тражи CONNECT тунел од HTTP интерфејса, затим кроз њега успоставља TLS са одредиштем, у складу с правилима проксија за одредишта и портове. Промена вредности у https:// тражи TLS до самог проксија; може да не успе ако интерфејс очекује нешифровани HTTP.
Шта значе два броја временског ограничења
timeout=(5, 15) поставља временска ограничења за повезивање и читање. Не намеће укупан рок од петнаест секунди. Периодично пристизање података, више адреса и покушаји повезивања могу продужити протекло време. Requests не даје опште ограничење ако изоставите поставку. Изаберите границе примерене одговору и додајте рок на нивоу апликације ако посао захтева строг укупан временски буџет.
Обрадите неуспех у фази у којој настаје
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)
Одбијени CONNECT може изазвати ProxyError пре него што постоји одговор одредишта. Грана HTTPError следи примљени одговор са статусом грешке; Timeout значи да је постављена граница истекла. Ланце изузетака успостављања везе прегледајте локално и пре дељења уклоните крајње тачке са акредитивима и приватне URL-ове.
Оставите проверу сертификата укљученом. Ако овлашћена мрежа користи приватни CA или управљано пресретање, обезбедите очекивани материјал поверења уместо искључивања провере.
Изричити уноси по захтеву контролишу овде наведене руте, али на изостављене шеме и даље може утицати откривање проксија из окружења. Када позив премештате у вишекратно употребљиву Session, одредите како треба да делују променљиве окружења, подразумеване вредности Session и надјачавања по захтеву; поновна употреба везе и политика рутирања су одвојене одлуке.