티스토리 뷰
머릿말
가끔 웹사이트를 만들거나 블로그를 운영할 때 유입된 사용자가 일반 사용자인지 크롤링 봇인지 확인해야할 때가 있습니다. 그럴 때는 간단하게 위에 이미지처럼 javascript 라이브러리를 하나 설치해서 손쉽게 해당 기능을 구현할 수 있습니다. 위에 소개된 라이브러리는 isbot 이라고 해서 현재 npm package list 기준으로 가장 다운로드 수가 많고 업데이트가 최근에 있던 라이브러리입니다. 자세한 건 아래 링크를 참고해주세요.
https://www.npmjs.com/package/isbot
이번 포스팅에서는 위와 같이 라이브러리를 사용하지 않고서 봇을 탐지할 수 있는 방법에 대해서 다루려고 합니다. 사실 위의 라이브러리 코드도 분석해보면 정말 간단한 구조로 되어 있긴합니다. 다만 좀 더 다양한 상황에서 여러 기능을 사용할 수 있도록 범용적으로 코드가 작성되어져있을 뿐이죠.
그럼 정말 단순히 검색엔진 크롤링 봇인지 아닌지만 javascript 로 확인하는 코드를 작성해보겠습니다.
javascript 로 봇 탐지 방법
우선 봇을 탐지하기 위해서는 각기 다른 검색엔진에 어떤 이름의 크롤링 봇이 있는지 살펴봐야 합니다. 그건 아래 링크에서 간략하게 살펴볼 수 있습니다.
https://udger.com/resources/ua-list/crawlers?c=1
위 사이트는 실시간으로 자주 목격된 봇을 순서대로 리스팅하고 있습니다.
보시다시피 많죠. 이 목록에 나와있는 모든 봇을 확인하도록 해도 되고 원하는 봇만 특정지어서 확인하도록 해도 되겠습니다.
javascript 코드로는 아래와 같이 작성할 수 있습니다.
/bot|spider|crawl/i.test(window.navigator.userAgent)
위 코드는 bot 또는 spider 또는 crawl 이라는 문자열이 포함된 useragent 인지 확인하는 정규표현식을 사용하여 user-agent 값을 확인하는 내용입니다.
마무리
위에서 보셨다시피 대부분의 크롤링 봇들은 bot, spider, crawl 와 같은 문자열을 포함하고 있습니다. 물론 Facebook, Instagram 등과 같은 Social Network 의 봇이나 Google 의 다른 기종의 Bot 들은 또 다른 이름을 가지고 있긴 합니다.
이런 다양한 종류의 봇들을 일일히 다 확인해서 코드로 작성하기에는 정말 번거로운 작업이 아닐 수 없겠습니다.
그럼 이제 실제로 제일 위에서 소개한 isbot 이라는 라이브러리는 어떤 원리로 봇을 탐지하고 있는지 궁금하지 않을 수 없죠. 사실 거의 동일한 원리로 동작합니다. 똑같이 정규표현식으로 확인합니다만, list 가 좀 길죠.
아래 링크가 바로 isbot 라이브러리가 정규표현식으로 사용하고 있는 패턴 모음입니다.
https://github.com/omrilotan/isbot/blob/main/src/list.json
이번 글을 통해서 많은 참고가 되셨으면 좋겠습니다.
- 끝 -
'프로그래밍 > Frontend' 카테고리의 다른 글
Web Cache, Caching, Cache Header (0) | 2022.05.08 |
---|---|
[오류해결] Uncaught TypeError 관련 오류 (0) | 2022.04.13 |
[devtools-detector] javascript로 개발자도구 탐지방법 (1) | 2022.03.07 |
[Lazyload] 브라우저에서 레이지 로딩(lazyload)하는 방법 (0) | 2022.03.06 |
[Handlebars] View Engine 으로서의 Handlebars 기본 사용법 (0) | 2022.02.12 |