Клиент подключается к серверу через прокси-сервер Http (Windows c \ c ++)

У нас есть модельная программа C \ S. И пользователи используют клиент для подключения нашего сервера. Но некоторые пользователи компании выходят в Интернет через HTTP-прокси-сервер (не SOCKS4 или SOCKS5 прокси-сервер). В этом случае нам нужно предоставить функцию для настройки прокси-сервера клиента (как и некоторые другие программы). Если это так, мы должны упаковать наши исходные данные в протокол Http. Итак, я хочу знать:

  1. Метод в порядке? Или есть какой-то другой лучший способ решить проблему.
  2. Если это так, может ли наш сервер отправлять данные клиенту инициативно?
  3. Знаете ли вы другое выпущенное программное обеспечение, которое имеет функцию настройки прокси-сервера, как решить эту проблему?

0

Решение

Это не так, как работают HTTP прокси. Вам не нужно переупаковывать существующие данные как HTTP. Все, что вам нужно сделать, это:

  1. подключиться к прокси-порту HTTP и отправить ему HTTP CONNECT запрос с указанием хоста / IP и порта для подключения, например:

    CONNECT hostname:port HTTP/1.0
    User-agent: MyApp
    

    Если прокси-сервер требует аутентификации, вы также можете предоставить Proxy-authorization заголовок, содержащий закодированные учетные данные при необходимости, например:

    CONNECT hostname:port HTTP/1.0
    User-agent: MyApp
    Proxy-authorization: basic dGVzdDp0ZXN0
    
  2. если прокси-сервер принимает запрос и успешно подключается к запрошенному хосту, он отправит обратно HTTP 200 ответ, например:

    HTTP/1.0 200 Connection established
    Proxy-agent: ProxyApp/1.1
    
  3. Теперь вы можете отправлять и получать данные, как вы уже делали раньше, и прокси-сервер будет передавать данные как есть между клиентом и хостом в обоих направлениях. Вам не нужно изменять какую-либо логику кода, кроме как для установки прокси-соединения.

Увидеть Туннелирование протоколов на основе TCP через прокси-серверы
Больше подробностей.

Этот процесс аналогичен тому, как работают другие прокси-протоколы, такие как SOCKS. Клиент подключается к прокси-серверу, запрашивает соединение с хостом сервера, а затем клиент и сервер передают данные назад и вперед, как будто прокси-сервер отсутствует.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]