PDA

Просмотр полной версии : Помогите с HTTP-proxy


slesh
25.03.2007, 19:16
Народ, нужна помощь. Сталкнулся с такой проблемой:
Нужно послать одному сайту запрос через HTTP-proxy.
Сложность заключается в том, что у этого сайта
HOST не соответствует IP, поэтому подключаться нужно по
IP а в поле host ставить нужный хост.
т.е. обычный запрос без прокси осуществлялся бы примерно так:
1) подключение к адресу 111.111.111.111
2) посылка запроса:

GET http://hostname.ru/cgi.exe?param HTTP/1.0
Host: hostname.ru

Вот незнаю как написать запрос, чтобы осуществить такое через прокси.
Т.К из за того что hostname.ru не соответсвует IP, то запросы такого вида не катят:

1)по неизвестным причинам не работает :\
GET http://hostname.ru/cgi.exe?param HTTP/1.1
Host: 111.111.111.111
Proxy-Connection: Keep-Alive

2) сервер подключится к неправильному IP, который будет соответсвовать hostname.ru
GET http://hostname.ru/cgi.exe?param HTTP/1.1
Host: hostname.ru
Proxy-Connection: Keep-Alive

3) не передаст серверу hostname.ru в http заголовке
GET http://111.111.111.111/cgi.exe?param HTTP/1.1
Host: 111.111.111.111
Proxy-Connection: Keep-Alive

4) сервер подключится к неправильному IP, который будет соответсвовать hostname.ru
GET http://111.111.111.111/cgi.exe?param HTTP/1.1
Host: hostname.ru
Proxy-Connection: Keep-Alive

Как вы уже поняли для решения задачи, нужно просто какимто образом заставить прокси отослать запрос вида:
GET http://hostname.ru/cgi.exe?param HTTP/1.0
Host: hostname.ru
на сервекр с адресом 111.111.111.111

Helios
25.03.2007, 19:49
Немного не понял: 111,111,111,111 == прокся или ip сервера с фейковым сайтом?

Добавил:
Туплю=( А зачем тебе именно HTTP-Proxy, тут имхо через сокс удобнее будет

slesh
25.03.2007, 19:58
111.111.111.111 - это адрес самого сервера, где находится сайт.
который принимает запросы типа:
GET http://hostname.ru/cgi.exe?param HTTP/1.0
Host: hostname.ru
При том, что запросы вида:
GET /cgi.exe?param HTTP/1.0
Host: hostname.ru
Не катят.
И по hostname.ru - нельзя отпределить ip сервера с сайтом. т.е. hostname.ru - удален из базы DNS сервера. Но он прописан как виртуальных сервер на сайте. Именно по этому к серваку с сайтом нужно подрубаться через IP, но поле host должно быть hostname.ru и зам запрос GET http://nostname.ru/cgi.exe?param HTTP/1.0

Просто может можно какнить добавить свои поля, которые будет прокси передавать серверу.

Helios
25.03.2007, 20:04
Тогда по-моему самый правильный вариант это:
4) сервер подключится к неправильному IP, который будет соответсвовать hostname.ru
GET http://111.111.111.111/cgi.exe?param HTTP/1.1
Host: hostname.ru
Proxy-Connection: Keep-Alive

Только почему не работает понять не могу...

nc.STRIEM
25.03.2007, 20:20
при работе с проксей сам header не меняеться!
он остаеться:

GET http://hostname.ru/cgi.exe?param HTTP/1.0
Host: hostname.ru

А вот в качестве адресса сервака, и порта для подключения и спользуеться адрес и порт прокси

slesh
25.03.2007, 21:52
при работе с проксей сам header не меняеться!
он остаеться:

А вот в качестве адресса сервака, и порта для подключения и спользуеться адрес и порт прокси

Делаю как надо. НО прокси выдает:
HOST - nostname.ru; PORT - 80<br>Connection timed out

hostname.ru - выдуманное доменно имя. на деле использую нужное.

nc.STRIEM
25.03.2007, 22:05
ну мертвый проксик! 3 секунды таймлимита вполне достаточно

slesh
25.03.2007, 23:00
Просто тут дело скорей вот в чем:
Прокси сервер подключаюся к WEB-сервуру и конвертирует запрос:

GET http://111.111.111.111/cgi.exe?param HTTP/1.1
Host: hostname.ru
Proxy-Connection: Keep-Alive

в такой вот вид:

GET /cgi.exe?param HTTP/1.0 или HTTP/1.1
Host: hostname.ru

А на деле нужен запрос

GET http://hostname.ru/cgi.exe?param HTTP/1.1
Host: hostname.ru

т.е. обрезарается часть http://hostname.ru
скорее всего поэтому и глюки :\

slesh
25.03.2007, 23:02
ПРокси 100% рабочий.

blackybr
26.03.2007, 10:19
в запросе через http proxy нужно и можно указывать только протокол, хост и его версию

GET http://www.xek.org/ HTTP/1.0

и никакой host не нужен