>  기사  >  백엔드 개발  >  Python 요청에서 인증서 확인을 비활성화하는 방법은 무엇입니까?

Python 요청에서 인증서 확인을 비활성화하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 15:38:03754검색

How to Disable Certificate Verification in Python Requests?

Python 요청에서 인증서 확인 비활성화

요청으로 HTTPS 요청을 하는 동안 만료된 인증서 오류가 발생하는 경우 일반적인 해결 방법은 보안 인증서 확인.

해결책 1: verify=False 사용

설명서에 언급된 대로 verify=False를 전달하여 인증서 확인을 비활성화할 수 있습니다.

<code class="python">import requests
requests.post(url='https://foo.example', data={'bar':'baz'}, verify=False)</code>

해결책 2: Monkey 패치 요청(컨텍스트 관리자)

더 고급 사용을 위해 컨텍스트 관리자를 사용하여 Monkey 패치 요청을 수행하고 모든 요청에 ​​대한 인증서 확인을 비활성화할 수 있습니다.

<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/')</code>

이 컨텍스트 관리자는 캐시된 연결로 인한 예기치 않은 동작을 방지하기 위해 열려 있는 모든 어댑터를 종료한 후 닫습니다.

위 내용은 Python 요청에서 인증서 확인을 비활성화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.