너는 사람이냐? 봇이냐?(Headless Browser)

image
Web을 통해 다양한 정보를 소비하며 쉽게 접근 할 수 있는 환경에 살고있습니다.
이 다양한 정보를 가지고 애플리케이션을 만들어 사용하고 싶은데 Open API를 제공하지 않아 곤란해 하는 경우가 많고 제대로 제공하지 않는 경우도 부지기수 입니다.

구글 뉴스 헤드라인

# 구글 뉴스 스크래핑
curl https://news.google.com/?tab=wn&hl=ko&gl=KR&ceid=KR:ko > google_news.html
# google_news.html 파일 내용중 일부
<h3 class="ipQwMb ekueJc RD0gLb">
    <a href="./articles/CAIiEBTOk3KYcU6RvQ0CfhFY0VUqGQgEKhAIACoHCAow2t-aCDDArqABMNST5AU?hl=ko&amp;gl=KR&amp;ceid=KR%3Ako" class="DY5T1d" >
        부산 변호사 58명 이미선 후보자 임명해야
    </a>
</h3>

그래서 사용하던것이 HTTP Client를 사용하여 Scraping을 하고 원하는 데이터를 처리하여 사용하고 있습니다.

javascript-Javascript
Web Trend의 고도화가 진행됨과 동시에 Web 개발에도 엄청난 발전이 있었는데요. SPA(Single Page Application)이라는 형식의 개발이 유행을 타면서 부터 많은 Site들이 SPA방식으로 제공 하고 있습니다.

javascript-NoJavascript
문제는 HTTP Client로 SPA에 접근할때 Javascript를 실행 하지 못해 원하는 데이터를 가져올수 없는 상황이 생깁니다.
그리고 로그인을 해야만 접근 가능한 Site에 로그인 인증을 어떻게 처리해야 할지 막막한 상황에도 부딫힐 수도 있고 HTTP Client로는 한계가 있어 제대로 Scraping 하기 힘들어 집니다.

HeadlessBrowser
그래서 나오게 된게 Headless Browser이며, 실제 사람인지 봇인지 분간이 안될정도로 Headless Browser를 통해 접속하는 방식으로 Scraping을 할 수 있게 되었습니다.

Headless Browser란 무엇이며 HTTP Client와는 어떤 차이점이 있는지 Headless Browser종류와 성능에 대해 알아 볼것입니다.

이 섹션에서는 검색 엔진 봇은 다루지 않을 예정 입니다.

앞으로 다루어질 내용

  • Headless Browser란?
  • Puppeteer VS Selenium VS PhantomJS VS HttpClient
  • Headless Browser 활용 예제

img

김종인

Java로 생명을 연장하고 있는 개발자 입니다.
오픈소스 활용에 관심이 많으며 이것저것 다 해볼려 노력 하고 있습니다.

 Previous
Headless Browser란? Headless Browser란?
Headless Browser란?위키피디아에서 발췌 했습니다. A headless browser is a web browser without a graphical user interface. 말 그대로 GUI환경
2019-04-13
Next 
MS도 오픈소스 합니다 MS도 오픈소스 합니다
Microsoft의 Github인수2018년 6월 5일 Github이 Microsoft에 인수되었습니다. 약 75억 달러, 우리나라 돈으로 약 8조원에 가까운 어마어마한 금액인데요. 이 뉴스가 터지자 sns에서는 다
2018-11-08
  TOC