요약
크롤러에 신원 공개를 강제하는 법은 악성 봇을 막지 못하고 공익 목적의 자동 수집만 위축시킵니다.
인터넷 아카이브의 라일라 베일리와 민주주의기술센터의 테스 바르타니안이 쓴 기고문입니다. 미국 언론사들이 AI 기업의 과도한 웹 수집을 막으려고 Stealth Bot Prohibition Act 통과를 촉구하자, 필자들은 문제의식에는 동의하면서도 해법이 틀렸다고 반박했습니다.
왜 중요한가
- 누가 접속했는지만 따지는 규제로는 서버 부담 같은 실제 피해가 그대로 남습니다.
- 익명 수집에 기대는 기자, 연구자, 아카이브 기관이 법적 위험을 떠안게 됩니다.
핵심 내용
- 신원을 밝히고 1분에 1만 번 접속하는 기업은 합법이지만, 익명으로 조사하는 기자는 위법이 될 수 있습니다.
- 연방 법안은 FTC(연방거래위원회)가 최대 5만 3,000달러 벌금을 매기게 하지만, 기준인 피해 가능성의 정의가 모호합니다.
- 뉴욕주 법안은 피해를 입증하지 않아도 사이트 운영자가 소환장으로 크롤러의 신원을 알아낼 수 있게 합니다.
- 월스트리트저널의 공직자 주식 거래 보도와 Wayback Machine의 웹 보존이 자동 수집의 공익 사례로 제시됐습니다.
- 대안으로 기존 법 활용, IETF의 표준 작업 지원, 서버 과부하나 사기 같은 구체적 피해로 책임 한정을 제안했습니다.
HN 반응
- 브라우저도 목적을 미리 밝히지 않아 법 적용이 모호하다는 비판과, 신분을 속이는 봇은 구별하기 쉽다는 반론이 맞섰습니다.
- 봇 때문에 매달 수천 달러를 낭비한다는 운영자 경험담이 나왔고, 해외 봇에는 미국 법이 닿지 않는다는 지적도 있었습니다.
"크롤러 뒤에 있는 신원을 안다고 해서 그 행동이 해로운지 아닌지는 거의 알 수 없습니다. 뉴욕 법안에 따르면 신원을 밝힌 회사가 분당 1만 번씩 웹사이트에 접속해도 법을 지킨 것이 됩니다. 사이트에 막대하고 정당화되기 어려운 비용을 떠넘기고 있는데도요. 반면 기술 기업들의 반경쟁적 관행을 조사하려고 익명으로 크롤러를 쓰는 기자는 법을 지킨 것이 아닙니다."
이 법안은 대부분 일반 사용자에게만 영향을 주는 것 같고, 감시를 더 밀어붙이려는 수작 같아서 의심스럽습니다. 하지만 가장 큰 문제는 인터넷이 전 세계에 걸쳐 있는데 과태료는 미국에만 적용된다는 점입니다. 러시아, 중국, 인도, 하다못해 프랑스에서 스크래핑을 하면 이 법이 봇을 어떻게 줄인다는 건가요? 이 법안의 진짜 목적은 새로운 형태의 '사업 모델 모독죄'를 만드는 쪽에 더 가까워 보입니다.
전제부터가 자기들이 무엇을 요구하려는지 이해하지 못하는 것 같습니다. 전신기로 컴캐스트에 전기 신호를 보내거나 광섬유에 손전등을 깜빡여서 웹사이트에 접속하는 사람은 없습니다. 모든 웹 브라우저는 컴퓨터에서 돌아가는 컴퓨터 프로그램입니다.
그럼 웹 브라우저는 봇입니까? 광고 차단기는요? RECAP은요? NewPipe는요? 다른 프로그램이 시켜서 링크를 여는 기본 브라우저는요? 웹메일 제공업체에서 내 이메일을 전부 내려받는 브라우저 확장 프로그램은요?
이런 것들을 금지하려는 의도는 아닐 겁니다. 같은 말이지만, 이런 것들이 스스로 봇이라고 밝히도록 법으로 강제해서 차단당하게 만들려는 의도도 아니겠죠. 만약 그게 의도라면 적대적이고 악의적인 제안입니다. 그게 의도가 아니라면, 이런 것들과 정말로 규제하려는 대상을 구분하는 방법은 어디에 있습니까?
주거용 프록시 네트워크, 헤드리스 브라우징, TLS 핑거프린트 조작을 써서 속임수 UserAgent 문자열로 대량의 자동 요청을 보내고, 요청 제한 같은 통제를 피하는 사람은 UA를 쓰는 일반 사용자와 설명하고 구분하기가 어렵지 않습니다.
법안 본문은 꽤 명료합니다. 핵심은 "봇"보다 "스텔스"라는 부분에 있습니다.
(a) 금지. 누구든 다음 행위를 해서는 안 된다.
(1) 웹사이트, 디지털 플랫폼 또는 온라인 서비스의 기술적 또는 상업적 운영에 손해를 입히거나 지장을 주거나 부담을 지울 가능성이 합리적으로 높은 방식으로 접근하기 위해 스텔스 봇을 배치하거나, 지시하거나, 배치되게 하는 행위
(2) 생성형 AI 모델 또는 서비스와 관련하여 사용할 목적으로, 봇의 성격을 의도적으로 허위 표시하거나 숨기거나 흐려서 사람 사용자처럼 보이게 하는 행위
(6) 스텔스 봇. "스텔스 봇"이란 자신의 신원과 목적을 사전에 밝히지 않고 웹사이트, 디지털 플랫폼 또는 온라인 서비스에 접근, 검색, 스캔, 색인, 스크래핑하거나 그 밖의 방식으로 상호작용하는 봇을 말하며, 특히 다음에 해당하는 경우를 포함한다.
(A) 유효하고 정확한 user-agent 문자열을 포함한 방법으로 자신의 신원을 밝히지 않는 경우, 또는
(B) 접근을 요청하는 시점에, 웹사이트 운영자가 접근할 수 있는 형식으로 봇의 구체적인 성격과 목적을 밝히지 않는 경우. 여기에는 페이지 콘텐츠의 사용 목적과 용도(텍스트·데이터 마이닝, 검색 색인, 추론, 인공지능 개발·지원·운영(학습, 파인튜닝, 검색 증강 생성 등))나 그 밖의 자동화된 처리가 포함된다.
그렇다면 왜 이 법안은 실제로 규제하는 것 대신, 주거용 프록시 네트워크의 여러 IP 주소에서 여러 번 요청하는 행위를 금지하려 하지 않는 겁니까?
그렇지 않습니다. "스텔스 봇"의 정의를 보세요. 브라우저와 구분해 주는 건 명목상 "봇"이라는 단어뿐인데, 이 단어는 정의조차 되어 있지 않습니다. "자신의 신원과 목적을 사전에 밝히지 않고"라는 문구는 일반 웹 브라우저도 마찬가지로 하는 일이기 때문입니다.
"유효하고 정확한 user-agent 문자열"로도 빠져나가지 못합니다. 그 조항은 또는으로 이어져 있어서 두 번째 조건에 여전히 걸리기도 하고, "유효하고 정확한 user-agent 문자열"이라는 말 자체가 말이 안 되기 때문이기도 합니다. Safari의 user agent 문자열은 Safari가 Mozilla가 아닌데도 "Mozilla"로 시작합니다. 안드로이드도 마찬가지이고, 거기에 "AppleWebKit"과 "Mobile Safari"까지 들어갑니다. 브라우저 확장 프로그램은 확장 프로그램이 뭘 하든 브라우저의 user agent 문자열을 씁니다. 데비안이 자기네 버전의 Firefox를 패키징해도 user agent 문자열에는 Debian이 아니라 Firefox라고 적힙니다.
User agent 문자열에는 등록 체계가 없습니다. "유효"는 의미가 없고, "정확"은 흔한 브라우저의 기본 동작과 어긋납니다.
User agent 문자열은 웹사이트들이 기능을 켜려고 이를 잘못 파싱해 온 탓에 생긴 안타까운 결과이고, "모든 버그가 계약이 되어 버리는" 상황의 전형입니다.
그렇긴 해도, 1KB짜리 쿼리 문자열에 GOOGLEBOT을 넣고, 자기네 크롤러가 무엇이고 어떻게 식별하고 어떻게 차단하고 어떻게 제한을 거는지 설명하는 아주 긴 페이지까지 함께 제공했다면, 어떤 판사도 목적을 숨겼다고 유죄를 선고하지 않을 겁니다.
법이 더 구체적인 기능을 금지하지 않고 지금처럼 쓰인 이유는, 나쁜 놈들이 우회할 방법을 떠올리지 못하게 하려는 겁니다.
제대로 된 ua 검사를 하는 사람은 없다고 생각합니다. 웹 개발자들은 자기가 제일 좋아하는 브라우저, 즉 Chrome에서만 테스트하니 Chrome만 허용되는 셈이죠. 그게 의도인가요? 웹 호환성의 존재 이유가 바로 Chrome인 척하는 것인데요.
애초에 ua 검사는 어떻게 구현합니까? 브라우저를 몇 개나 압니까? 모르는 브라우저는 몇 개고요? 내일 나올 브라우저에 대한 ua 검사는 어떻게 구현할 건가요?
저는 제 HTTP 다운로더를 직접 만들었습니다. 그게 존재한다는 걸 알고 계십니까? 그 프로그램에 대한 ua 검사는 어떻게 구현합니까? 당신이 검사하기 편하게 "wget"이라고 불러도 됩니까? 당신 ua 검사와 호환되게 "Mozilla/5.0"이라고 불러서 아무것도 안 바꿔도 되게 해 드릴까요?
이 목적이라면 이런 모양입니다.
그래서 바로 그걸 법으로 규제하려는 게 어리석다는 겁니다. 안드로이드가 스스로를 "Mobile Safari"라고 부르는 이유는 당연히 서버가 데스크톱 버전이 아닌 모바일 버전 사이트를 보내 주게 하려는 것이죠.
그러니 "정확"을 요구하는 건 무리입니다. 부정확해야 한다는 요구가 이미, 면제도 안 되는 형태로 존재하니까요. 누군가 "웹 페이지를 PDF로 바꿔서 비행기에서 나중에 볼 수 있게 해 주는" 소프트웨어 같은 걸 만든다면, PDF로 바꿀 버전을 사이트가 보내 주도록 하는 user agent 문자열을 써야 합니다.
첫째, 기소당하는 쪽이 이 법안이 명목상 겨냥하는 주체일 거라고 가정하고 계시는데, 진짜 문제는 그렇지 않은 경우입니다. User agent 문자열이 부정확한 사람은 누구나 위반이라는 법을 제안하는데, 모든 사람의 user agent 문자열이 부정확하니까요.
게다가 이런 걸 입법하면 어떤 결과가 나올지 생각해 보세요. 사이트들은 user agent를 블랙리스트에 올리거나 화이트리스트에 올리려 할 겁니다.
블랙리스트로 가면 안 통합니다. 스크래핑 업체가 원할 때 언제든 바꿀 수 있으니까요.
화이트리스트로 가면 안 통합니다. 그러면 모든 제3자가 아주 무해한 일을 하면서도 흔한 브라우저인 척해야 하고, 그렇지 않으면 다른 것이라는 이유로 기본적으로 차단당합니다. 그러면 user agent 문자열은 지금보다 더 쓸모없어지고, 게다가 꼭 해야 하는 일을 했을 뿐인 무고한 사람들(안 그러면 클라이언트가 먹통이 되니까요)이 임의의 책임을 질 수 있게 됩니다.
그건 독재를 묘사하는 말입니다. 늘 누군가를 기소할 수 있게 만드는 방법은 누구든 언제나 기소할 수 있게 만드는 것인데, 이건 매우 나쁩니다.
아닙니다. 제 제안은 그 부정확한 문자열에 googlebot이 없으면 구글이 위반이라는 겁니다.
네, 그게 바라는 결과입니다.
그러면 위반이 되고, 기소할 수 있게 됩니다. 물론 자동화된 것임을 증명할 데이터를 모으기 시작해야 하지만, 이미 일시적으로 IP를 차단하려고 오늘날에도 하고 있는 일입니다. 이 법이 있으면 무지개 끝에 처벌 수단도 생기는 겁니다.
흔한 브라우저가 아니면서 그런 척하는 사람은 누구든 위반입니다. 게다가 이 법 아래에서는 googlebot인 척할 유인이 아무에게도 없습니다. 그게 차단당할 수 있으니까요. 당신은 이 사실들을 일부러, 계속해서 흐리고 있습니다.
좀 오래됐지만 https://webaim.org/blog/user-agent-string-history/ 는 언제 봐도 좋은 우화입니다.
UA 문자열의 의미를 너무 잘게 쪼개고 계시네요.
봇은 RFC 9309의 REP로 얼마든지 쉽게 신원을 밝힐 수 있습니다. 어렵거나 헷갈리는 일이 아닙니다.
이 모델은 건강한 사회로 가는 방향과 정반대입니다. 공개 웹사이트에서 이미 대중에게 공개된 정보를 쓰기만 더 어렵게 만들고, 결국 학습 데이터 주위에 해자만 만들 뿐입니다.
저는 그 대신 학습 데이터, 공정 이용, 생성물의 저작권을 공정하고 균형 있게 다루는 포괄적인 저작권 현대화 법안을 보고 싶습니다. 해자를 최소화하고, 이해관계자마다 충돌하는 요구를 합리적으로 타협하려는(최대한 만족시키도록 영리하게 설계한) 법안이요. 그런 다음 웹사이트가 트래픽이 봇에서 왔는지 사람에게서 왔는지에 따라 차별하는 것을 금지하면 됩니다. 모두에게 똑같이 적용된다면 네트워크 수준에서라도 요청 제한을 걸 수 있고, 가격이 모두에게 같다면 요청당 요금을 받아도 됩니다. 하지만 제가 수작업으로 해도 되는 일이라면, 똑같은 작업을 자동화해서 해도 되어야 합니다.
저는 이 문제를 지식재산권 문제로 보는 데는 훨씬 관심이 적고, 용량 소모와 비용의 문제로 봅니다.
요청 제한 같은 제약을 피하는 대형 VC 투자 기업들이 있고, 이들의 행위가 실제 경제적 피해를 일으키고 있습니다.
다행히 피해를 일으킬 것으로 합리적으로 예측할 수 있는 경우에만 불법이라네요!
저는 주요 정보원 역할을 하는 웹사이트를 운영하면서 첫 문단에서 말씀하신 그 봇들을 상대하고 있습니다. 끈질기기 짝이 없고, 낭비되는 자원 때문에 우리가 매달 수천 달러를 씁니다. 매우 정교하고 무한히 많은 봇을 보내는 것처럼 보이는 걸 보면, 거의 확실히 훨씬 큰 기업들의 지시로 움직이는 겁니다.
그 봇들의 정체가 밝혀져도 이들에게 일을 맡긴 빅테크 기업들은 모두 그럴듯하게 발뺌할 수 있을 게 뻔합니다.
모든 기업이 발뺌할 수 있을 것 같지는 않습니다. 탐지를 피하려 하거나 기존 스파이더를 AI 학습용으로 오용하는 기업은 꽤 쉽게 눈에 띕니다.
제가 본 사례 중에는 크롤러가 99%의 경우 Chrome인 척 위장하지만, 무리 전체의 핑거프린트가 같은 UA 문자열에서 진짜 신원을 흘리는 경우도 있습니다.
(Replit, 당신들 얘기입니다.)
사람이 판단하는 구분이지 기술적인 구분은 아니지만, 법은 이런 문제를 아주 잘 다룹니다. 육체는 과실치사와 살인의 차이를 모르지만, 우리 인간은 충분히 가려낼 수 있잖아요.
법이 의도를 판단할 수 없다고 정해 버린 세상이라니 분명 흥미롭긴 하지만, 그런 세상이 가장 잘 돌아갈 것 같지는 않네요.
아니요, 사람들이 그렇다고 주장하길 좋아할 뿐입니다. 한편 법무팀은 위험을 회피하기 때문에, 선이 어디인지 아무도 설명하지 못하면 당신이 금지하지 않는다고 주장하는 것들까지 전부 금지하는 셈이 됩니다. 판사가 결국 합리적인 판결을 내린다 해도, 그 사건을 "이기려고" 소송비용을 내는 사람이 당신이길 바랍니까?
이런 것이 현실적인 문제가 되지 않는 이유는, 보통 사람은 애초에 아무도 죽이지 않으려고 노력함으로써 그 구분에 신경 쓸 필요를 피할 수 있기 때문입니다. 게다가 법에는 과실치사와 살인의 구분에 관한 꽤 구체적인 규정이 실제로 있습니다.
반면 여기서의 문제는, 우리가 구체적으로 막고 싶지 않은 것들과 금지하자고 제안된 다른 무엇을 구분해야 한다는 겁니다. 그런 구분을 가장 자주 다루는 법이 세법입니다. 그 결과 세법은 아주 구체적으로 만들어야 하고, 그러지 않으면 대참사가 납니다.
맞는 말씀입니다.
"스텔스"가 무슨 뜻입니까? 거의 의미 없는 용어입니다. "손해, 지장, 부담"도 너무 모호합니다. 구체적인 기준을 정하면 좋겠습니다. 예컨대 수만 달러 규모의 피해처럼요(예상 벌금과 균형을 맞춰서요. 기자나 사용자가 이 정도 규모로 데이터를 되팔 가능성은 낮고, AI 스크레이퍼는 그런 비용을 치르거나 입힐 수 있습니다). "합리적으로 높은"이라는 문구는 엄청나게 많은 부담을 지고 있는데, 다른 분들이 말씀하셨듯 "합리적인" 사례는 그리 많지 않고 그나마도 법정에서 정해져야 합니다.
당신과 다른 분들이 말씀하신 대로, 즉각적인 반응은 법무팀이 사실상 모든 접근을 금지하는 것일 겁니다. 소송을 제기할 여지가 있고, 이기더라도 소송비용을 돌려받는다는 보장이 없으니까요...
인간으로서 말씀드리면,
"스텔스"는 다른 사람들이 당신의 크롤링을 막기가 쉽지 않다는 뜻이고,
"손해, 지장, 부담"은 보는 사람 마음입니다. 즉 당신이 자기 사이트를 크롤링하는 걸 막으려는 그 사람 마음이죠.
네, 이걸 악용해 한몫 챙기려는 특허 괴물 같은 자들이 나오겠죠. 그래서 크롤링하는 주체는 전자적인 옵트아웃 수단을 제공하고 그걸 지키는 게 자기 이익에도 맞을 겁니다.
동의합니다. 법이 살인과 과실치사에는 꽤 잘 통하는 이유는 발생 빈도가 낮고, 누구나 본능적으로 이해하고, 대체로 진화적으로 새겨진 공통의 가치관이 있기 때문입니다.
다른 것들에는 덜 통합니다. 예를 들어 화이트칼라 범죄는 빈도가 낮고 수십 년, 아니 수백 년은 된 금융 개념과 규범에 바탕을 두고 있는데도, 합리적 의심과 말 돌리기가 파고들 회색 지대가 많습니다.
컴퓨터와 인터넷 규제는 (자금 절도처럼) 인터넷 이전의 범죄 정의에 곧바로 연결할 수 있는 경우를 빼면 거의 전혀 통하지 않았습니다. 데이터 프라이버시, 암호화, 지식재산권, "해킹" 같은 것들은 전부 엉망진창이었어요. 그런데 이제 거기에 에이전트라는 휘발유까지 붓겠다고요? 우리 법 체계는 그럴 준비가 안 되어 있습니다. 이런 문제에 대해 아무것도 모르는 지금의 노인 지배 체제는 더더욱 그렇고요.
여기서도 똑같습니다. 보통 사람은 이 법에 절대 걸리지 않습니다. 영향을 받는 건 전적으로 업계 전문가들이고, 이들에게는 선이 어디인지 밀리미터 단위로 알아낼 법무팀이 있습니다. 법률 용어로 옮기기가 어렵다는 건 맞고, 이런 입법은 수많은 소송을 거쳐 대부분 판례법이 될 거라고 봅니다. 하지만 결국 괜찮을 거라는 걸 알려 주는 단서는, 어떤 상황에 "봇/봇 아님"을 붙이는 일은 업계의 우리 모두가 동의하는 일이라는 점입니다. 여기에는 애매한 영역이 그리 많지 않습니다. 주거용 프록시 네트워크로 돌아가는 웹 스크레이퍼를 실수로 만들 수는 없고, 스크래핑하는 사이트의 동의가 없어서 트래픽을 위장하기로 했다면 그건 아주 분명합니다.
억지로 지어낸 터무니없는 경계선 사례들조차 결국 "하지만 나를 막으려고 특별히 설계된 보안 조치를 적극적으로 속이고 우회할 권리가 내게 있어야 한다"로 귀결되는데, 이건 설득하기 꽤 힘든 주장입니다.
제가 뭔가 놓친 게 아니라면, 에이전트에게 온라인에 올라온 여러 선택지를 비교하거나 분석해 달라고 시키면 대부분 어느 시점에는 스크래핑이 개입하게 됩니다.
잘 알려진 공개 무료 API가 없는 것은 모두 스크래핑의 주 대상이 될 거예요.
조항이 너무 넓고 모호해서 이미 걸리고 있고, 당신이 실제로 기대는 건 그들이 기소되지 않으리라는 점일 뿐인데, 그건 완전히 다른 얘기입니다.
"법원이 결국 정리해 주겠지"는 처음부터 법을 부실하게 쓴 데 대한 최악의 변명이고, 그게 실제로 이뤄지기까지 걸리는 수십 년 동안은 아무 도움도 안 됩니다.
기업들이 "보안"이라는 말을 "우리가 마음에 안 들어 하는 일을 하는 모든 사람"이라는 뜻으로 가로채는 그 수법 같네요. 마치 그럴 권리가 애초에 있기라도 한 것처럼요.
기자는 부정행위를 조사할 수 있어야 합니다. 고객과 고객의 에이전트는 가격 데이터에 대량으로 접근할 수 있어야 합니다. 실제 사람들이 다른 실제 사람들의 발언을, 네트워크 효과 때문에 쓰는 것뿐인 기업 중개자의 독점 인터페이스를 거쳐서 봐야 해서는 안 됩니다.
"충분히 가려낼 수 있다"는 게, 선의로 최선을 다해도 오심이 판치고 돈도 많이 들고 힘든 과정을 말하는 겁니까? 무죄를 받든 (더 가벼운 죄목으로) 유죄 협상을 하든 재정적 파탄으로 이어질 수 있는 과정을요?
"받아들일 만한 브라우저 대 악성 봇"을 "과실치사 대 살인"에 빗대는 건 도움이 안 됩니다.
게다가 지금 사회는 가장 강력한 기업들 상당수가 자기 업계의 법을 대놓고 무시하면서 시작한 사회입니다. Uber, OpenAI 같은 곳이 그렇죠.
브라우저는 웹페이지 하나를 열려고 분당 1만 건씩 요청을 보내지 않습니다. 가장 무겁고 현대적인 웹페이지에서도요. 설령 보낸다 해도 한 웹사이트에 보내지는 않을 겁니다.
스크레이퍼나 크롤러를 돌리는 사용자는 스크레이퍼나 크롤러를 돌리는 겁니다.
신원을 알면 차단할 수 있습니다. 이미 불법인 DDoS로 기소할 수도 있고요.
인터넷은 전 세계에 걸쳐 있어서 다른 곳에서 작업하면 그만인데, 관할권 안에 있는 봇만 차단해서 무슨 소용입니까?
별로 어렵지 않게 막을 수 있으니까요. 미국 안에서만 운영하는 사이트가 많고, 나머지를 전부 하드 차단하는 건 간단합니다. 완벽하지는 않지만, 이 법이 실제로 작동한다고 가정하면(보장된 건 아니지만) 미국 경계 안에서는 신뢰도가 높은 시스템의 이점을 얻게 됩니다.
최소한 미국 대역에서는 캡차를 덜 보게 되어야 합니다. 사용자 경험을 해치는 대신 악의적인 주체를 법체계로 처단할 수 있으니까요.