2012-06-04 3 views
1

Я хотел бы реализовать и прокси-сервер HTTP, чтобы получить более глубокое понимание некоторых из тонких точек протокола и узнать о программировании сокетов на этом пути, но я не хочу реализовывать полномасштабные HTTP-сервер. Каковы релевантные страницы и разделы RFC на тех страницах, на которые я должен обратить внимание, если я просто хочу реализовать прокси?Реализация HTTP-прокси

Планируется начать с обычного HTTP-прокси и затем расширить его до прокси-сервера HTTPS.

ответ

3

Я бы посмотрел HTTP 1.0 (RFC 1945) и HTTP 1.1 (RFC 2616). Вы также можете посмотреть по адресу:

Есть, вероятно, много примеров кода, которые можно найти с помощью Google!

+1

RFC3986 2396 устарел некоторое время назад. 822 был заменен на 2822, но я бы не рекомендовал смотреть на него (или 1521), поскольку HTTP не является MIME; это только MIME-подобное. –

2

Вы также можете найти работу группы HTTPbis в IETF; мы переписываем спецификации, чтобы сделать их более понятными и понятными.

См. http://trac.tools.ietf.org/wg/httpbis/trac/wiki для получения дополнительной информации.

3

В настоящее время я работаю над этим. Основная реализация проста. Слушайте порт сокета, найдите хост, подключитесь к удаленному серверу, отправьте http-заголовок, recv с сервера, а затем отправьте обратно клиенту. Трудная часть - это последовательное соединение и конвейерная обработка.

Как Https, его заголовок выглядит так:

CONNECT addons.mozilla.org:443 HTTP/1.1 
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0 
Host: addons.mozilla.org 

Proxy должен подключиться к серверу, то ответ клиенту 200-сообщение, а затем перенаправить туда и обратно как редиректор.

Проверьте это: http://tools.ietf.org/html/draft-luotonen-ssl-tunneling-03

+0

Используя эту информацию, я попытался получить SSL-туннелирование, работающее в NodeJS со смешанными результатами. Я не думаю, что я достаточно хорошо разбираюсь в связях, и правила обработки NodeJS по умолчанию не поддерживают этот протокол. См.: Https://github.com/pinf/pinf-proxy-js/issues/1 – cadorn

+0

@strongwillow. Как обрабатываются файлы cookie http? В частности, поскольку прокси-клиент является клиентом с точки зрения удаленного сервера, куки-файлы удаляются как на прокси-сервере, так и на вызывающем клиенте? – Howiecamp

+0

@Howiecamp Нет никакого специального лечения для Cookies, так как это обычный HTTP-заголовок. – strongwillow