نحوه استفاده از پروکسی در Python Requests (HTTP/HTTPS و استخر Session)
Updated:
کتابخانه requests در Python پروکسیهای دارای احراز هویت VinaProxy را از طریق یک دیکشنری proxies که هر دو طرحواره 'http' و 'https' را به http://user:pass@ip:port نگاشت میکند، میپذیرد. اتصال این دیکشنری به یک requests.Session() دائمی، سوکتهای TCP زیربنایی را برای وب اسکرپینگ سریع و کمهزینه مجدداً استفاده میکند.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 آیپی₫۴۰٬۰۰۰
- +5 آیپی₫۳۵٬۰۰۰
- +10 آیپی₫۲۵٬۰۰۰
- +20 آیپی₫۲۵٬۰۰۰
- +50 آیپی₫۲۵٬۰۰۰
- +100 آیپی₫۲۵٬۰۰۰
- +200 آیپی₫۲۵٬۰۰۰
- +500 آیپی₫۲۵٬۰۰۰
- +1000 آیپی₫۲۲٬۰۰۰
- +2000 آیپی₫۲۰٬۰۰۰
- 1 آیپی₫۴۰٬۰۰۰
- +5 آیپی₫۳۵٬۰۰۰
- +10 آیپی₫۲۵٬۰۰۰
- +20 آیپی₫۲۵٬۰۰۰
- +50 آیپی₫۲۵٬۰۰۰
- +100 آیپی₫۲۵٬۰۰۰
- +200 آیپی₫۲۵٬۰۰۰
- +500 آیپی₫۲۵٬۰۰۰
- +1000 آیپی₫۲۲٬۰۰۰
- +2000 آیپی₫۲۰٬۰۰۰
فرمتبندی دیکشنری proxies و استفاده مجدد از Sessions
فراخوانی requests.get() برای هر URL، هربار یک اتصال TCP و دستتکانی TLS کاملاً جدید ایجاد میکند. متصل کردن پروکسی به session = requests.Session() تونل پروکسی را در طول درخواستهای متوالی باز نگه میدارد.
| پارامتر Requests | سینتکس پیشنهادی | هدف فنی |
|---|---|---|
کلید 'http' | 'http://user:pass@ip:port' | درخواستهای عادی HTTP را از طریق پروکسی هدایت میکند |
کلید 'https' | 'http://user:pass@ip:port' | از طرحواره http:// استفاده میکند تا urllib3 یک تونل HTTP CONNECT برای TLS ایجاد کند |
تاپل timeout | timeout=(5, 15) | تایماوت اتصال 5 ثانیهای و خواندن 15 ثانیهای مانع از متوقف شدن رشتههای ورکر میشود |
| چرخش استخر | itertools.cycle(proxy_list) | بهطور یکنواخت در میان استخر IP استاتیک اختصاصی شما میچرخد |
اجتناب از خطاهای رایج urllib3 و ProxyError
- همیشه از
http://(نهhttps://) بهعنوان طرحواره URL پروکسی برای هر دو کلید دیکشنری'http'و'https'استفاده کنید، مگر اینکه پورت پروکسی شما صراحتاً نیازمند TLS-over-TLS باشد - کاراکترهای خاص در گذرواژهها را با استفاده از
urllib.parse.quote(password, safe='')کدگذاری URL کنید - خطای
407 Proxy Authentication Requiredبه این معنی است که نام کاربری یا گذرواژه در رشته URL شما با اطلاعات کاربری داشبورد مطابقت ندارد - بهطور یکسان با
httpx.Client(proxy='http://user:pass@ip:port')وaiohttpsession.get(url, proxy=...)کار میکند
گام به گام
- 1
تبدیل ip:port:user:pass به سینتکس URL
از Proxy Format Converter ما برای تبدیل لیست VinaProxy خود به رشتههای
http://user:pass@ip:portاستفاده کنید. - 2
تعریف دیکشنری proxies
مقدار
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}را در اسکریپت Python خود تنظیم کنید. - 3
اتصال به یک نمونه requests.Session()
نمونه
s = requests.Session()را مقداردهی اولیه کرده وs.proxies.update(proxies)را برای اتصال پایدارKeep-Aliveفراخوانی کنید. - 4
تأیید IP خروجی با یک درخواست آزمایشی
دستور
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())را برای تأیید IP فعال پروکسی اجرا کنید.
پرسشهای متداول
چرا کلید 'https' از 'http://user:pass@ip:port' استفاده میکند؟
پیشوند http:// به urllib3 نحوه اتصال به خود سرور پروکسی را (با استفاده از HTTP CONNECT استاندارد) اعلام میکند، در حالی که ترافیک سرتاسری شما به وبسایت مقصد https:// کاملاً با TLS رمزگذاریشده باقی میماند.
چگونه 25 پروکسی استاتیک را در بین درخواستها در Python بچرخانم؟
آدرسهای 25 پروکسی خود را در pool = itertools.cycle(PROXIES) بارگذاری کرده و proxies={'http': p, 'https': p} را به ازای هر درخواست به همراه محدودسازی نرخ مناسب به ازای هر IP ارسال کنید.
آیا VinaProxy پهنای باند را در اسکریپتهای اسکرپینگ Python محاسبه و محدود میکند؟
خیر. تمام پلنهای Dedicated IPv4 و Static ISP شامل ترافیک ماهانه نامحدود هستند.
ساخت استخر اسکرپینگ بدون محدودیت حجم در Python
پروکسیهای فوری Dedicated IPv4 و Static ISP در 7 کشور.
خرید پروکسیهای Python