http://proxy.example:8080 kabi oddiy proksi qiymati URL hisoblanadi. Twisted'ning clientFromString funksiyasi tcp:host=proxy.example:port=8080 kabi so'nggi nuqta tavsifini qabul qiladi. Ikki satr bog'liq ma'lumotni turli grammatikalarda tavsiflaydi.

Agar ilova oddiy HTTP proksi URL manzilini qabul qilsa, so'nggi nuqta yaratishdan oldin uni ajrating:

import os
from urllib.parse import urlsplit
from twisted.internet.endpoints import HostnameEndpoint
from twisted.web.client import ProxyAgent

proxy = urlsplit(os.environ['http_proxy'])
if proxy.scheme != 'http' or not proxy.hostname:
    raise ValueError('Expected an HTTP proxy URL')
port = proxy.port if proxy.port is not None else 80
endpoint = HostnameEndpoint(reactor, proxy.hostname, port, timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)

Fragment ilovada allaqachon o'z reactor'i bor deb hisoblaydi. Port HTTP URL'ning standart qiymati bo'lmasa, konfiguratsiyada haqiqiy proksi portini ko'rsating. HTTP proksilar ro'yxati proksi hisobisiz ruxsat etilgan ommaviy HTTP so'rovi uchun so'nggi nuqta nomzodlarini taklif qiladi. HostnameEndpoint shuningdek xost nomini boshqa ikki nuqta bilan ajratilgan konfiguratsiya satriga joylashtirishdan qochadi.

Bu faqat marshrutlash kiritmasini aylantiradi. URL'ga joylashtirilgan hisob ma'lumotlari faqat xost va port ajratilgani uchun avtorizatsiya sarlavhasiga aylanmaydi. Kerakli qo'llab-quvvatlanadigan proksi autentifikatsiyasini so'rovning autentifikatsiya tartibi orqali taqdim eting. Oddiy HTTP manzili va Basic taklif qiluvchi vositachi uchun ProxyAgent'ning Basic so'rov sarlavhalari shunday tartibni taqdim etadi.

HTTPS proksi URL proksiga TLS qobiliyatli ulanishni talab qiladi. SOCKS URL SOCKS muzokaralarini talab qiladi. Ikkalasi ham bu sxemalarni oddiy HTTP ProxyAgent so'nggi nuqta aylantirishiga yuborish orqali amalga oshirilmaydi.

O'xshash maqolalar