概要
pythonのrequestsモジュールで利用されるTLSのバージョンは、関連モジュールに依存する。
参考: pythonのrequestsモジュールのデフォルトのTLSバージョンはいくつなのか
※こちらの記事を先に読むことをお勧めします。
ここでは、あえてTLS1.0を利用したい場合など向けに、requestsモジュールのTLSのバージョンを指定する方法を書きます。
環境
- python 2.7.12
- requests 2.12.3
HTTPAdapterのサブクラスを作成
下記のようにHTTPAdapterのサブクラスを作成し、TLSのバージョンを明記して、requestsモジュールを利用する。
下記はTLS1.0を指定した例。
# -*- coding:utf-8 -*-
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
import ssl
# HTTPAdapterのサブクラス
class MyAdapter(HTTPAdapter):
def init_poolmanager(self, connections, maxsize, block=False):
self.poolmanager = PoolManager(num_pools=connections,
maxsize=maxsize,
block=block,
ssl_version=ssl.PROTOCOL_TLSv1)
if __name__ == '__main__':
import requests
url = 'https://xxxx.com'
s = requests.Session()
s.mount('https://', MyAdapter())
response = s.get(url)
print(response)
各種バージョンの記載方法は下記。
ver | 記法 |
---|---|
TLS1.0 | ssl.PROTOCOL_TLSv1 |
TLS1.1 | ssl.PROTOCOL_TLSv1_1 |
TLS1.2 | ssl.PROTOCOL_TLSv1_2 |
[関連記事]
pythonのrequestsモジュールのデフォルトのTLSバージョンはいくつなのか
cURL, OpenSSLコマンドでTLSのバージョンを指定する方法メモ
[参考]
Python requests SSLError: EOF occurred in violation of protocol