Kaip naudoti proxy su Python Requests (HTTP/HTTPS ir sesijų telkimas)
Updated:
Python biblioteka requests priima autentifikuotus VinaProxy proxy per proxies žodyną, susiejantį tiek 'http', tiek 'https' schemas su http://user:pass@ip:port. Šio žodyno priskyrimas nuolatiniam requests.Session() pakartotinai naudoja TCP lizdus greitam duomenų rinkimui su mažomis pridėtinėmis sąnaudomis.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40 000 VND
- Nuo 5 IP35 000 VND
- Nuo 10 IP25 000 VND
- Nuo 20 IP25 000 VND
- Nuo 50 IP25 000 VND
- Nuo 100 IP25 000 VND
- Nuo 200 IP25 000 VND
- Nuo 500 IP25 000 VND
- Nuo 1000 IP22 000 VND
- Nuo 2000 IP20 000 VND
- 1 IP40 000 VND
- Nuo 5 IP35 000 VND
- Nuo 10 IP25 000 VND
- Nuo 20 IP25 000 VND
- Nuo 50 IP25 000 VND
- Nuo 100 IP25 000 VND
- Nuo 200 IP25 000 VND
- Nuo 500 IP25 000 VND
- Nuo 1000 IP22 000 VND
- Nuo 2000 IP20 000 VND
Žodyno proxies formatavimas ir sesijų pakartotinis naudojimas
Kviečiant requests.get() kiekvienam URL, kaskart sukuriamas visiškai naujas TCP ryšys ir atliekamas TLS rankos paspaudimas. Susiejus proxy su session = requests.Session(), proxy tunelis išlieka atidarytas kelioms iš eilės einančioms užklausoms.
| Requests parametras | Rekomenduojama sintaksė | Techninė paskirtis |
|---|---|---|
'http' raktas | 'http://user:pass@ip:port' | Nukreipia paprastas HTTP užklausas per proxy |
'https' raktas | 'http://user:pass@ip:port' | Naudoja http:// schemą, kad urllib3 inicijuotų HTTP CONNECT tunelį TLS ryšiui |
timeout kortežas | timeout=(5, 15) | 5 s prisijungimo ir 15 s skaitymo skirtasis laikas apsaugo nuo pakibusių gijų |
| Telkinio rotacija | itertools.cycle(proxy_list) | Tolygiai cikliškai keičia jūsų dedikuotų statinių IP telkinio adresus |
Dažnų urllib3 ir ProxyError klaidų vengimas
- Visada naudokite
http://(nehttps://) kaip proxy URL schemą tiek'http', tiek'https'žodyno raktams, nebent jūsų proxy prievadas aiškiai reikalauja TLS-over-TLS - Užkoduokite specialiuosius simbolius slaptažodžiuose naudodami
urllib.parse.quote(password, safe='') - Klaida
407 Proxy Authentication Requiredreiškia, kad jūsų URL eilutėje nurodytas vartotojo vardas arba slaptažodis nesutampa su valdymo skydelio prisijungimo duomenimis - Veikia identiškai su
httpx.Client(proxy='http://user:pass@ip:port')iraiohttpsession.get(url, proxy=...)
Žingsnis po žingsnio
- 1
Konvertuokite ip:port:user:pass į URL sintaksę
Naudokite mūsų Proxy formato keitiklį, kad paverstumėte savo VinaProxy sąrašą į
http://user:pass@ip:porteilutes. - 2
Apibrėžkite proxies žodyną
Nustatykite
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}savo Python scenarijuje. - 3
Pridėkite prie requests.Session() egzemplioriaus
Inicijuokite
s = requests.Session()ir iškvieskites.proxies.update(proxies)nuolatiniamKeep-Alivetelkimui. - 4
Patikrinkite išorinio mazgo IP bandomąja užklausa
Paleiskite
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json()), kad patvirtintumėte aktyvų proxy IP.
Dažnai užduodami klausimai
Kodėl 'https' raktas naudoja 'http://user:pass@ip:port'?
Priešdėlis http:// nurodo bibliotekai urllib3, kaip prisijungti prie paties proxy serverio (naudojant standartinį HTTP CONNECT), o jūsų srautas nuo pradžios iki pabaigos į tikslinę https:// svetainę lieka visiškai užšifruotas TLS.
Kaip Python aplinkoje rotuoti 25 statinius proxy tarp užklausų?
Įkelkite savo 25 proxy URL į pool = itertools.cycle(PROXIES) ir perduokite proxies={'http': p, 'https': p} kiekvienai užklausai su saikingu užklausų dažnio ribojimu kiekvienam IP.
Ar VinaProxy riboja duomenų srautą Python duomenų rinkimo scenarijams?
Ne. Į visus Dedicated IPv4 ir Static ISP planus įtrauktas neribotas mėnesinis srautas.
Sukurkite neribotą Python duomenų rinkimo telkinį
Akimirksniu paruošti Dedicated IPv4 ir Static ISP proxy 7 šalyse.
Pirkti Python proxy