[책: 파이썬으로 웹 크롤러 만들기]에 나오는 예제 중 맨 처음에 나오는 예제다.
해당 소스코드를 그대로 따라 치면 아래와 같은 [SSL: CERTIFICATE_VERIFY_FAILED] 에러가 발생한다.

이 에러는 아래의 내용을 추가해주면 손쉽게 해결된다.
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

하지만 그냥 네이버 주소를 입력했을때는 위와 같은 오류가 발생하지 않았었는데,
이는 예제 사이트에 문제가 있다고 생각할 수 밖에 없는 이유이다.
내 추측으로는 사이트에 SSL 인증서가 추가되지 않은 상태인 것 같다.
Python Enhancement Proposal의 약어인 PEP 476을 보면
[standard library http client (the urllib, urllib2, http, and httplibmodules)] 을 사용할 때 호스트의 X509 인증서를 확인하도록 변경되었다고 한다.
그 이유는 보안 때문이다.
The failure to do these checks means that anyone with a privileged network position is able to trivially execute a man in the middle attack against a Python application using either of these HTTP clients, and change traffic at will.
위에서 언급한 http client를 사용해 MITM 공격이 가능하기 때문이라고 설명되어 있다.
PEP 476 -- Enabling certificate verification by default for stdlib http clients | Python.org
PEP 476 -- Enabling certificate verification by default for stdlib http clients
The official home of the Python Programming Language
www.python.org
'프로그래밍 > 파이썬' 카테고리의 다른 글
PEP(Python Enhancement Proposals) (0) | 2022.02.13 |
---|---|
파이썬 이스케이프 시퀀스 (0) | 2022.02.09 |
파이썬 연산자 우선순위 (0) | 2022.02.09 |
__main__이란? (0) | 2022.02.06 |
보안뉴스 1페이지 기사제목 크롤링 (0) | 2022.02.03 |
댓글