Python / Tornado握手问题中的HTTPS获取请求

时间:2019-04-12 15:33:19

标签: python tornado wireshark

因此,基本上,我的系统中有三个主要组件,我将它们称为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中,数据将通过websocket读取,并将打开客户端指定URL的套接字。然后它将从服务器接收答案,并通过websocket将其发送到superProxy,然后superProxy将向客户端回复服务器的答案。

因此,只要建立握手以及将数据发送到服务器或从服务器发送数据,组件之间的连接就会保持打开状态。    我使用WireShark跟踪发送到服务器的请求及其响应 观察握手和数据传输行为:

print_1

print_2

有意义的数据包在图像中用黑色标记。 似乎正在发生的行为是服务器请求证书,但是客户端从不发送包含证书的数据包。因此,连接以最后一个数据包关闭,这使我认为握手失败。为什么会这样呢?请求库不应该处理这个问题吗?我只是将请求消息和响应重定向到服务器,这还会给数据传输带来一些问题吗?

0 个答案:

没有答案