Kuinka käyttää välityspalvelinta Python Requestsissä (HTTP/HTTPS ja Session-poolaus)
Updated:
Pythonin requests-kirjasto tukee todennettuja VinaProxy-proxyja proxies-sanakirjan avulla, joka määrittää sekä 'http'- että 'https'-protokollat muotoon http://user:pass@ip:port. Sanakirjan liittäminen pysyvään requests.Session()-istuntoon käyttää olemassa olevia TCP-socketeja uudelleen, mikä mahdollistaa nopean tiedonkeruun pienellä lisäkuormalla.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40 000 VND
- 5+ IP:tä35 000 VND
- 10+ IP:tä25 000 VND
- 20+ IP:tä25 000 VND
- 50+ IP:tä25 000 VND
- 100+ IP:tä25 000 VND
- 200+ IP:tä25 000 VND
- 500+ IP:tä25 000 VND
- 1000+ IP:tä22 000 VND
- 2000+ IP:tä20 000 VND
- 1 IP40 000 VND
- 5+ IP:tä35 000 VND
- 10+ IP:tä25 000 VND
- 20+ IP:tä25 000 VND
- 50+ IP:tä25 000 VND
- 100+ IP:tä25 000 VND
- 200+ IP:tä25 000 VND
- 500+ IP:tä25 000 VND
- 1000+ IP:tä22 000 VND
- 2000+ IP:tä20 000 VND
Proxies-sanakirjan muotoilu ja Session-istuntojen uudelleenkäyttö
Kutsun tekeminen komennolla requests.get() jokaiselle URL-osoitteelle luo joka kerta täysin uuden TCP-yhteyden ja TLS-kättelyn. Proxyn sitominen istuntoon session = requests.Session() pitää proxytunnelin auki peräkkäisten pyyntöjen välillä.
| Requests-parametri | Suositeltu syntaksi | Tekninen käyttötarkoitus |
|---|---|---|
'http'-avain | 'http://user:pass@ip:port' | Reitittää tavalliset HTTP-pyynnöt proxyn kautta |
'https'-avain | 'http://user:pass@ip:port' | Käyttää http://-skeemaa, jotta urllib3 muodostaa HTTP CONNECT -tunnelin TLS-yhteydelle |
timeout-monikko | timeout=(5, 15) | 5 s yhteyden aikakatkaisu ja 15 s luvun aikakatkaisu estävät säikeiden jumiutumisen |
| Poolin kierrätys | itertools.cycle(proxy_list) | Kierrättää pyynnöt tasaisesti dedikoidussa staattisessa IP-poolissasi |
Yleisten urllib3- ja ProxyError-ongelmien välttäminen
- Käytä aina muotoa
http://(eihttps://) proxyn URL-skeemana sekä'http'- että'https'-sanakirja-avaimille, ellei proxy-porttisi vaadi nimenomaisesti TLS-over-TLS-yhteyttä - URL-koodaa salasanojen erikoismerkit funktiolla
urllib.parse.quote(password, safe='') - Virhe
407 Proxy Authentication Requiredtarkoittaa, että URL-merkkijonon käyttäjätunnus tai salasana ei vastannut hallintapaneelisi kirjautumistietoja - Toimii identtisesti kirjastoilla
httpx.Client(proxy='http://user:pass@ip:port')jaaiohttpsession.get(url, proxy=...)
Vaihe vaiheelta
- 1
Muunna ip:port:user:pass URL-syntaksiin
Käytä työkaluamme Proxy Format Converter muuntaaksesi VinaProxy-listasi
http://user:pass@ip:port-merkkijonoiksi. - 2
Määritä proxies-sanakirja
Aseta Python-skriptiisi
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}. - 3
Liitä requests.Session() -instanssiin
Alusta
s = requests.Session()ja kutsus.proxies.update(proxies)pysyvääKeep-Alive-poolausta varten. - 4
Vahvista ulospäin näkyvä IP testipyynnöllä
Suorita
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())tarkistaaksesi aktiivisen proxyn IP-osoitteen.
Usein kysytyt kysymykset
Miksi 'https'-avaimessa käytetään muotoa 'http://user:pass@ip:port'?
Etuliite http:// kertoo urllib3-kirjastolle, miten itse välityspalvelimeen yhdistetään (käyttäen standardia HTTP CONNECT -metodia), samalla kun päästä päähän -liikenne kohdesivustolle https:// säilyy täysin TLS-salattuna.
Miten kierrätän 25 staattista välityspalvelinta pyyntöjen välillä Pythonissa?
Lataa 25 proxy-URL-osoitettasi muuttujaan pool = itertools.cycle(PROXIES) ja välitä proxies={'http': p, 'https': p} jokaiselle pyynnölle huomioiden maltillinen IP-kohtainen pyyntönopeuden rajoitus.
Mittaako VinaProxy kaistanleveyttä Python-tiedonkeruuskripteissä?
Ei. Kaikki Dedicated IPv4- ja Static ISP -tilaukset sisältävät rajattoman kuukausittaisen tiedonsiirron.
Rakenna rajaton Python-tiedonkeruupooli
Heti käyttövalmiit Dedicated IPv4- ja Static ISP -proxyt 7 maassa.
Osta Python-proxyja