【问题标题】:Python requests module using TLSv1.2 even though I am specifying TLSv1.1使用 TLSv1.2 的 Python 请求模块,即使我指定了 TLSv1.1
【发布时间】:2023-03-30 05:15:01
【问题描述】:

我们的支付处理合作伙伴暂时只能支持 TLSv1.1。切换处理器目前不是一种选择。

在 Python 2.7.10 中,我有一个脚本从我的开发 Web 服务器请求 GET,但在运行时它使用 TLSv1.2 而不是 TLSv1.1,就像我告诉它的那样。

import requests
from requests.packages.urllib3.poolmanager import PoolManager
import ssl


class MyAdapter(requests.adapters.HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        self.poolmanager = PoolManager(
            num_pools=connections,
            maxsize=maxsize,
            block=block,
            ssl_version=ssl.PROTOCOL_TLSv1_1,
        )
        print("poolmanager set")


def do_it():
    with requests.Session() as s:
        s.mount('https://', MyAdapter())
        url = 'https://my.server.com/api/3.0/order/?page=1&limit=10'
        response = requests.get(url, verify=True)
        print("status code: %r" % response.status_code)


if __name__ == '__main__':
    print do_it()

输出是:

poolmanager set
status code: 200

但是,我的 nginx 访问日志显示使用的协议是 TLSv1.2:

127.0.0.1 - [15/Dec/2015:13:38:19 -0600] TLSv1.2/ECDHE-RSA-AES128-GCM-SHA256 "GET /api/3.0/order/?page=1&limit=10 HTTP/1.1" 200 176 "-" "python-requests/2.9.0"

我已经翻阅了有关使用请求库实现和安装 HTTPAdapters 的 skint 文档,但我找不到任何可以说明为什么我的客户端使用 TLSv1.2 而不是我告诉它的 TLSv1.1 的任何内容。

【问题讨论】:

  • 我认为 ssl_verson 不正确。应该是 ssl_version?
  • @rfkortekaas 感谢您的关注。我认为肯定会是这样,但更正那个错字并没有什么不同。我目前看到使用直接 urllib2 取得了一些成功,但仍然需要解决问题。我现在将更新问题。
  • 您还需要 s.get 才能将会话对象与 HTTPadapter 一起使用
  • @rfkortekaas 是对的 - 您正在设置会话并安装适配器,但随后 您没有使用会话(这就是关键字中的错字的原因参数没有触发错误,您的适配器从未被使用过)。
  • 确实是@rfkortekaas 指出了解决方案,所以我当然不值得任何信任 ;-) 自我回答并给予他信任,恕我直言,这是完全可以的,但你也可以给予他有时间写下自己的答案。据我所知,您也可以稍后更改接受的答案。

标签: python python-requests tls1.2


【解决方案1】:

解决方案是使用 s.get(带有已安装 HTTPAdapter 的 Session)而不是 requests.get。

【讨论】:

  • s.get() 在此上下文中充当 requests.get() 的替代品。相同的参数和返回类型。
  • 您能否发布完整的代码示例以使其正常工作?
猜你喜欢
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 2016-12-15
  • 1970-01-01
相关资源
最近更新 更多