HTTPS Получить запрос в Python / Торнадо проблема рукопожатия - PullRequest
0 голосов
/ 12 апреля 2019

Итак, в моей системе три основных компонента, я назову их client, superProxy и proxyClient, все они реализованы в файлах python.В клиентском компоненте я просто использую запросы библиотеки из python для выполнения простого запроса, этот запрос будет перенаправлен в superProxy.

proxies = {
            'http' : 'http://chan:1@localhost:8888', 
            'https': 'http://chan:1@localhost:8888'
        }

r = requests.get('https://instagram.com/', proxies = proxies)

В файле superProxy у меня есть mainHandler (tornado.web.requestHandler), который будет обрабатывать запрос, отправленный клиентским файлом.В случае «https» будет введена функция подключения.Таким образом, внутри этой функции он будет считывать данные из клиентского соединения всякий раз, когда они доступны, а затем отправлять их через веб-сокет в proxyClient.

В proxyClient данные будут считываться через веб-сокет, и он откроетсокет к URL-адресу, указанному клиентом.Затем он получит ответ от сервера и отправит его через websocket в superProxy, затем superProxy ответит клиенту на ответ сервера.

Итак, соединения между компонентами остаются открытыми до тех пор, пока это необходимоустановить рукопожатие и получить / отправить данные на / с сервера.Я использовал WireShark для отслеживания запросов, отправленных на сервер, и его ответов для наблюдения за рукопожатием и передачей данных:

print_1

print_2

Значимые пакеты отмечены черным на изображениях.Поведение, которое, кажется, происходит, состоит в том, что сервер запрашивает сертификат, но клиент никогда не отправляет пакет с сертификатом в нем.И поэтому соединение закрывается с окончательным пакетом, что заставляет меня думать, что рукопожатие не удалось.Есть какие-либо мнения о том, почему это может происходить?библиотека запросов не должна иметь дело с этими проблемами?Я просто перенаправляю сообщения с запросами и ответы на сервер, может ли это также привести к некоторым проблемам при передаче данных?

...