본문 바로가기

카테고리 없음

크롤링이 차단되었다면 유저 에이전트(User Agent)를 지정해보자, 크롤링 차당 방지법

크롤링을 하다 보면 종종 페이지에서 아무것도 받아오지 못해서 막히는 경우가 생깁니다. 여러 가지 이유가 있을 수 있겠지만 본인이 잘못한 게 없다면 대개 서버에서 차단을 당했기 때문입니다. 

 

서버는 User Agent 검사 등의 방법으로 일반 사용자(사람)와 봇을 구분하여 차단할 수 있습니다. 사람이 아니라고 의심이 되면 접속을 차단하는 것입니다. 봇이 악의적인 목적을 가지고 서버에 많은 부하를 주어 다른 사람들이 피해를 입으면 안 되니까요.

 

그렇다면 해결 방법은 사람인 척하는 것입니다. 이때 가장 쉬운 방법은 Header에 User Agent 정보를 만들어서 보내는 겁니다.

 

유저 에이전트란

브라우저가 웹사이트에 연결을 시작할 때 전달되는 기기 정보로 브라우저의 유형, 운영체제 등의 정보가 담겨있습니다. 예를 들면 다음과 같이 생겼습니다.

 

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36

 

유저 에이전트를 담아서 get 요청보내기

url = '웹페이지 주소'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')

 

user-agent 값에 어떤 문자열을 넣어야 할지 모르겠다면 http://www.useragentstring.com/에 들어가서 본인의 정보를 확인하고 그대로 붙여 넣어도 무방합니다.

 

 

유저 에이전트 정보까지 넣고 다시 사이트에 접속해봅니다. 이전에 차단당한 이유가 User Agent 점검에 걸렸기 때문이었다면, 이제 잘 접속되는 것을 볼 수 있습니다.

 

웹사이트 접속하면 어떤 정보들이 넘어가는 걸까?

https://www.whatismybrowser.com/에 접속해보시면 그 내용들을 확인할 수 있습니다. 웹서버는 우리에 대해서 생각보다 많은 정보들을 알 수 있습니다.

 

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.