Tornado HTTP代理服务器无法捕获HTTPS请求

时间:2017-09-08 17:55:34

标签: python tornado

我已经设置了一个龙卷风HTTP服务器作为代理服务器。 我正在使用python请求库将其用作代理服务器。 当我尝试使用它获取HTTP URL时,它工作正常。但它并没有拦截HTTPS请求。

代理服务器部分:

class ProxyServer(HTTPServerConnectionDelegate):
    def start_request(self, server_conn, request_conn):
        print('In start request')
        return ClientDelegator(request_conn)

    def on_close(self):
        pass

    def client_send_error(self):
        self.write('Error happened.')
        self.finish()


def main():
    server = HTTPServer(ProxyServer())
    server.bind(8888)
    server.start(0)
    tornado.ioloop.IOLoop.current().start()


if __name__ == "__main__":
    main()

请求部分:

import requests


url = 'https://example.com'
proxy = {'http' : '127.0.0.1:8888'}
r = requests.get(url, proxies=proxy, verify=False)
print(r.text)

当我使用 http://example.com 时,连接会以'在启动请求'中开始。得到印刷。但是,当我使用 https://example.com 时,连接就不会启动。 ProxyServer 无法进入 start_request

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的proxy变量仅指定http的代理,而不是https。您需要分别为两个协议设置代理。