Python Requests တွင် ပရောက်စီ အသုံးပြုနည်း (HTTP/HTTPS နှင့် Session pooling)
Updated:
Python ၏ requests library သည် 'http' နှင့် 'https' scheme နှစ်ခုစလုံးကို http://user:pass@ip:port သို့ ချိတ်ဆက်ပေးသည့် proxies dictionary မှတစ်ဆင့် authenticated VinaProxy ပရောက်စီများကို လက်ခံပါသည်။ ထို dictionary ကို persistent requests.Session() နှင့် ချိတ်ဆက်ခြင်းသည် မြန်ဆန်ပြီး overhead သက်သာသော web scraping ပြုလုပ်နိုင်ရန် အောက်ခံ TCP socket များကို ပြန်လည်အသုံးပြုစေပါသည်။
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP၄၀,၀၀၀ ₫
- 5+ IPs၃၅,၀၀၀ ₫
- 10+ IPs၂၅,၀၀၀ ₫
- 20+ IPs၂၅,၀၀၀ ₫
- 50+ IPs၂၅,၀၀၀ ₫
- 100+ IPs၂၅,၀၀၀ ₫
- 200+ IPs၂၅,၀၀၀ ₫
- 500+ IPs၂၅,၀၀၀ ₫
- 1000+ IPs၂၂,၀၀၀ ₫
- 2000+ IPs၂၀,၀၀၀ ₫
- 1 IP၄၀,၀၀၀ ₫
- 5+ IPs၃၅,၀၀၀ ₫
- 10+ IPs၂၅,၀၀၀ ₫
- 20+ IPs၂၅,၀၀၀ ₫
- 50+ IPs၂၅,၀၀၀ ₫
- 100+ IPs၂၅,၀၀၀ ₫
- 200+ IPs၂၅,၀၀၀ ₫
- 500+ IPs၂၅,၀၀၀ ₫
- 1000+ IPs၂၂,၀၀၀ ₫
- 2000+ IPs၂၀,၀၀၀ ₫
proxies dictionary ပုံစံချခြင်းနှင့် Session များကို ပြန်လည်အသုံးပြုခြင်း
URL တစ်ခုစီတိုင်းတွင် requests.get() ကို ခေါ်ယူခြင်းသည် အကြိမ်တိုင်းတွင် TCP connection အသစ်နှင့် TLS handshake အသစ်ကို ဖန်တီးစေပါသည်။ သင့်ပရောက်စီကို session = requests.Session() နှင့် ချိတ်ဆက်ထားခြင်းက ဆက်တိုက်တောင်းဆိုမှုများတစ်လျှောက် ပရောက်စီ tunnel ကို ပွင့်နေစေပါသည်။
| Requests Parameter | အကြံပြုထားသော Syntax | နည်းပညာဆိုင်ရာ ရည်ရွယ်ချက် |
|---|---|---|
'http' key | 'http://user:pass@ip:port' | သာမန် HTTP တောင်းဆိုမှုများကို ပရောက်စီမှတစ်ဆင့် ပို့ဆောင်ပေးသည် |
'https' key | 'http://user:pass@ip:port' | TLS အတွက် urllib3 က HTTP CONNECT tunnel တစ်ခု ပြုလုပ်နိုင်ရန် http:// scheme ကို အသုံးပြုသည် |
timeout tuple | timeout=(5, 15) | 5s connect timeout နှင့် 15s read timeout သည် worker thread များ ရပ်တန့်မသွားစေရန် ကာကွယ်ပေးသည် |
| Pool rotation | itertools.cycle(proxy_list) | သင့် dedicated static IP pool တစ်လျှောက် ညီညီညာညာ အလှည့်ကျ အသုံးပြုစေသည် |
အဖြစ်များသော urllib3 နှင့် ProxyError ပြဿနာများကို ရှောင်ရှားခြင်း
- သင့်ပရောက်စီ port သည် TLS-over-TLS ကို အတိအလင်း မလိုအပ်ပါက
'http'နှင့်'https'dictionary key နှစ်ခုစလုံးအတွက် ပရောက်စီ URL scheme အဖြစ် (https://မဟုတ်ဘဲ)http://ကို အမြဲသုံးပါ urllib.parse.quote(password, safe='')ကို အသုံးပြု၍ စကားဝှက်အတွင်းရှိ အထူးအက္ခရာများကို URL-encode ပြုလုပ်ပါ407 Proxy Authentication Requiredအမှားသည် သင့် URL စာကြောင်းရှိ username သို့မဟုတ် password သည် သင့် dashboard အထောက်အထားများနှင့် ကိုက်ညီမှုမရှိကြောင်း ပြသခြင်းဖြစ်သည်httpx.Client(proxy='http://user:pass@ip:port')နှင့်aiohttpsession.get(url, proxy=...)တို့တွင်လည်း ထပ်တူညီစွာ အလုပ်လုပ်ပါသည်
အဆင့်ဆင့် လုပ်ဆောင်ရန်
- 1
ip:port:user:pass ကို URL syntax သို့ ပြောင်းလဲပါ
သင့် VinaProxy စာရင်းကို
http://user:pass@ip:portစာကြောင်းများအဖြစ် ပြောင်းလဲရန် ကျွန်ုပ်တို့၏ Proxy Format Converter ကို အသုံးပြုပါ။ - 2
proxies dictionary ကို သတ်မှတ်ပါ
သင့် Python script တွင်
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}ဟု သတ်မှတ်ပါ။ - 3
requests.Session() instance နှင့် ချိတ်ဆက်ပါ
အမြဲဖွင့်ထားသော
Keep-Alivepooling အတွက်s = requests.Session()ကို စတင်ပြီးs.proxies.update(proxies)ကို ခေါ်ယူပါ။ - 4
စမ်းသပ်တောင်းဆိုမှုဖြင့် ထွက်ပေါက် IP ကို စစ်ဆေးပါ
လက်ရှိအသုံးပြုနေသော ပရောက်စီ IP ကို အတည်ပြုရန်
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())ကို run ပါ။
မကြာခဏမေးလေ့ရှိသော မေးခွန်းများ
'https' key သည် အဘယ်ကြောင့် 'http://user:pass@ip:port' ကို သုံးသနည်း။
http:// ရှေ့ဆက်သည် ပရောက်စီဆာဗာထံသို့ ချိတ်ဆက်ပုံ (ပုံမှန် HTTP CONNECT ကို သုံး၍) ကို urllib3 အား ညွှန်ကြားပေးပြီး ပစ်မှတ် https:// ဝဘ်ဆိုက်သို့ သွားသော သင်၏ အစအဆုံး traffic မှာမူ TLS ဖြင့် အပြည့်အဝ encrypt လုပ်ထားဆဲ ဖြစ်ပါသည်။
Python တွင် တောင်းဆိုမှုများတစ်လျှောက် static ပရောက်စီ 25 ခုကို မည်သို့ လှည့်သုံးရမည်နည်း။
သင့် ပရောက်စီ URL 25 ခုကို pool = itertools.cycle(PROXIES) ထဲသို့ ထည့်သွင်းပြီး သင့်တင့်သော per-IP rate limiting ဖြင့် တောင်းဆိုမှုတစ်ခုစီအတွက် proxies={'http': p, 'https': p} ကို ပေးပို့ပါ။
VinaProxy သည် Python scraping script များတွင် bandwidth ကို ကန့်သတ်တိုင်းတာပါသလား။
မကန့်သတ်ပါ။ Dedicated IPv4 နှင့် Static ISP အစီအစဉ်အားလုံးတွင် လစဉ်အကန့်အသတ်မဲ့ traffic ပါဝင်ပါသည်။
အကန့်အသတ်မဲ့ Python scraping pool တစ်ခု တည်ဆောက်ပါ
နိုင်ငံ 7 နိုင်ငံရှိ ချက်ချင်းရရှိနိုင်သော Dedicated IPv4 နှင့် Static ISP ပရောက်စီများ။
Python ပရောက်စီများ ဝယ်ယူရန်