所以我有一个“客户端”,它使用python请求库通过以下代码执行http / https请求:
proxies = {
'http' : 'http://user:1@localhost:8888',
'https': 'http://user:1@localhost:8888'
}
r = requests.request('GET', 'https://www.instagram.com/', proxies = proxies)
然后,此请求将重定向到龙卷风服务器。这是在使用openssl生成证书后初始化龙卷风服务器的方式:
def make_app():
return tornado.web.Application(urls)
if __name__ == "__main__":
app = make_app()
http_server = tornado.httpserver.HTTPServer(app
, ssl_options={"certfile": "ssl/cert.pem","keyfile": "ssl/key.pem"
})
http_server.listen(8888)
tornado.ioloop.IOLoop.current().start()
这就是我的用例的工作方式:我希望使用服务器证书对客户端和龙卷风服务器之间的通信进行加密。然后,在龙卷风服务器中,我获取原始数据(未加密)并处理将其发送到请求的url的部分,在本例中为https://www.instagram.com/
。然后,我收集响应并将其发送回客户端,并进行加密。
这是可能的用例吗?我需要其他代码来处理客户端和龙卷风服务器之间的ssl握手吗?当我介绍ssl_options
时,客户端似乎无法连接到龙卷风服务器。没有它,它就可以正常工作。但是我真的希望这种用例逻辑能够起作用。