Помогите с HTTP-proxy

Discussion in 'PHP' started by slesh, 25 Mar 2007.

  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Народ, нужна помощь. Сталкнулся с такой проблемой:
    Нужно послать одному сайту запрос через 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
     
  2. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Немного не понял: 111,111,111,111 == прокся или ip сервера с фейковым сайтом?

    Добавил:
    Туплю=( А зачем тебе именно HTTP-Proxy, тут имхо через сокс удобнее будет
     
    #2 Helios, 25 Mar 2007
    Last edited: 25 Mar 2007
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    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

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

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Тогда по-моему самый правильный вариант это:
    Только почему не работает понять не могу...
     
  5. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    при работе с проксей сам header не меняеться!
    он остаеться:
    А вот в качестве адресса сервака, и порта для подключения и спользуеться адрес и порт прокси
     
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Делаю как надо. НО прокси выдает:
    HOST - nostname.ru; PORT - 80<br>Connection timed out

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

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    ну мертвый проксик! 3 секунды таймлимита вполне достаточно
     
    2 people like this.
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Просто тут дело скорей вот в чем:
    Прокси сервер подключаюся к 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
    скорее всего поэтому и глюки :\
     
  9. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ПРокси 100% рабочий.
     
  10. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    в запросе через http proxy нужно и можно указывать только протокол, хост и его версию

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

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