Використання 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)
Замініть кінцеву точку зворотної петлі робочим проксі або кандидатом зі списку HTTP-проксі, якого перевірите цим запитом. Ключі описують схеми призначення: http для HTTP-URL і https для HTTPS-URL. Значення описують точку, на якій проксі приймає з’єднання. Це можуть бути різні кінцеві точки, якщо мережа потребує окремих маршрутів.
Значення проксі http:// під ключем https задане навмисно. Requests просить HTTP-проксі створити CONNECT-тунель, а тоді встановлює через нього 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 і перевизначення запиту; повторне використання з’єднань і політика маршрутизації — різні рішення.