어두운 proxyscrape 로고

웹 스크래핑 시 캡차를 우회하는 방법은 무엇인가요? - 간단한 5단계

방법, 스크래핑, 1월-03-20235분 읽기

대규모 웹사이트에서 데이터를 스크래핑할 때, 자신이 사람임을 증명하기 위해 보안 문자를 입력할 필요는 거의 없습니다. 웹 스크래퍼를 사용해 본 사람이라면 사이버 보안 전문가들이 왜 캡차 기술을 개발할 수밖에 없었는지 이미 알고 있을 것입니다. 봇이 웹사이트에 액세스하기 위해 끝없이 요청을 자동화했기 때문입니다. 따라서 진짜 사용자조차도 다양한 형태로 나타나는 캡챠를 마주하는 수고를 겪어야 했습니다. 하지만 웹 스크래퍼를 사용하든 사용하지 않든 캡차를 우회할 수 있으며, 이것이 이 글의 목적입니다. 하지만 먼저 캡차란 무엇인지 알아보겠습니다.

웹 스크래핑을 위한 캡차 우회하기

캡차는 일반적으로 사이트에서 부자연스러운 트래픽을 감지하기 위해 트리거됩니다. 따라서 대량의 데이터를 추출하는 동안 스크레이퍼를 방해할 수 있으며, 이러한 제한을 우회하기 위해 사용자는 이러한 모든 캡차 코드를 해독하고 실제 사람처럼 웹사이트에 액세스할 수 있는 솔루션을 선호합니다. 캡차를 우회하는 솔루션 중 하나는 캡솔버입니다. 웹 요청에 프록시를 활용하면 사용자가 자연스러운 트래픽으로 표시되는 데 도움이 됩니다. 

보안 문자란 무엇인가요?

CAPTCHA는 컴퓨터와 사람을 구분하기 위한 완전 자동화된 공개 튜링 테스트의 약자입니다. 꽤 긴 약어죠? 이제 이 약어의 마지막 부분인 튜링 테스트가 무엇을 의미하는지 궁금하실 텐데요, 사람 또는 봇이 웹 페이지 또는 웹 서버와 상호 작용하는지 여부를 판단하는 간단한 테스트입니다.

결국 캡차는 인간과 봇을 구분하여 사이버 보안 분석가가 무차별 대입 공격, DDoS, 경우에 따라 웹 스크래핑으로부터 웹 서버를 보호하는 데 도움이 됩니다. 

캡챠가 인간과 봇을 어떻게 구분하는지 알아보세요.

캡차는 어떻게 작동하나요?

문의, 등록, 댓글, 가입 또는 결제 양식 등 웹사이트의 여러 양식에서 캡차를 찾을 수 있습니다.

기존 캡차에는 배경색 또는 투명한 배경의 상자 안에 글자, 숫자 또는 둘 다 늘어나거나 흐릿하게 표시된 이미지가 포함됩니다. 그런 다음 문자를 식별하고 그 뒤에 나오는 텍스트 필드에 입력해야 합니다. 이 문자를 식별하는 과정은 사람에게는 쉽지만 봇에게는 다소 복잡합니다.

캡차 텍스트를 흐리게 하거나 왜곡하는 것은 봇이 문자를 식별하기 어렵게 하기 위한 것입니다. 반면 인간은 다양한 글꼴, 필체 등 다양한 형식의 문자를 해석하고 가로챌 수 있습니다. 그렇긴 하지만 모든 사람이 첫 번째 시도에서 보안 문자를 풀 수 있는 것은 아닙니다. 연구에 따르면 사용자의 8%가 첫 번째 시도에서 잘못 입력하는 반면, 대소문자를 구분하는 캡차에서는 29%가 실패하는 것으로 나타났습니다.

반면에 일부 고급 봇은 수년에 걸친 머신 러닝의 도움으로 왜곡된 문자를 가로챌 수 있습니다. 그 결과 Google과 같은 일부 회사는 기존 보안 문자를 정교한 보안 문자로 대체했습니다. 다음 섹션에서 소개할 리캡챠가 그 예 중 하나입니다.

리캡챠란 무엇인가요?

리캡챠는 Google에서 제공하는 무료 서비스입니다. 사용자에게 텍스트를 입력하거나 퍼즐 또는 수학 방정식을 푸는 대신 상자에 체크 표시를 하도록 요청합니다.

일반적인 리캡챠는 기존 형태의 캡챠보다 더 발전된 형태입니다. 거리의 신호등, 오래된 신문의 텍스트, 인쇄된 책과 같은 실제 이미지와 텍스트를 사용합니다. 따라서 사용자는 흐릿하고 왜곡된 텍스트가 있는 구식 캡챠에 의존할 필요가 없습니다.

리캡챠는 어떻게 작동하나요?

인간인지 아닌지를 확인하기 위한 리캡차 테스트에는 크게 세 가지 유형이 있습니다:

체크박스

위 이미지와 같이 사용자에게 "나는 로봇이 아닙니다"라는 확인란을 선택하도록 요청하는 리캡챠입니다. 육안으로 보기에는 봇도 이 테스트를 완료할 수 있는 것처럼 보이지만 몇 가지 요소가 고려됩니다:

  • 이 테스트는 사용자가 확인란에 접근하는 동안 마우스의 움직임을 조사합니다.
  • 사용자의 마우스 움직임은 직선적이지 않으며, 대부분의 직접적인 마우스 움직임을 포함합니다. 봇이 동일한 동작을 모방하기는 어렵습니다.
  • 마지막으로 리캡차는 브라우저가 저장하는 쿠키를 검사합니다.

리캡챠가 본인임을 확인하지 못하면 또 다른 도전 과제를 제시합니다.

이미지 인식

이러한 리캡차는 위 이미지에서 볼 수 있듯이 사용자에게 9개 또는 16개의 정사각형 이미지를 제공합니다. 각 사각형은 큰 이미지의 일부 또는 다른 이미지를 나타냅니다. 사용자는 특정 사물, 동물, 나무, 차량 또는 신호등을 나타내는 사각형을 선택해야 합니다.

사용자의 선택 항목이 동일한 테스트를 수행한 다른 사용자의 선택 항목과 일치하면 해당 사용자가 인증된 것입니다. 그렇지 않으면 ReCAPTCHA는 더 까다로운 테스트를 제시합니다.

상호 작용 없음

확인란이나 사용자 상호작용을 사용하지 않고도 리캡챠가 사람인지 아닌지를 확인할 수 있다는 사실을 알고 계셨나요?

사용자의 웹사이트 상호 작용 기록과 온라인 상태에서 사용자의 일반적인 행동을 고려하여 봇인지 여부를 판단합니다. 대부분의 시나리오에서 시스템은 이러한 요소에 따라 사용자가 봇인지 여부를 판단할 수 있습니다.

그렇게 하지 않으면 앞서 언급한 두 가지 방법 중 하나로 되돌아갑니다.

캡챠 및 리캡챠는 어떻게 트리거되나요?

웹 사이트에서 봇 동작과 유사한 비정상적인 활동이 감지되면 캡차가 트리거될 수 있으며, 이러한 비정상적인 행동에는 몇 초 내에 무제한 요청, 사람보다 훨씬 빠른 속도로 링크 클릭 등이 포함됩니다. 

그러면 일부 웹사이트는 시스템을 보호하기 위해 자동으로 캡차를 적용합니다.

리캡챠에 관한 한, 무엇이 리캡챠를 유발하는지는 정확히 밝혀지지 않았습니다. 하지만 일반적인 원인으로는 마우스 움직임, 검색 기록, 쿠키 추적이 있습니다.

웹 스크래핑 시 캡차 우회에 대해 알아야 할 사항

이제 캡차 및 리캡차의 정의, 작동 방식, 트리거 요인에 대해 명확하게 살펴보았습니다. 이제 캡차가 웹 스크래핑에 어떤 영향을 미치는지 살펴볼 차례입니다.

자동화된 봇이 대부분의 스크래핑 작업을 수행하기 때문에 캡차는 웹 스크래핑을 방해할 수 있습니다. 하지만 낙담하지 마세요. 이 글의 서두에서 언급했듯이 웹 스크래핑 시 캡차를 극복할 수 있는 방법이 있습니다. 그 방법을 알아보기 전에 스크래핑하기 전에 주의해야 할 사항에 대해 자세히 알아보겠습니다.

대상 웹사이트에 너무 많은 요청 보내기

우선, 웹 스크래퍼/크롤러가 단기간에 너무 많은 요청을 보내지 않도록 해야 합니다. 대부분의 웹사이트는 이용약관 페이지에 웹사이트가 허용하는 요청 횟수를 명시하고 있습니다. 스크래핑을 시작하기 전에 반드시 읽어보세요.

HTTP 헤더

웹사이트에 연결하면 연결 웹사이트에 디바이스에 대한 정보가 전송됩니다. 웹사이트는 이 정보를 사용하여 내 디바이스의 사양과 지표 추적에 맞게 콘텐츠를 맞춤 설정할 수 있습니다. 따라서 동일한 기기에서 보낸 요청임을 알게 되면 이후에 보내는 모든 요청이 차단됩니다.

따라서 웹 스크래퍼/크롤러를 직접 개발한 경우 스크래퍼가 수행하는 각 요청에 대한 헤더 정보를 변경할 수 있습니다. 그러면 대상 웹사이트가 여러 기기에서 여러 요청을 수신하는 것처럼 보일 것입니다. HTTP 헤더에 대한 자세한 내용은 여기를 참조하세요.

IP 주소

주의해야 할 또 다른 사실은 대상 웹사이트가 내 IP 주소를 블랙리스트에 올리지 않았다는 것입니다. 스크레이퍼/크롤러로 너무 많은 요청을 보내면 IP 주소를 블랙리스트에 올릴 가능성이 높습니다. 

위의 문제를 해결하려면 프록시 서버를 사용하여 IP 주소를 마스킹할 수 있습니다. 

풀을 사용하여 HTTP 헤더와 프록시(자세한 내용은 다음 섹션에서 자세히 설명)를 순환하면 여러 디바이스에서 서로 다른 위치에서 웹사이트에 액세스할 수 있습니다. 따라서 캡챠로 인한 중단 없이 스크래핑을 계속할 수 있어야 합니다. 단, 어떤 방법으로도 웹사이트의 성능을 저하시키지 않아야 합니다.

그러나 프록시는 등록, 비밀번호 변경, 결제 양식 등에서 캡차를 우회하는 데 도움이 되지 않는다는 점에 유의해야 합니다. 봇 동작으로 인해 웹사이트가 트리거하는 캡처를 우회하는 데에만 도움이 될 수 있습니다. 이러한 양식에서 캡차를 피하려면 다음 섹션에서 캡차 솔버를 살펴보시기 바랍니다.

다른 유형의 캡차

위의 주요 요소 외에도 봇으로 웹 스크래핑을 할 때 아래의 캡챠를 알아야 합니다:

허니팟 - 허니팟은 HTML 양식 필드 또는 링크에 포함된 일종의 캡차이지만, CSS로 가시성이 숨겨져 있으므로 봇이 상호작용할 때 스스로를 봇으로 인식할 수밖에 없습니다. 따라서 봇이 콘텐츠를 스크랩하도록 하기 전에 요소의 CSS 속성이 표시되는지 확인하세요.
단어/매치 캡차 - 예를 들어 '3+7'을 푸는 것과 같은 수학 방정식의 캡차입니다. 단어 퍼즐도 풀어야 할 수 있습니다.
소셜 미디어 로그인 - 예를 들어 일부 웹사이트에서는 Facebook 계정으로 로그인해야 합니다. 그러나 대부분의 관리자는 사람들이 소셜 미디어 계정으로 로그인하는 것을 꺼린다는 사실을 알고 있기 때문에 이러한 방식은 널리 사용되지 않습니다.
시간 추적 -이 캡차는 양식 작성과 같은 특정 작업을 얼마나 빨리 수행하는지 모니터링하여 사람인지 봇인지 확인합니다.

웹 스크래핑을 위한 캡차 우회 방법

프록시 교체 및 고품질 IP 주소 사용

이전 섹션에서 언급했듯이 대상 웹사이트로 요청을 보낼 때마다 프록시를 교체해야 합니다. 이는 스크래핑하는 동안 트리거되는 캡차를 피할 수 있는 한 가지 방법입니다. 이러한 상황에서는 깨끗한 주거용 IP 프록시를 사용해야 합니다.
프록시를 교체하면 대상 웹사이트가 사용자의 IP 공간을 파악하기 어렵습니다. 각 요청에 대해 내 IP 주소가 아닌 프록시의 IP 주소가 표시되기 때문입니다.

사용자 상담원 회전

웹 스크래핑에 스크레이퍼를 사용하게 되므로 사용자 에이전트를 인기 있는 웹 브라우저나 웹사이트가 인식하는 검색 엔진 봇과 같은 지원되는 봇 봇으로 위장해야 합니다.

사용자 에이전트 문자열 목록을 확보한 다음 로테이션해야 하므로 단순히 사용자 에이전트를 변경하는 것만으로는 충분하지 않습니다. 이러한 로테이션은 실제로는 하나의 디바이스가 모든 요청을 전송하고 있지만 타겟 웹사이트에서는 사용자를 다른 디바이스로 인식하게 됩니다.

이 단계의 모범 사례로 실제 사용자 에이전트의 데이터베이스를 보관하는 것이 좋습니다. 또한 쿠키가 더 이상 필요하지 않은 경우 쿠키를 삭제하세요.

캡차 해결 서비스

기술 수준이 낮은 보다 간단한 방법은 캡차 해결 서비스를 이용하는 것입니다. 이러한 서비스는 인공 지능(AI), 머신 러닝(MI) 및 기타 기술의 정수를 사용하여 CAPTCHA를 해결합니다.

현재 업계에 존재하는 대표적인 캡차 솔버로는 캡솔버와 안티캡차가 있습니다.

스크래퍼가 매 순간 URL에 직접 액세스하도록 허용하면 수신 웹사이트는 이를 의심하게 됩니다. 결과적으로 대상 웹사이트는 보안 문자를 트리거하게 됩니다.

이러한 시나리오를 방지하려면 참조 헤더를 설정하여 다른 페이지에서 참조된 것처럼 보이도록 할 수 있습니다. 이렇게 하면 봇으로 탐지될 가능성이 줄어듭니다. 또는 봇이 원하는 링크를 방문하기 전에 다른 페이지를 방문하도록 할 수도 있습니다.

허니팟 피하기

허니팟은 보안 전문가가 봇이나 침입자를 가두는 데 사용하는 웹페이지의 숨겨진 요소입니다. 브라우저는 HTML을 렌더링하지만 CSS 속성은 숨기도록 설정되어 있습니다. 하지만 사람과 달리 봇은 데이터를 스크랩할 때 허니팟 코드를 볼 수 있습니다. 결과적으로 허니팟이 설정한 함정에 빠진 것입니다.

따라서 스크래핑을 시작하기 전에 웹 페이지에 있는 모든 요소의 CSS 속성이 숨겨져 있거나 보이지 않는지 확인해야 합니다. 숨겨진 요소가 없다고 확신하는 경우에만 스크래핑을 위해 봇을 설정합니다.

자주 묻는 질문

1. What does bypassing CAPTCHAs for Web Scraping mean?
캡차 우회는 수많은 사이트에서 데이터를 스크랩하는 과정에서 발생하는 차단을 제거하는 과정입니다. 캡차는 웹 트래픽이 유기적인지 확인하기 위해 설계되었기 때문입니다.
2. What is ReCaptcha?
리캡차는 스팸 및 악성 봇 트래픽으로부터 웹사이트를 보호합니다. 대화형 퍼즐을 생성하여 자연 트래픽과 봇 트래픽을 구분합니다.
3. How will a proxy help users in bypassing Captchas?
봇이나 스크래핑 솔루션에서 웹 요청을 연달아 보내면 캡챠가 스팸 봇의 트래픽임을 쉽게 식별할 수 있습니다. 따라서 프록시에서 프록시 주소를 사용하면 실시간 트래픽처럼 보이게 할 수 있습니다.

결론

이 글을 통해 웹 스크래핑 시 캡차를 피하는 방법에 대한 포괄적인 아이디어를 얻으셨을 것입니다. 캡차를 피하는 것은 복잡한 과정일 수 있습니다. 하지만 이 글에서 설명한 특정 기술을 사용하면 캡차를 피하는 방식으로 봇을 개발할 수 있습니다.

이 글에서 설명한 모든 기술을 활용하길 바란다.