스크롤 행동으로 스크래퍼 봇 탐지: 버스트성과 메모리 분석
Detecting scraper bots through scroll behaviour

한 개발자가 스크롤 이벤트의 버스트성(B)과 메모리(M) 계수를 활용해 인간과 스크래퍼 봇을 구분하는 머신러닝 모델을 실험했다. FP-Agent 데이터셋으로 학습한 LightGBM 모델은 73.4%의 정확도를 보였으며, 인간과 ChatGPT 에이전트를 혼동하는 경향이 있었다. 저자는 스크롤 행동이 유망한 지표이지만, 실제 웹사이트에서는 다른 특징(마우스 움직임 등)과 결합해야 더 효과적일 것이라고 말한다.
스크롤 동작은 봇과 인간을 구분하는 데 유의미한 데이터 포인트로 보이며, 통제된 환경에서 버스트성과 메모리가 예측력을 가짐을 확인했다.
HN 토론
20- xp84
궁금한 건, 언젠가 어떤 사이트들은 봇에게 가능한 한 친절해지고 싶어 하는 시점이 올까 하는 거예요 (바라건대 그들은 그냥 합리적인 속도 제한이 있는 공개 API로 전환해서 모두가 시간과 대역폭을 절약할 수 있게 해주길 바랍니다), 반면에 나머지 사이트들은 그 반대를 원하겠죠.
서비스를 제공하는 입장에서, AI 에이전트가 정말로 사람들이 "클로드, 나한테 새 샤워 호스 사줘, 길이 5피트 정도, 브러시드 니켈로. 평소 내 기준대로 골라주고 20달러 넘지 말고."라고 말할 정도로 보편화된다면, 많은 전자상거래 사이트들은 봇에게 친절해지고 싶은 동기가 매우 강해질 거예요.
그리고 당연히 모든 "콘텐츠" 사이트는 그 반대라서, 대역폭 낭비를 원하지 않고 자신들을 스크래핑하려는 어떤 주체와도 독점 유료 콘텐츠 계약을 체결하기를 바라겠죠.
- bryanrasmussen
재미있는 게, 특정 플랫폼을 대상으로 봇을 작성할 때 저도 이런 짓을 많이 했어요. 왜냐하면 편집증이 있어서 차단당하고 싶지 않았거든요. 그래서 제가 한 것들:
현재 로드된 페이지에서 조작하려는 모든 요소를 감지한다. 클릭하려는 요소. 클릭하려는 요소로 스크롤한다. 무작위 뷰포트 스크롤 동작, 뷰포트를 약간 넘어가서, 다시 위로 스크롤하고, 클릭할 마우스 위치를 결정한다 - 클릭 가능한 항목의 중심 x, y 좌표, 클릭 가능한 항목의 경계 상자 x, y를 결정하고, 경계 상자 안에서 중심으로 가는 동안 약간의 무작위성을 가진 어떤 지점을 선택한다. 왜냐하면 인간은 분명히 매번 정확한 중심을 클릭하지 않으니까. 무작위 마우스 이동 속도를 설정한다. 마우스 끊김 함수 (실제로 클릭할 x.y 좌표로 가는 경로 상의 여러 x.y 좌표를 결정하고, 각각을 향해 무작위 마우스 속도로 이동해서, 아무도 "어? 이 마우스가 클릭할 곳으로 부자연스럽게 직선적이고 부자연스럽게 매끄럽게 움직이네"라고 말할 수 없게 한다.) 클릭할 위치에 도달한다. 클릭까지 무작위 대기 시간을 기다린다. 클릭한다.
이 방법만으로 내 기준에 맞는 새 요소가 계속 감지되지 않으면, 이제 새 요소를 감지할 수 있는지 스크롤해야 한다.
스크롤할 무작위 횟수. 무작위 스크롤 속도. 무작위 스크롤 거리.
스크롤 시작. 스크롤 거리에 도달하면 멈춤. 무작위 위아래 스크롤.
내 자동화 목표는 봇이 수백 명의 일을 할 수 있게 하는 것이 아니었다. 그저 일을 하는 것이었다 […]
- ventana
대단하네요!
저는 제가 관리하는 웹사이트 중 하나에 Google Ads 트래픽을 실험해 본 적이 있는데, 마우스 이동 및 스크롤 이벤트의 존재만 봐도, 패턴은 말할 것도 없고, Google Ads에서 유료 클릭으로 집계되는 봇이나 광고를 (잘못) 클릭하고 제 웹사이트에서 아무 행동도 하지 않은 사용자가 얼마나 많은지 이해하게 되었어요. 이 글에서처럼 패턴을 분석했다면 훨씬 더 의미 있었을 거예요.