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)


이전 11화 마이크로서비스 아키텍처와 API 게이트웨이
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari