Python 요청에서 보안 인증서 확인 비활성화
Python 요청 라이브러리를 사용하여 HTTPS 엔드포인트와 상호작용할 때 잘못된 SSL과 관련된 오류가 발생할 수 있습니다. 인증서. 이 문제를 완화하려면 요청 내에서 인증서 확인을 비활성화할 수 있습니다.
공식 문서에 따르면 확인 매개변수를 False로 설정하면 이를 달성할 수 있습니다. 이는 인증서 확인을 우회하라는 요청을 지시합니다.
<code class="python">import requests requests.post(url='https://foo.example', data={'bar': 'baz'}, verify=False)</code>
또는 SSL 확인을 처리할 수 있는 타사 모듈의 경우 컨텍스트 관리자를 사용하여 경고를 억제하고 확인을 비활성화할 수 있습니다. 여기에는 요청.Session.merge_environment_settings 메소드를 기본적으로 확인을 False로 설정하는 사용자 정의 버전으로 바꾸는 작업이 포함됩니다.
<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): opened_adapters.add(self.get_adapter(url)) settings = old_merge_environment_settings(self, url, proxies, stream, verify, cert) settings['verify'] = False return settings 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</code>
이 컨텍스트 관리자를 다음과 같이 사용할 수 있습니다.
<code class="python">with no_ssl_verification(): requests.get('https://wrong.host.badssl.example/') print('It works') requests.get('https://wrong.host.badssl.example/', verify=False) print('It resets back')</code>
이 솔루션은 컨텍스트 관리자 범위 동안 이루어진 모든 요청에 영향을 미친다는 점에 유의해야 합니다. 따라서 명시적으로 지정하지 않는 한 후속 요청도 인증서 확인을 우회합니다.
위 내용은 Python 요청에서 보안 인증서 확인을 비활성화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!