python - Python 中的 HTTPS session 重用

标签 python https sessionid

我希望能够对 HTTPS 服务器使用并行请求。目前,我正在使用 PyCURL,但它无法在不同句柄之间重复使用相同的 SSL session ID,并且每个句柄每次只能处理一个下载/上传。

考虑到协商需要时间(特别是因为使用了客户端证书),重用 id(就像浏览器从 Web 并行下载少量资源所做的那样)可能会提高性能。

那么,现在有人知道 PyCURL 的一些解决方法,或者支持它的替代 HTTP 模块吗? httplib 似乎也没有做这项工作。

最佳答案

如前所述here 目前无法轻松访问重用 session ID ,我还没有听说过任何简单的解决方案 - 但它应该只是在初始握手后保存您的上下文并重新使用它的问题。

PyOpenSSL公开了这些机制,但级别低于大多数人想要的级别。我会把钱花在以下事件序列上:

  • 首先弄清楚如何进行 session 重用,只需进行概念验证即可。一个有用的工具是 openssl 二进制文件(人们通常用来制作 SSL key 的工具)。它有一个内置客户端,您可以像这样使用它:

openssl s_client -connect HOST:443

  • 您可以打印出各种有用的诊断信息(例如您的 SSL session ID),这样您就可以在当前问题的范围之外对其进行验证。

  • 一旦你有了它,httplib 的 SSL 支持就非常简单了,HTTPSConnection 是 HTTPConnection 的一个非常薄的包装器(只有两个扩展类的方法。你想要修改的是 connect

httplib.py - HTTPSConnection 类

    def connect(self):
        "Connect to a host on a given (SSL) port."

        sock = socket.create_connection((self.host, self.port),
                                        self.timeout, self.source_address)
        if self._tunnel_host:
            self.sock = sock
            self._tunnel()
        self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)

关于python - Python 中的 HTTPS session 重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6489894/

相关文章:

scala - SSL 蓝眼睛

PHP 允许使用旧的 session ID 而不更改它们,这使得 session 很容易被劫持。怎么修?

python - 字符串转 Json Python

javascript - Flask 中的多个 POST 请求

python - 在 python 的 for 循环中创建唯一名称列表

c++ - Betfair API'ing 证书登录使用 C++ 提升 SSL 套接字

java - 如何使用 jetty 的 java keytool 创建/加载 jks 文件?

localhost - 本地主机 URL 中的 PHP session ID

python - 常量 Flask session ID

python - 这种方法是否有更快的替代方法来从字典列表中获取最后更新消息?