Integratsiyalar · Boshlovchi

Python talablari, httpx va aiohttp bilan proksilarni qanday ishlatish kerak

Har bir kitobxona uchun uchta konfiguratsiya satri, keyin hamma joyda bir xil foydalanuvchi sintaksi: mamlakat, shahar va sessiya proksi URL'da mavjud, shuning uchun bitta geyt har bir ish uchun xizmat qiladi.

Oʻqish 6 boʻlim Ўрганилган Редакторлар гуруҳи Proxy Cyber

Proksi URL#

Har bir Python HTTP kitobxonasi proksini URL sifatida qabul qiladi. Proksi kaliti bilan URL sizning ishonchli maʼlumotlaringizni va maqsad parametrlari foydalanuvchi nomida; xost nomi geytuer va port protokolni tanlaydi.

Proksi URLlar
# Rotating: a new United States household on every new connection
http://USER-cc-us:PASS@res.proxy-cyber.com:9000

# Sticky: one Berlin household held for 30 minutes under the id "job42"
http://USER-cc-de-city-berlin-sid-job42-ttl-30m:PASS@res.proxy-cyber.com:9000

# SOCKS5 with remote DNS (socks5h), same parameters
socks5h://USER-cc-us:PASS@res.proxy-cyber.com:9001

soʻrovlar#

Aloqa qayta ishlash va IP taqsimlash turlicha boshqaruvdir. Klient seansi soketlarni qayta ishlaydi; faqatgina tayinlangan geytveyr aylanish va seansning tiklanishini belgilaydi. Xizmatingiz bilan taqdim etilgan seans parametrlarini qoʻllang, va bir necha iltimoslar orasida chiqishni tekshiring. Soketni yopish yoki Connection: close yuborish boshqa IP'ga kafolat bermaydi.

soʻrovlar
import requests

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"
proxies = {"http": PROXY, "https": PROXY}

# One request, one exit
r = requests.get("https://api.ipify.org", proxies=proxies, timeout=30)
print(r.text)

# A sticky flow: same exit for every request of this session
sticky = "http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000"
s = requests.Session()
s.proxies = {"http": sticky, "https": sticky}
s.get("https://example.com/product/1", timeout=30)
s.post("https://example.com/cart", json={"id": 1}, timeout=30)

httpx#

httpx bittasini oladi proxy= argument (qadimgi versiyalar: proxies=U CONNECT tunneli orqali manzilga HTTP/2'ni qoʻllab-quvvatlaydi va async kodida ham shu tarzda ishlaydi.

httpx
import httpx

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

with httpx.Client(proxy=PROXY, timeout=30) as client:
    print(client.get("https://api.ipify.org").text)

# async, one sticky exit per task
import asyncio

async def fetch(sid: str, url: str) -> str:
    proxy = f"http://USER-cc-us-sid-{sid}-ttl-10m:PASS@res.proxy-cyber.com:9000"
    async with httpx.AsyncClient(proxy=proxy, timeout=30) as client:
        return (await client.get(url)).text

asyncio.run(fetch("task1", "https://api.ipify.org"))

aiohttp#

aiohttp har bir iltimos yoki sessiya uchun proksini oladi va HTTP proksilarini oʻz-oʻzidan gapiradi; SOCKS5 buning zarurligini talab qiladi aiohttp-socks konnektori.

aiohttp
import aiohttp, asyncio

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://api.ipify.org", proxy=PROXY, timeout=aiohttp.ClientTimeout(total=30)) as r:
            print(await r.text())

asyncio.run(main())

Oʻrnashtirish, jonli saqlash va qayta urinish#

  • Yangi TCP aloqasi yangi transport aloqasidir, yangi chiqishning isboti emas. Geyterni belgilangan aylanish rejimi bu aloqani qanday yoʻlga qoʻyishni hal qiladi.
  • Har bir mustaqil ish oqimi uchun alohida sessiya identifikatorini qoʻllang, agar belgilangan geytni qoʻllab-quvvatlasa. Ulanish maʼlumotlarida ruxsat etilgan vaqt va joy parametrlarini tasdiqlang. Uy qurilmasi talab qilingan vaqtdan oldin uzilishi mumkin; seans kunlar davomida bir xil IP'ga ega boʻlishini kafolatlamaydi. Faqat bitta manzil uchun, ajratilgan statik mahsulot bilan taqqoslang.
  • Qayta urinishdan oldin javobni klassifikatsiya qilish. 403 boshqa IP hal qilolmaydigan kirish qoidasini koʻrsatishi mumkin. 429 uchun, Retry-After'ga eʼtibor bering va talab darajasini kamaytiring; vaqtinchalik aloqa yoki server xatosi uchun cheklangan backoff'dan foydalaning. Faqat dublikat harakatlarni toʻxtatishingiz mumkin boʻlgan hol-ahvol oʻzgartirish operatsiyalarini qayta urinish.
  • Chiqish turiga vaqt chegarasini qoʻying: 15 s bogʻlanish va 45 s oʻqish uy uchun, mobil uchun koʻproq.

Gigabaytlar saqlanmoqda#

Uydagi trafik har ikki yoʻnalishda GB ga hisoblanadi. Siqilgan javoblar uchun soʻrang (Accept-Encoding: gzip, br Bu kitobxonalarda standart tarzda ishga tushirilgan), HTML'dan JSON oxirini afzal koʻradi va hech qachon tasvirlarni, shriftlarni yoki mediani yuklab olmaydi, agar ular maʼlumotlar boʻlmasa. 350 KB sahifa arzon; 4 MB resurslar bilan sahifa esa arzon emas.

Odamlar soʻraydigan savollar.#

Nima uchun men talablar bilan bir xil IP'ni olishda davom etaman?

Takrorlanuvchi IPlar aloqa jamlash, faol yopiq seans yoki mavjud puldan kelib chiqishi mumkin. Taʼminlangan yoʻllash usulini taqqoslang va vaqt belgilari bilan bir necha talablarni sinovdan oʻtkazing. A requests.Session aloqalarni va kukilarni boshqaradi; u oʻzi proksi chiqib ketishni tanlamaydi.

HTTPS saytlari uchun boshqa proksi kerakmi?

Yoʻq. Xuddi shu http:// proksi URL CONNECT tunneli orqali HTTPS manzillarini boshqaradi; TLS kodingiz va sayt oʻrtasida oxirigacha ishlaydi.

Men mobil proksilar uchun ham shu kodni ishlata olamanmi?

Yes: replace res.proxy-cyber.com with mob.proxy-cyber.com. Ports, credentials and parameters are identical.

Hisobingiz

Barcha proksilarni bitta hisobdan boshqaring

Tarmoqlarni taqqoslang, buyurtma bering va bir paneldan balansingizni va qoʻllab-quvvatlash talablarini kuzating. Bizning jamoamiz toʻlovlarni koʻrib chiqadi va etkazib berishdan keyin aloqa maʼlumotlarini taqdim etadi.

Hisob yaratish