...
검색봇이 크롤링/스크랩핑 하는지 감지하기
우리가 잘아는 대표적인 검색봇은 구글봇이 있다. 이 구글봇이 우리의 티스토리나 웹사이트를 크롤링해야 구글 노출을 시켜준다. 다만, 구글봇도 하나의 사용자처럼 웹사이트를 방문해 조회하기 때문에 내 홈페이지를 조회한게 로봇인지 사람인지 구분할 필요성이 생길 때 가 있다.
이때 간단하게 웹브라우저 전반에 대한 정보를 제공하는 window 객체의 navigator.userAgent 에 적힌 정보를 뒤져서 졍규식으로 봇이름을 가지고 있는지 판별하는 식으로 감지할 수 있다.
const detectRobot = (userAgent) => {
const robots = new RegExp([
/bot/,/spider/,/crawl/, // GENERAL TERMS
/APIs-Google/,/AdsBot/,/Googlebot/, // GOOGLE ROBOTS
/mediapartners/,/Google Favicon/,
/FeedFetcher/,/Google-Read-Aloud/,
/DuplexWeb-Google/,/googleweblight/,
/bing/,/yandex/,/baidu/,/duckduck/,/yahoo/, // OTHER ENGINES
/ecosia/,/ia_archiver/,
/facebook/,/instagram/,/pinterest/,/reddit/, // SOCIAL MEDIA
/slack/,/twitter/,/whatsapp/,/youtube/,
/semrush/, // OTHER
].map((r) => r.source).join("|"),"i"); // BUILD REGEXP + "i" FLAG
return robots.test(userAgent);
};
// 접속자가 사용자인지 로봇인지 체크
const isrobot = detectRobot(navigator.userAgent) // true/false
isbot 모듈
npm 진영에는 isbot 이라는 노드패키지가 존재한다. 서버에서 만일 검색 봇을 감지하고 싶을때는 이 노드 패키지를 사용하면 된다.
import isbot from 'isbot'
// Nodejs HTTP
isbot(request.getHeader('User-Agent'))
// ExpressJS
isbot(req.get('user-agent'))
// Browser
isbot(navigator.userAgent)
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.