2014-02-20 3 views
0

Как просмотреть запросы, отправленные витым прокси-сервером, на какую часть файла twisted.web.proxy я должен смотреть. Цель состоит в том, чтобы добавить дополнительные заголовки, прежде чем dataReceived будет отправлен на целевой сервер. Например, добавив дополнительный заголовок, как «Xzone: FOO.COM \ г» для всех запросов прокси-сервера, так что окончательный запрос выглядит следующим образом:скрученные методы модификации запроса прокси

GET/HTTP/1.1\r 
Xzone: foo.com\r 
Host: bbb.com\r 
User-Agent: mozilla\r 
Accept: */*\r 

Заранее спасибо за любую информацию.

+0

Возможно, вы захотите добавить заголовок после строки 'GET'. –

+0

пытается сделать что-то обычай. Но также интересно, как такие пользовательские запросы могут быть достигнуты. Браузер отправляет обычные запросы, а скрученный прокси добавляет заголовок Xzone: над запросом GET. – mikie

+0

Пример в вопросе не является юридическим HTTP-запросом. Если это действительно то, что вы хотите сделать, я не думаю, что Twisted Web будет вам очень помогать (потому что Twisted Web для HTTP не не-вполне-HTTP). –

ответ

1

К сожалению, twisted.web.proxy довольно крут и не был написан с учетом такого рода настроек. Тем не менее, можно вводить новые заголовки в прокси-запрос несколькими способами. Общая идея состоит в том, чтобы подключиться к одному из этапов обработки запроса и изменить заголовки запросов, чтобы они включали ваш новый заголовок.

Например, вы можете подключить и ProxyRequest.process:

from twisted.web.proxy import ProxyRequest 

class ChangeSomeHeadersProxyRequest(ProxyRequest): 
    def process(self): 
     self.changeHeaders() 
     return ProxyRequest.process(self) 

    def changeHeaders(self): 
     # Inject an extra request header. 
     self.requestHeaders.addRawHeader(b"Xzone", b"foo.com") 

Затем подключить это к остальной части вашего прокси-сервера:

from twisted.web.proxy import Proxy 
from twisted.web.server import Site 

class ChangeSomeHeadersSite(Site): 
    protocol = Proxy 
    requestFactory = ChangeSomeHeadersProxyRequest 

Теперь настроить ChangeSomeHeadersSite, как вы бы обычный Site ,

+0

Вот картинка из wirehark, которая показывает, что я пытаюсь достичь! [Запрос] [1] [1] http://imgur.com/AR3hYPj @ Jean-Paul Calderone – mikie

+0

Извините, эта картина меня немного смущает. Это похоже на соединение, которое получает HTTP-запрос, а затем еще один HTTP-запрос и затем отправляет HTTP-ответ. Два запроса с одним ответом - это не законный HTTP. Возможно, здесь идет конвейерная обработка? Но вы не упомянули об этом в своем вопросе, поэтому я не уверен. Возможно, вы можете отредактировать свой вопрос, чтобы он более точно описывал поведение, которое вы пытаетесь достичь. –

+0

Решили создать новый вопрос, который точно показывает, чего я пытаюсь достичь. – mikie

Смежные вопросы