Python Requests ішінде прокси IP пайдалану
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 URL үшін http және HTTPS URL үшін https. Мәндер прокси тыңдаушысын сипаттайды. Желі бөлек маршруттарды талап етсе, соңғы нүктелер әртүрлі болуы мүмкін.
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 әдепкілері мен әр сұраудың ауыстырулары қалай әрекеттесетінін шешіңіз; қосылымды қайта қолдану мен маршрут саясаты бөлек таңдаулар.