Вообичаена вредност на прокси како http://proxy.example:8080 е URL. clientFromString на Twisted прифаќа опис на крајна точка, на пример tcp:host=proxy.example:port=8080. Двата низа опишуваат поврзани информации со различни граматики.

Ако апликацијата прифаќа вообичаен HTTP прокси URL, разделете го пред да ја создадете крајната точка:

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)

Фрагментот претпоставува дека апликацијата веќе го има својот reactor. Наведете ја вистинската порта на проксито во конфигурацијата кога таа не е стандардната за HTTP URL. Списокот на HTTP проксија нуди кандидати за крајни точки за дозволено јавно HTTP барање без сметка за прокси. HostnameEndpoint исто така избегнува вметнување на името на домаќинот во друг конфигурациски низ разделен со две точки.

Ова ги претвора само влезните податоци за рутирање. Акредитивите вградени во URL не стануваат заглавие за авторизација само затоа што домаќинот и портата биле разделени. Обезбедете каква било потребна поддржана автентикација на прокси преку поставеноста за автентикација на барањето. За едноставна HTTP дестинација и посредник што нуди Basic, Basic заглавијата за барање на ProxyAgent обезбедуваат една таква поставеност.

HTTPS прокси URL бара врска со проксито што поддржува TLS. SOCKS URL бара SOCKS преговори. Ниту едно не е имплементирано со праќање на тие шеми во едноставна конверзија на HTTP ProxyAgent крајна точка.

Поврзани статии