Баталгаажуулалтгүй HTTP проксигоор нэг асинхрон хүсэлт хийхдээ замыг session.get() дээр заа. Шаардлагатай бол төсөлдөө aiohttp нэм:

uv add aiohttp

Доорх баримт бичгийн хаягийг өөрийн HTTP сонсогч эсвэл HTTP проксийн жагсаалтын нэр дэвшигчээр соль. HTTPS зорилгод CONNECT зөвшөөрөх ёстой; зөвхөн SOCKS цэгт энэ proxy аргументын оронд тохирох холбогч хэрэгтэй.

import asyncio
import aiohttp

async def main():
    timeout = aiohttp.ClientTimeout(total=15, connect=5)
    async with aiohttp.ClientSession(
        timeout=timeout,
        trust_env=False,
    ) as session:
        async with session.get(
            "https://example.com/",
            proxy="http://203.0.113.10:8080",
        ) as response:
            print(response.status)
            print((await response.text())[:200])

asyncio.run(main())

Хүсэлт HTTP төлөв болон хариу текстийн эхний 200 тэмдэгтийг хэвлэнэ. 403 эсвэл 429 энд шалгаж болох хариу хэвээр үлдэнэ; програм амжилтгүй төлөвийг онцгой тохиолдол болгох ёстой бол response.raise_for_status()-ийг дууд. Асинхрон контекст менежерүүд блок дуусахад, онцгой тохиолдол гарсан ч сесс болон хариуг хаана.

15 секундын total төсөв хүсэлтийн үйлдлийг хамарна. 5 секундын connect төсөвт пулын боломжит холболтыг хүлээх хугацаа багтдаг тул завгүй пул шинэ сокет нээгдэхээс өмнө дуусгаж болно. Нэг дуудалтыг зэрэг шалгалтад өөрчлөхөд энэ ялгаа чухал.

trust_env=False үзүүлсэн замыг тодорхой байлгана. aiohttp анхдагчаар проксийн орчны хувьсагчдыг олдоггүй; өөр терминалд нэгийг экспортлох нь энэ дуудалтыг тохируулахгүй. Процессын өвлөсөн орчин зорьсон чиглүүлэлтийн бодлого мөн үед л trust_env=True-ийг сонго.

Холбоотой нийтлэлүүд