7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pythonのrequestsでTLSのバージョンを指定する方法

Last updated at Posted at 2017-01-05

概要

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

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?