Я создаю прокси-сервер в python, который основан на BaseHTTPServer. Он создает соединение с прокси-сервером squid, идентифицирует запрос браузера (GET, CONNECT, POST и т. Д.) И добавляет к нему заголовок авторизации прокси-сервера, а затем перенаправляет этот запрос на прокси-сервер squid.HTTP Connect запрос через каскадный прокси
Проблема, насколько я понимаю, когда я отправляю запрос на подключение, я должен передать весь соответствующий трафик на прокси-сервер squid. Но, как я могу видеть в wirehark, прокси-сервер squid не отвечает на «Client Hello» часть рукопожатия, которое, я думаю, связано с прокси-сервером squid, который не понимает двоичные данные SSL, которые я только пересылаю.
Как обрабатывать запросы HTTPS в этом случае?
код является более или менее похожи на TinyHTTPProxy: http://www.oki-osk.jp/esc/python/proxy/
Я делаю то же самое. Вот код, который я реализовал: 'PROXY_ADDR = ("172.16.27.25", 3128) #Squid прокси CONNECT = "CONNECT www.gooogle.com:443 HTTP/1.1 \ г \ п" proxy_auth =" Proxy-Authorization: Basic "+ str (encoded_user_pass) +" \ r \ n " CONNECT = CONNECT + proxy_auth +" \ r \ n " s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) s.connect (PROXY_ADDR) s.send (CONNECT) ' После этого он инициирует рукопожатие, но не получает ответа от сервера Squid (Server hello). – Polymorph
Я не могу правильно форматировать код выше. В основном, он подключается к прокси-серверу squid (внутренний IP-адрес) и отправляет запрос CONNECT с авторизацией прокси. (который он не работает при рукопожатии) Я использовал прокси-строитель в модуле urllib2, и он отлично работает с прокси-сервером squid, но я не понимаю, почему приведенный выше код не работает. – Polymorph
@Polymorph: вам не хватает заголовка 'Host' в запросе' CONNECT'. [HTTP/1.1 требует] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23), что клиент ДОЛЖЕН включать заголовок 'Host' во всех запросах. – josh3736