본문 바로가기
IT

크롤링) 접속 차단되었을때 User-Agent지정(header)

by 엘리후 2021. 6. 27.

뭐야? 너 컴퓨터야? 그럼 들어오지마 !!!

파이썬 크롤링을 진행하시다가,

이상하게... 아무 이유없이 진행이 안될 때가 있습니다.

분명 적혀있는데로 진행을 했는데..

특별한 오류 메세지는 없는데...

내가 원하는 정보가 찾아지질 않을때...

그럴때는 단계별로 print() 를 해서 찾아봐야 하죠 ㅠ

주로 발생하는 경우 중 하나로,

서버에서 제대로된 html 정보를 주지 않을때 해결하는 방법을 알려드릴까 합니다.

네** 크롤링을 진행할때 자주 나오는 오류이기도 하네요 ㅎ

import requests url = '크롤링하고싶은주소' html = requests.get(url).text

위 처럼 해당 사이트에 접속했는데 별다른 오류 메세지가 나오지 않아요..

그런데 BeautifulSoup 을 활용해서 원하는 정보를 찾을때 (관련 내용은 아래 글에서 참고하세요)

코.알.못. 마케터도 크롤링하기#4. BeautifulSoup으로 정보가져오기

html 구조를 살펴보았다면, 이제는 실제로 html 내의 정보를 가져와야겠죠? BeautifulSoup 이란 것을 사...

kiddwannabe.blog.me

이상하게 되지 않을 때가 있습니다.

sellect() 도 해보고, find()도 해보고.. 이것 저것 해봐도

정보가 없을때!

그럴땐 html 전체를 한번 살펴보는게 좋습니다.

print(html)

그럴때.. html 의 아래쪽에 아래와 같이 표시될 경우...

서버에서 봇으로 인지하고 원하는 정보를 주지 않고 차단한 경우입니다.

너는 사람이 아니네?

컴퓨터잖아

왜 들어왔어! 그냥 나가!

'비정상적인 움직임이 발견될 시 시스템에 의해 해당 네트워크의 검색을 일시적으로 제한하고 있습니다.'

'비정상적인 검색이란 프로그램등을 이용, 특정 단어를 반복적으로 대량으로 입력하는 등.....'

이럴때에는..

'나는 봇이 아니야. 사람...일껄???' 이라고 이야기를 해주면 됩니다.

그럴때에는

headers 정보에 User-Agent 를 넣어주면 되는데요.

(여기서 헤더(header)는, 접속하는 사람/프로그램에 대한 정보를 가지고 있습니다. 정보는 한 가지 항목이 아닌 여러가지 항목이 들어갈 수 있기에 복수형태로 headers 로 입력합니다)

headers = {'User-Agent' : '유저정보'} url = '접속하고픈사이트' requests.get(url, headers = headers)

이렇게 입력을 하면,

나는 '유저정보'란 유저야. 이 사이트에는 어떠한 정보가 있는지 알려줘~

뭐 이렇게 이야기를 하게 되는거죠.

크롤링을 방지하는 사이트에서

만약 User-Agent 를 점검하는 로직이 있다면, 이와 같은 방법으로 해결할 수 있습니다.

그럼.. 이 '유저정보'는 어디서 얻느냐? ㅎ

아래 싸이트에 들어가시면 됩니다.

UserAgentString.com - unknown version

Home | List of User Agent Strings | Links | API | User Agent String explained : facebookexternalhit/1.1 (compatible; Blueno/1.0; +http://naver.me/scrap) Copy/paste any user agent string in this field and click 'Analyze' unknown facebookexternalhit ??? 1.1 ??? compatible Compatibility flag I

www.useragentstring.com

붉은색으로 표시해둔 Mozilla~~~~ 537.36 부분을 복사해서 넣으셔도 되고

(물론 문자열 표시기호인 따옴표 안에 넣으셔야 합니다)

'List of User Agent Strings' 를 클릭하신 후,

원하는 브라우저를 찾아서 정보를 입력해 주어도 괜찮습니다.

크롬 브라우저로 지정할 경우에는, 아래와 같이 입력하면 되겠네요 ^^

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} url ='크롤링할주소' html = requests.get(url, headers = headers).text

#header #headers #useragent #user-agent

도움이 되셨다면, 잘 보셨다는 인사는 아래 광고 클릭으로 해주시면, 더 힘이 납니다 ㅎ

너무 별로라 생각되시면, 댓글로 개선이 필요한 점을 남겨주세요. 고맙습니다 ^^

[출처] 크롤링) 접속 차단되었을때 User-Agent지정(header)|작성자 데이터공방

댓글