티스토리 뷰

728x90
반응형

https://www.npmjs.com/package/isbot

머릿말

가끔 웹사이트를 만들거나 블로그를 운영할 때 유입된 사용자가 일반 사용자인지 크롤링 봇인지 확인해야할 때가 있습니다. 그럴 때는 간단하게 위에 이미지처럼 javascript 라이브러리를 하나 설치해서 손쉽게 해당 기능을 구현할 수 있습니다. 위에 소개된 라이브러리는 isbot 이라고 해서 현재 npm package list 기준으로 가장 다운로드 수가 많고 업데이트가 최근에 있던 라이브러리입니다. 자세한 건 아래 링크를 참고해주세요.

https://www.npmjs.com/package/isbot

 

isbot

🤖 detect bots/crawlers/spiders via the user agent.. Latest version: 3.4.3, last published: 20 days ago. Start using isbot in your project by running `npm i isbot`. There are 50 other projects in the npm registry using isbot.

www.npmjs.com

 

이번 포스팅에서는 위와 같이 라이브러리를 사용하지 않고서 봇을 탐지할 수 있는 방법에 대해서 다루려고 합니다. 사실 위의 라이브러리 코드도 분석해보면 정말 간단한 구조로 되어 있긴합니다. 다만 좀 더 다양한 상황에서 여러 기능을 사용할 수 있도록 범용적으로 코드가 작성되어져있을 뿐이죠.

 

그럼 정말 단순히 검색엔진 크롤링 봇인지 아닌지만 javascript 로 확인하는 코드를 작성해보겠습니다.

 

javascript 로 봇 탐지 방법

우선 봇을 탐지하기 위해서는 각기 다른 검색엔진에 어떤 이름의 크롤링 봇이 있는지 살펴봐야 합니다. 그건 아래 링크에서 간략하게 살펴볼 수 있습니다.

https://udger.com/resources/ua-list/crawlers?c=1 

 

List of Search engine Crawlers :: udger.com

DB crawlers, List of Search engine bots

udger.com

위 사이트는 실시간으로 자주 목격된 봇을 순서대로 리스팅하고 있습니다.

보시다시피 많죠. 이 목록에 나와있는 모든 봇을 확인하도록 해도 되고 원하는 봇만 특정지어서 확인하도록 해도 되겠습니다.

 

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

 

GitHub - omrilotan/isbot: 💻 JavaScript module that detects bots/crawlers/spiders via the user agent

💻 JavaScript module that detects bots/crawlers/spiders via the user agent - GitHub - omrilotan/isbot: 💻 JavaScript module that detects bots/crawlers/spiders via the user agent

github.com

 

이번 글을 통해서 많은 참고가 되셨으면 좋겠습니다.

 

- 끝 -

 

728x90
반응형
댓글