상세 컨텐츠

본문 제목

python requests InsecureRequestWarning 해결법

Dev Type

by ai developer 2023. 11. 29. 16:58

본문

python으로 자동으로 request 요청하다 보면 가끔 오류가 나서 살펴보면 같은 곳에 파라미터만 바꿔서 계속 요청중인데도 불구하고 ssl 인증서를 신뢰할 수 없다며 오류를 내뱉는다.

이런 이상한 오류들은 일일이 대응하기엔 시간이 없다.

그래서 requests.post(url=url, headers=headers, json=payload, verify=false, timeout=10) 처럼 verify와 timeout 옵션을 넣어줬다. verify=false로 해두면 인증서를 걍 신뢰하게 하는거다. 위험부담이 있지만 보통 api 사용할 때 믿을만한 곳을 이용하기도 하고 이렇게 같은 곳에 요청해도 어떨 때는 나고 어떨 때는 안 난다면 과감히 이런 조치를 하는 것도 좋다고 생각한다.

이렇게 조치가 끝나나 했는데 다시 아래의 오류가 등장했다. 무한 반복해서 계속 등장한다.😅(필요없는 부분은 ... 처리!)

...lib/python3.10/site-packages/urllib3/connectionpool.py:1061: InsecureRequestWarning: Unverified HTTPS request is being made to host '...'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings

체감상으로는 요청할 때마다 등장하는 것 같은데 괜히 이러다 문제 생기는 건 아닌가 불안해지고 기껏 속도 체크나 중간에 확인을 위해 찍어뒀던 로그들도 안 보일만큼 내 터미널 라인 설정을 훨씬 뛰어넘는 Warning이 무한정 뜨는데 이걸 해결하는 방법은 3가지가 있다!(셋 중 하나만 해도 됨!)

  1. urllib3을 이용해 disable하고 싶은 warning만 disable 하는 방법
from urllib3.exceptions import InsecureRequestWarning
from urllib3 import disable_warnings
disable_warnings(InsecureRequestWarning)

이렇게 하면 InsecureRequestWarning은 disable 되서 내 마음을 더 이상 괴롭히지 않는다.😄

  1. requests 에서 warning을 disable하는 방법
import requests
requests.packages.urllib3.disable_warnings()

이렇게 requests 모듈에서도 disable 되게 만들어 줄 수 있다! 👍

  1. 이번엔 최신 CA 파일을 통해 요청하는 방법인데, 이건 귀찮아서 직접 해보진 않았다...;

우선 최신 CA 파일을 여기서 다운받고, 아래와 같이 path를 넣어주면 된다고 한다.

requests.post(url=API_SERVER, headers=headers, data=json.dumps(data), verify='CA_PATH')
requests.get('https://github.com', verify='/path/to/certfile')

 

 

이 외에도 다른 방법들도 있는데 점점 귀찮아지는 방법들이라 나는 여기까지...

정말 시간 부족한 사람들 많을텐데 조금이나마 도움이 됐으면 좋겠다!!

300x250

관련글 더보기

댓글 영역