상세 컨텐츠

본문 제목

[python] 크롤러 작업시 자동화 도구 차단 처리

PYTHON

by jeonghojin 2023. 10. 27. 15:50

본문

- 파이썬 웹 크롤러 관련 작업 중 발생

 

웹사이트에서의 크롤러 또는 자동화 도구의 차단

  • time.sleep()을 주어 몇 초 간의 간격을 주어 처리를 하는 방법
  • 짧은 시간동안 여러 요청을 했을 경우, 차단을 당할 수 있음.

동일한 기기의 판단 기준이 IP가 아닌 User-Agent 라면, 차단 우회 방법으로 User-Agent 값을 변경하며 요청.

  • 크롤러에서 User-Agent 값은 일정한 데이터를 웹사이트로부터 응답받기 위해 사용되는 중요한 요소
  • 파이썬에서 requests 모듈로 get / post 요청 시 headers 옵션의 User-Agents 값을 커스터마이징 하여 요청

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36' }

 

  • 파이썬 크롤링 시 user-agent 값을 랜덤하게 변경하기 위하여 fake_useragent라는 모듈을 사용하여 처리.

 

- pip install fake-useragent

 

 


 

fake-useragent 사용시 다음과 같은 오류가 발생한다면 아래와 같이 처리한다.

 

  • useragentstring.com / w3schools.com 에서 html 코드를 바꾸었거나 서버가 죽어서 발생

fake-useragent 모듈 패키지의 소스코드 파일 중 utils.py의 코드 내용 중

w3-table-all notranslate

ws-table-all notraslate 

위 빨간색 라인을 파란색 라인과 같이 변경한다.

 

그러나 위 방법은 근본적인 해결책이라기보다는 임시 방편에 가까우므로 아래 코드를 추가한다.

 

use_cache_server 옵션은 fake-useragent 모듈에서 w3schools.com 와 같은 사이트에서 실시간으로 파싱하지 않고, fake-useragent에서 사용하는 heroku 서버에 등록해둔 캐시를 가져다 사용하게 한다.

 


참고 : https://domdom.tistory.com/329

 

[크롤링] 파이썬 크롤링 시 기기 차단 우회하기 (fake-useragent 사용법/user-agent 사용법)

개요 파이썬에서 웹 크롤러를 만들 때 가장 큰 어려움은 역시 웹 사이트에서의 크롤러 또는 자동화 도구의 차단인 것 같습니다. 이런 경우 보통 time.sleep(3) 과 같이 몇 초간 크롤러를 쉬도록 하는

domdom.tistory.com

https://stackoverflow.com/questions/68772211/fake-useragent-module-not-connecting-properly-indexerror-list-index-out-of-ra

 

'PYTHON' 카테고리의 다른 글

호출 함수명 가져오기  (0) 2022.10.17
requests 라이브러리  (0) 2022.06.28

관련글 더보기