crawler란 웹사이트를 방문하여 각종 정보를 자동으로 수집하는 것을 말한다.

(ex. 신문기사 제목을 모두 수집하고 싶은경우,,또는 내용까지 수집할 경우 사람이 직접할수 없으니 crawler를 이용해서 자동화를한다.)

(이 작업을 crawling이라한다)


흔히 말하는 crawling은 우리가 보는 웹 사이트의 '소스 보기'를 통해서 해당 소스를 긁어오고 파싱하는 방식으로 정보를 가져온다.

(ctrl+u를 누르면 해당 페이지 소스를 볼 수 있다)


R언어로 크롤링을 하는경우에는 readLines(url, encoding=...)함수를 이용해서 홈페이지 소스를 긁어오고, stringr패키지를 이용해서 파싱하는 방법이 일반적이다.

python 같은 경우에는 from urllib import request를 이용해서 웹페이지를 긁어와서 BeautifulSoup4(bs4)를 이용해서 파싱하는게 일반적이다.

(scrapy를 이용하는 방법도 있다)


하지만 위 경우는 자바스크립트를 실행시키지 않은 상태의 소스코드를 불러온다.

CTRL+U를 통해서 확인한 소스는 자바스크립트를 실행하지 않은 소스코드이고

F12를 통해서 개발자도구로 확인한 소스는 자바스크립트를 실행한 소스코드이다.


만약 자바스크립트를 실행한 코드가 필요하면, 혹은 크롤링 하는 사이트가 로그인이 필요한 경우,, 등등 어떤 액션이 추가적으로 필요하면

R에서는 Rselenium, python에서는 selenium을 이용하면 된다.

selenium은 브라우저를 통해서 스크랩을 하기 때문에 브라우저에서 자바스크립트를 실행시키거나,,,로그인을 하거나 등의 행위가 가능하다.


위에 적은 방법들은 TEXT를 긁는다는 특징이 있다. (selenium은 경우에따라 아닐수도있다)


다음 포스팅에서는 jpg, css, js등등 홈페이지를 구성하는 자원들을 긁어오는 방법에 대해서 다룬다.

'crawling' 카테고리의 다른 글

web page 스크랩 (full download)  (0) 2016.10.09

와이어샤크에서 아무런 설정이 없으면 SSL or TLS로 통신한 부분은 암호화가 되어있어서 확인이 불가능하다.


SSL은 인증서에 맞는 key를 이용해서 암호화 복호화를 한다. 해당 키를 와이어샤크에 설정하면 암호화된 패킷을 복호화한 상태로 볼 수 있다.


방법은 아래와같다.


(크롬에서는 잘되는데 익스플로러에서는 아래와 같은 방법이 안된다)


____PC 환경설정_____

1. 윈도우키 + R 을누르고 실행창을 킨다


2. "sysdm.cpl"를 입력하고 "고급"탭에서 "환경변수"를 클릭한다


3. "사용자변수"에서 "새로 만들기"클릭


4. 변수 이름은 "SSLKEYLOGFILE"

    변수 값은 "C:\Users\USERNAME\sslkeylog.log"  (USERNAME은 본인 pc에 따라 다르니...)


5. 확인,,확인,,확인 누르고 PC를 재부팅한다.


_____와이어샤크 환경설정_____

6. 상단 "Edit"클릭하고 "Preferences.."를 클릭한다


7. 좌측 "Protocols"에서 SSL을 클릭한다


8. "(Pre)-Master-Secret log filename"에 위 4번에서 변수값으로 넣었던 값과 같은 값을 넣는다.


그리고 "OK"를 누루고 캡처를하면 복호화된 패킷을 볼수있다.

"#1. HTTP/1.1에서 HTTP/2.0 (https인 경우)"글에서 와이어샤크로 캡처한 화면은 없었다.


http를 사용하는 사이트에서는 와이어샤크로 캡처하면 http2 스위칭하는 부분이 별도의 처리 없이 보였었는데


https를 사용하는 사이트를 와이어샤크로 캡처해보니 http2라고 안나오고 TLS라고만 나왔다. (하지만 실제로 통신은 HTTP/2.0으로 통신했다)

와이어샤크로 https://nghttp2.org를 캡처한 화면

(빨간박스 안에 http2는 보이지 않는다)


크롬에서는 HTTP/2.0로 통신한다고 나온다


해결방법은 암호화한(SSL or TLS) 패킷을 복호화해서 보여주면 된다.


와이어샤크가 패킷을 읽고 "이건 HTTP/2.0네?"라고 인지하고 http2표현하는것 같은데


암호화가 되어있어서 와이어샤크는 이 패킷을 읽을 수 없어서 암호화 형태를보고 (혹은 다룬부분을 보고...) SSL or TLS라고 표현하는것같다.


실제로 복호화하는 절차를 거친 후 패킷을 캡처해보니 http2라고 나오는걸 확인할 수 있다.

(복호화 하는 절차 : http://http2.tistory.com/6)


+ Recent posts