Python Requests дээр прокси хэрхэн ашиглах вэ (HTTP/HTTPS ба Session pooling)
Updated:
Python-ий requests сан нь 'http' болон 'https' схемийг хоёуланг нь http://user:pass@ip:port руу заасан proxies толь бичгээр дамжуулан баталгаажуулалттай VinaProxy проксиг хүлээн авдаг. Энэхүү толь бичгийг байнгын requests.Session()-д холбосноор үндсэн TCP сокетуудыг дахин ашиглаж, вэб скрапингийг хурдан, ачаалал багатай гүйцэтгэдэг.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP₫ 40,000
- 5+ IP₫ 35,000
- 10+ IP₫ 25,000
- 20+ IP₫ 25,000
- 50+ IP₫ 25,000
- 100+ IP₫ 25,000
- 200+ IP₫ 25,000
- 500+ IP₫ 25,000
- 1000+ IP₫ 22,000
- 2000+ IP₫ 20,000
- 1 IP₫ 40,000
- 5+ IP₫ 35,000
- 10+ IP₫ 25,000
- 20+ IP₫ 25,000
- 50+ IP₫ 25,000
- 100+ IP₫ 25,000
- 200+ IP₫ 25,000
- 500+ IP₫ 25,000
- 1000+ IP₫ 22,000
- 2000+ IP₫ 20,000
proxies толь бичгийг бүтэцжүүлэх ба Session-ийг дахин ашиглах
URL бүр дээр requests.get() дуудах нь тухай бүр шинэ TCP холболт болон TLS гар барилт үүсгэдэг. Проксигоо session = requests.Session()-тэй холбосноор дараалсан хүсэлтүүдийн туршид прокси туннелийг нээлттэй хадгалдаг.
| Requests параметр | Зөвлөмжит синтакс | Техникийн зориулалт |
|---|---|---|
'http' түлхүүр | 'http://user:pass@ip:port' | Энгийн HTTP хүсэлтүүдийг проксигоор дамжуулна |
'https' түлхүүр | 'http://user:pass@ip:port' | TLS-д зориулж urllib3 нь HTTP CONNECT туннель үүсгэхийн тулд http:// схемийг ашигладаг |
timeout tuple | timeout=(5, 15) | 5 сек холболтын timeout ба 15 сек унших timeout нь ажиллах thread-үүд гацахаас сэргийлнэ |
| Сангийн сэлгэлт | itertools.cycle(proxy_list) | Таны зориулалтын статик IP сан дундуур жигд сэлгэж ажиллана |
urllib3 болон ProxyError-ийн түгээмэл алдаанаас зайлсхийх
- Прокси порт тань TLS-over-TLS шаардаагүй л бол
'http'болон'https'толь бичгийн түлхүүрүүдийн аль алинд нь прокси URL схемээр үргэлжhttp://-ийг (https://биш) ашиглаарай - Нууц үгэн дэх тусгай тэмдэгтүүдийг
urllib.parse.quote(password, safe='')ашиглан URL-кодчилоорой 407 Proxy Authentication Requiredалдаа нь URL мөр дэх хэрэглэгчийн нэр эсвэл нууц үг хяналтын самбарын нэвтрэх мэдээлэлтэй тохирохгүй байгааг илтгэнэhttpx.Client(proxy='http://user:pass@ip:port')болонaiohttp-ийнsession.get(url, proxy=...)дээр яг ижил зарчмаар ажиллана
Алхам алхмаар
- 1
ip:port:user:pass-ийг URL синтакс руу хөрвүүлэх
Манай Proxy Format Converter-ийг ашиглан өөрийн VinaProxy жагсаалтыг
http://user:pass@ip:portмөр болгон хөрвүүлээрэй. - 2
proxies толь бичгийг тодорхойлох
Python скриптдээ
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}гэж тохируулаарай. - 3
requests.Session() жишээнд холбох
s = requests.Session()-ийг үүсгэж, байнгынKeep-Alivepooling хийхийн тулдs.proxies.update(proxies)-ийг дуудна уу. - 4
Туршилтын хүсэлтээр гаралтын IP-г шалгах
Идэвхтэй прокси IP-г баталгаажуулахын тулд
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())кодыг ажиллуулна уу.
Түгээмэл асуултууд
'https' түлхүүр яагаад 'http://user:pass@ip:port'-ийг ашигладаг вэ?
http:// угтвар нь urllib3-д прокси сервер рүү өөрт нь хэрхэн холбогдохыг (стандарт HTTP CONNECT ашиглан) зааж өгдөг бөгөөд зорилтот https:// вэбсайт руу чиглэсэн таны төгсгөл хоорондын урсгал бүрэн TLS шифрлэлттэй хэвээр үлдэнэ.
Python дээр хүсэлтүүд дундуур 25 статик проксиг хэрхэн сэлгэх вэ?
25 прокси URL-аа pool = itertools.cycle(PROXIES)-д ачаалж, IP бүрийн давтамжийг зохистой хязгаарлан хүсэлт тус бүрт proxies={'http': p, 'https': p} дамжуулна уу.
VinaProxy нь Python скрапинг скриптүүдийн дата хэрэглээг хязгаарладаг уу?
Үгүй. Бүх Dedicated IPv4 болон Static ISP багцууд сарын хязгааргүй траффик агуулдаг.
Хязгааргүй дататай Python скрапинг сан үүсгэх
7 улс дахь Dedicated IPv4 болон Static ISP проксиг шуурхай авах.
Python прокси худалдаж авах