brunch

You can make anything
by writing

C.S.Lewis

by 테크유람 Aug 02. 2016

Facebook의 웹 크롤링

페이스북 크롤러의 작동 방식

페이스북에 포스팅할때, 웹 사이트 URL을 입력하면 포스팅 완료 이전 이라도,기본 해당 사이트의 정보를 가지고 온다. 이렇게 SNS나, 인스턴트 메신저에서 웹 사이트 정보가 미리 필요한 경우를 대비해 meta 태그상에 정의된 대표 이미지와 사이트 description을 미리 준비해두는 웹사이트도 있지만, 그렇지 않은 경우라면 HTML과 이미지 일부분을 가져와야 하는 경우가 있는데, 이 경우는 일종의 웹 크롤링 이라고도 볼 수 있다.



페이스북이 웹 사이트 정보 수집을 위해 요청하는 HTTP request 메시지상의 요청 헤더는 다음과 같다.

....

Range: bytes=0-524287

X-Fb-Curl-Client: share_scraper

Host: XXXXX

Accept-Encoding: gzip

Connection: close

....

Accept: */*

....

User-Agent: facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)


웹 서버에 해당 콘텐트를 요청한 페이스북 에이젼트의 Source IP를 검색해보면, 이 경우엔 미국 버지니아 애쉬번에 있는 페이스북의 에이전트로 확인된다. 재미있는 점은 저 User-Agent값으로 spoofing한 악성 웹 크롤러들이 꽤 많다는 사실이다.


즉, 검색에 노출되지 않도록 GoogleBot은 막을지 언정, 페이스북에 포스팅되는 것은 마케팅 차원에서라도 풀어주고 있는 사이트 관리자들의 심리를 이용했다고도 볼 수 있다. 

(참고로 페이스북은 이미 자사의 개발자 웹 사이트를 통해서 페이스북이 크롤링을 할 때 사용하는 User-Agent와 그 Agent들의 IP CIDR 블럭, 크롤링 방식등을 공개하였다. https://developers.facebook.com/docs/sharing/webmasters/crawler?pnref=story


페이스북 크롤러는 다음과 같이 웹 사이트 관리자가 미리 준비한 메타 데이터를 통해 사이트 정보를 수집한다.

<meta property="og:url" content="https://example.com/path" />


사이트 관리자 입장에서는 단순히 Bot을 User-Agent 값만으로 유입/차단 여부를 결정할것 아니라, 다음과 같은 여러 측면에서의 판단이 필요하다.


다른 서비스에도 공격을 했거나, 하고 있는 악명높은 악성 클라이언트인지 IP 데이터베이스에서 검색(Client Reputation)

익명 네트워크 뒤에 숨어서 공격하고 있는지 (Tor N/W)

CDN이나 리버스 프록시 때문에 특정 IP의 접속율이 높아보이는 것은 아닌지(Proxy)

특정 클라이언트가 단위 시간내 너무 많은 접속을 하고 있는지(Rate control)


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari