상세 컨텐츠

본문 제목

[Python] 파이썬 urllib.error.HTTPError: HTTP Error 403: Forbidden 해결방법에 대한 결론

IT & Programming/파이썬 (Python) 공부

by 그림아이 2023. 4. 1. 02:00

본문

반응형

 

 Python으로 크롤링하는 재미로 사는 엔지니어입니다.여느 때와 같이 업무용 자동 크롤링 프로그램을 만들기 위해 룰루랄라 코딩을 시작했는데, 시작하자마자 에러 메시지가 딱! 하고 뜹니다.

 

urllib.error.HTTPError: HTTP Error 403: Forbidden

 

그리고 항상 그랬듯이 에러 메시지를 긁어서 복사하고 구글 검색 창에 붙여 넣고 해결책을 찾아봤습니다. 역시나 많은 고수님들이 이미 겪으셨고 해결 방법도 다 나와 있었습니다.

 

그래서 시도해서 성공했다는 방법들을 다 찾아봤고 여기 가져와봤습니다.

 

해결방법#1

from urllib import request

from urllib.request import Request, urlopen

 

url = "https://www.gamefaqs.com"

request_site = Request(url, headers={"User-Agent": "Mozilla/5.0"})

webpage = urlopen(request_site).read()

 

반응형

 

해결방법#2

import requests

 

url = "https://www.gamefaqs.com"

session_obj = requests.Session()

response = session_obj.get(url, headers={"User-Agent": "Mozilla/5.0"})

 

print(response.status_code)

 

대표적으로 위 두가지 방법으로 대부분 해결되었다고 합니다. 첫번째는 urllib과 urllib.request 라이브러리를 사용하는 방법, 두번째는 requests 라이브러리의Session 속성을 이용하는 방법입니다.

 

그런데 저는 위 두가지 모두 실패했습니다. 계속해서 반복적으로 HTTP Error 403가 출력되었습니다. 그래서 10년이 지난 검색 결과까지 모조리 다 찾아봤고 미국 개발자들의 조언들까지 시도해보고 또 실패하는 등 며칠을 고생해야 했습니다.

 

결국 저는 다시 원점으로 돌아가서 HTTP Error 403가 도대체 뭔지부터 알아봤습니다. 답은 의외로 간단했습니다. 위키피디아 영문판에 이렇게 정의되어 있었습니다.

 

HTTP 403 is returned when the client is not permitted access to the resource despite providing authentication such as insufficient permissions of the authenticated account.

 

번역하자면, “HTTP 403은 인증 계정의 충분하지 않은 허가와 같이 인증을 제공함에도 불구하고 클라이언트가 리소스에 접근하는 것을 허가하지 않을 때 출력된다.”

 

즉, 제가 접속하려고 하는 사이트에서 막고 있다는 의미입니다. 저와 같이 자동 크롤링으로 접속하는 것을 막기 위해 접근을 차단한 것으로 보입니다. 업무용으로 미국의 발전소 모니터링 사이트에 접속하려고 했는데 아쉽게 되었습니다. 결국 계속해서 수작업으로 해야 될 것 같습니다.

 

하지만 앞으로도 계속 시도해보고 다른 방법을 찾아볼 생각입니다. 뭔가 새로운 방법을 찾게 되면 공유 드리겠습니다.

 

728x90
반응형

관련글 더보기

댓글 영역