Twisted ProxyAgent: базовая аутентификация для обычного HTTP
Отправьте аутентифицированный обычный HTTP-запрос через Twisted ProxyAgent с байтовыми значениями заголовков запроса.
ProxyAgent подключается через переданный ему endpoint. Для обычного HTTP-запроса и прокси, принимающего базовую аутентификацию, поместите логин прокси в заголовок Proxy-Authorization этого запроса.
import base64
from twisted.internet.endpoints import TCP4ClientEndpoint
from twisted.web.client import ProxyAgent
from twisted.web.http_headers import Headers
endpoint = TCP4ClientEndpoint(reactor, 'proxy.example', 8080,
timeout=5)
agent = ProxyAgent(endpoint, reactor=reactor)
token = base64.b64encode(b'alice:REPLACE_WITH_PROXY_PASSWORD')
headers = Headers({b'Proxy-Authorization': [b'Basic ' + token]})
pending = agent.request(b'GET', b'http://example.com/', headers)Этот фрагмент предполагает, что у приложения уже есть свой reactor. Метод, URI и показанные данные заголовка используют байты. Храните настоящие учётные данные в источнике учётных данных приложения; заполнитель лишь показывает, как строится заголовок. Base64 — это кодирование, поэтому конфиденциальность зависит от соединения, которое его передаёт.
Возвращённый Deferred даёт объект ответа. Получение этого объекта не собирает тело ответа; читайте его через документированный интерфейс чтения тела и обрабатывайте асинхронные ошибки. Тайм-аут endpoint ограничивает установление соединения, а не всё время жизни ответа.
В примере намеренно используется HTTP-назначение. Он не добавляет согласование CONNECT для HTTPS только за счёт смены схемы URI.