php system() + proxy

Тема в разделе "WASM.WIN32", создана пользователем loleg, 13 мар 2011.

  1. loleg

    loleg New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    93
    есть подобный код
    Session := InternetOpen(PChar(user_agent), INTERNET_OPEN_TYPE_PROXY, PChar(proxyip), nil, 0);
    InternetSetOption(Session, INTERNET_OPTION_PROXY_USERNAME, PChar(login), Length(login) + 1);
    InternetSetOption(Session, INTERNET_OPTION_PROXY_PASSWORD, PChar(pass), Length(pass) + 1);
    hS := InternetConnect(Session, PChar(hostname), INTERNET_DEFAULT_HTTP_PORT, PChar(login), PChar(pass), INTERNET_SERVICE_HTTP, 0, 0);
    ..

    при запуске ехе удачно коннектится к проксе, авторизируется и выкачивает все что необходимо (при запуске хоть из проводника. хоть из консоли), но когда этот же скомпилированный ехе запускать из php скриптом system() или exec(), то выдается ошибка 407 прокси, почему? (без использования прокси, INTERNET_OPEN_TYPE_DIRECT, конечно же ехе удачно все качает как из консоли, так и при запуске скриптом)
     
  2. Kaimi

    Kaimi Андрей

    Публикаций:
    0
    Регистрация:
    15 апр 2010
    Сообщения:
    120
    Если верить гуглу, то проблема в авторизации
    Запусти снифер, посмотри какие пакеты шлются в обоих случаях и в чем отличие.
     
  3. loleg

    loleg New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    93
    >>Если верить гуглу, то проблема в авторизации
    именно, 407 ошибка, но вот почему она возникает непонятно

    >>Запусти снифер, посмотри какие пакеты шлются в обоих случаях и в чем отличие.
    тем, что при запуске изпод пхп режутся(не шлются) поля хедера
    Proxy-Connection: Keep-Alive
    Proxy-Authorization: Basic blablabla==

    тоесть в оригинале происходит такео взаимодействие:
    * Запрос клиента
    * Ответ прокси-сервера со статусом 407
    * Запрос клиента с затребованными данными
    * Ответ прокси-сервера.

    при запуске via php:
    * Запрос клиента
    * Ответ прокси-сервера со статусом 407
    * и тут запроса от клиента уже не поступает. почему?
     
  4. loleg

    loleg New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    93
    непонятно почему проблема возникала, но если добавить в каждый хедер такое поле, все работает нормально

    const
    opa = 'Proxy-Authorization: Basic ';
    ...
    jopa := opa+base64Encode(login+':'+pass);
    HttpAddRequestHeaders(URL, PChar(jopa), Length(jopa), HTTP_ADDREQ_FLAG_ADD);
     
  5. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    У меня такая проблема возникала, когда я ставил пароль на каталог. Причём для запросов GET отправка заголовка с логином и паролем работала нормально. Но при использовании POST сервер никаких данных не возвращал назад. Пришлось убрать пароль с каталога, тем более, что basic-защита некудышная (логин и пароль передаются в открытом виде).

    Еще немного не по теме, но может пригодиться. У некоторых клиентов, которые пользовались моей программой вылетала ошибка 417. Причем тоже на POST-запросах. Происходило это до тех пор, пока я не убрал из заголовка Expect100Continue.