Python Requests-də proksi IP-dən istifadə
Requests-də hər sorğu üçün proksi marşrutlarını açıq təyin edin, düzgün son nöqtə sxemini seçin və vaxt aşımı ilə HTTPS tunel xətalarını idarə edin.
Requests layihədə mövcuddursa, çağırışa proksi uyğunlaşdırması ötürün:
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)
Geri dövrə son nöqtəsini işləyən proksinizlə və ya bu sorğu ilə yoxlayacağınız HTTP proksi siyahısından namizədlə əvəz edin. Açarlar təyinat sxemlərini təsvir edir: HTTP URL-ləri üçün http, HTTPS URL-ləri üçün https. Dəyərlər proksi dinləyicisini təsvir edir. Şəbəkəniz ayrıca marşrutlar tələb edirsə, fərqli son nöqtələr ola bilər.
http:// proksi dəyərinin https açarı altında olması qəsdəndir. Requests HTTP dinləyicisindən CONNECT tuneli istəyir, sonra proksinin təyinat və port siyasətinə uyğun olaraq tuneldən təyinat TLS bağlantısı yaradır. Dəyəri https:// etmək proksinin özünə TLS tələb edir; dinləyici şifrələnməmiş HTTP gözləyirsə, uğursuz ola bilər.
İki vaxt limiti rəqəmi nə deməkdir?
timeout=(5, 15) bağlantı və oxuma vaxt limitlərini təyin edir. Ümumi on beş saniyəlik son müddət qoymur. Müntəzəm gələn məlumatlar, çoxsaylı ünvanlar və bağlantı cəhdləri keçən vaxtı uzada bilər. Parametri buraxdıqda Requests ümumi vaxt limiti vermir. Cavaba uyğun hədlər seçin və işə sərt ümumi vaxt büdcəsi lazımdırsa, tətbiq səviyyəsində son müddət əlavə edin.
Uğursuzluğu baş verdiyi mərhələdə idarə edin
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)
Rədd edilmiş CONNECT təyinat cavabı mövcud olmadan ProxyError yarada bilər. HTTPError budağı xəta statuslu cavab alındıqdan sonra gəlir; Timeout konfiqurasiya edilmiş həddin bitdiyini bildirir. Bağlantı qurulmasının istisna zəncirlərini yerli yoxlayın, paylaşmazdan əvvəl giriş məlumatlı son nöqtələri və şəxsi URL-ləri çıxarın.
Sertifikat yoxlamasını açıq saxlayın. Səlahiyyətli şəbəkə özəl CA və ya idarə olunan müdaxilə işlədirsə, yoxlamanı söndürmək əvəzinə gözlənilən etibar materialını verin.
Hər sorğu üçün açıq girişlər burada verilən marşrutları idarə edir, lakin buraxılmış sxemlər mühitdən proksi aşkarlanmasından yenə təsirlənə bilər. Çağırışı təkrar istifadə olunan Session-a keçirəndə mühit dəyişənləri, Session standartları və hər sorğuya aid əvəzləmələrin necə qarşılıqlı işləməsini müəyyən edin; bağlantıdan təkrar istifadə və marşrut siyasəti ayrı seçimlərdir.