ホームページ >バックエンド開発 >Python チュートリアル >Python リクエストで SSL 証明書の検証を無効にするにはどうすればよいですか?
Python リクエストでのセキュリティ証明書検証を無効にする
HTTPS リクエストを行う場合、Python のリクエスト ライブラリはサーバーの SSL 証明書を検証して、接続が安全であることを確認します。ただし、期限切れの証明書を使用して Web サイトにアクセスする場合など、場合によっては、この検証を無効にすることが必要な場合があります。
証明書の検証を無効にするには、requests.post 関数の verify 引数を使用します。次のように False に設定します:
<code class="python">import requests requests.post(url='https://foo.example', data={'bar':'baz'}, verify=False)</code>
これにより、SSL 証明書を検証せずにリクエストを行うことができます。ただし、これにより中間者攻撃の可能性が生じるため、セキュリティ上のリスクが生じる可能性があることに注意することが重要です。このオプションは注意して使用してください。
SSL 検証にコンテキスト マネージャーを使用する
特定のコンテキスト内の複数のリクエストに対して SSL 検証を無効にする必要がある場合は、次のようなコンテキスト マネージャー:
<code class="python">import warnings import contextlib import requests from urllib3.exceptions import InsecureRequestWarning old_merge_environment_settings = requests.Session.merge_environment_settings @contextlib.contextmanager def no_ssl_verification(): opened_adapters = set() def merge_environment_settings(self, url, proxies, stream, verify, cert): # ... requests.Session.merge_environment_settings = merge_environment_settings try: with warnings.catch_warnings(): warnings.simplefilter('ignore', InsecureRequestWarning) yield finally: requests.Session.merge_environment_settings = old_merge_environment_settings for adapter in opened_adapters: try: adapter.close() except: pass with no_ssl_verification(): # Make requests without SSL verification here</code>
このコンテキスト マネージャーは、ブロック内で行われたすべてのリクエストの verify を一時的に False に設定し、ブロックが終了するとデフォルトの動作に戻ります。また、そうでない場合にトリガーされる SSL 警告も抑制されます。
以上がPython リクエストで SSL 証明書の検証を無効にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。