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

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

Barbara Streisand
Barbara Streisand원래의
2024-10-29 00:15:30774검색

How to Disable Security Certificate Verification in Python Requests?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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