logo
languageKRdown
menu

웹 스크래핑 과정에서 캡차 해결하기

7 분 열독

캡차(CAPTCHA)는 웹 사이트 소유자가 구현하는 가장 인기 있는 스크래핑 방지 기술 중 하나입니다. reCaptcha v3 는 웹사이트의 봇 트래픽을 탐지하기 위한 구글의 캡차(CAPTCHA) 통합 솔루션입니다. 누캡차(NuCaptcha) 그리고 h캡차(hCaptcha) 등 다른 고급 캡차 솔루션도 있습니다. 그러나 캡차는 사용자뿐만 아니라 웹 스크래퍼에게도 아주 짜증 나는 일입니다. 캡차(CAPTCHA)를 뚫는 것은 웹 스크래퍼가 직면한 가장 중요한 과제 중 하나입니다. 본 블로그는 웹 사이트의 콘텐츠를 스크래핑하는 동안 캡차를 해결할 수 있는 다양한 방법에 대해 적어보았습니다.

캡차

컴퓨터와 인간을 구분하기 위한 완전 자동화 공개 튜링 테스트(CAPTCHA)는 자동화된 알고리즘 생성 텍스트, 시각 또는 오디오 기반 테스트입니다. 캡차를 해결하려면 인간이 컴퓨터보다 훨씬 더 잘하는 세 가지 기술이 필요합니다.

  • 불변 인식(서로 다른 모양, 동일한 알파벳의 이미지 및 개체 식별),
  • 분할(중복 알파벳 식별)
  • 구문 분석(이미지, 텍스트 또는 오디오를 전체적으로 이해)

리캡차는 가장 인기 있는 캡차 생성 솔루션입니다. 구글에서 제공하는 것으로 웹 사이트에 쉽게 통합할 수 있습니다.

캡차 유형

1. 일반 캡차

왜곡된 이미지에 텍스트가 포함되어 있지만 사람이 읽을 수 있는 가장 널리 사용되는 캡차(CAPTCHA)입니다. 캡차를 해결하려면 텍스트 입력창에 보이는 텍스트를 입력해야 합니다.

normal captcha

2. 텍스트 캡차

TextCaptcha는 그다지 대중적이진 않지만 시각 장애가 있는 사용자에게 우호적인 캡차입니다. 텍스트 캡차는 이미지가 아닌 순 텍스트 형식입니다. 

예시:

$ curl http://api.textcaptcha.com/myemail@example.com.json

{ “q”:”If tomorrow is Saturday, what day is today?”

  “a”:[“f6f7fec07f372b7bd5eb196bbca0f3f4”,

                       “dfc47c8ef18b4689b982979d05cf4cc6”] }

캡차:내일이 토요일이라면 오늘은 무슨 요일입니까?

솔루션:금요일.

3. 키캡차

키캡차(Key Captcha): 퍼즐을 푸는 형식의 또 다른 캡차 통합 서비스입니다.

key captcha

4. 클릭 캡차

분류 기반 퍼즐에 해당하는 이미지 캡차는 클릭 캡차(Click CAPTCHA)입니다. reCaptcha, 아시라(ASIRRA), 스냅챗의 고스트 캡차(Ghost Captcha)는 분류 기반 클릭 캡차(Click Captcha)의 인기 있는 예입니다.

click captcha

5. 회전 캡차

이미지 방향을 기반으로 한 캡차 퍼즐입니다. CAPTCHA 회전에서 이미지가 확인 조건을 충족하도록 이미지를 회전하려면 한 번 또는 여러 번 클릭해야 합니다. 가장 일반적인 검증 조건은 “올바른 방법”으로 개체를 얻는 것입니다. 펀캡차(FunCaptcha)는 “회전식 캡차(CAPTCHA)” 통합 제공업체 중 하나입니다. RVerify.js 는 이미지 방향을 확인하기 위한 오픈 소스 자바스크립트 라이브러리입니다.

6. 지테스트 캡차

지테스트 캡차(GeeTest CAPTCHA)는 종종 슬라이더를 끌어서 퍼즐 조각을 이동하거나 특정 순서로 특정 이미지를 선택하는 흥미로운 캡차입니다.

geetest captcha

7. h캡차

h캡차(hCaptcha)는 reCaptcha와 매우 유사합니다. 유일한 차이점은 hCaptcha를 사용하는 경우 여러 회사가 사용자가 웹 사이트를 클릭할 때 웹 사이트에서 수행하는 데이터 레이블링의 이점을 활용할 수 있지만 ReCaptcha를 사용하면 구글만 클라우드 소스 데이터 라벨링의 이점을 얻을 수 있습니다.

hcaptcha

8. 카피퍼즐

카피퍼즐(Capy Puzzle)은 keyCaptcha와 유사하게 퍼즐 기반의 Captcha 서비스입니다. CAPY.ME 카피 퍼즐을 웹사이트에 통합하는 서비스입니다.

capy puzzle

 캡차의 종류 더 보기

스크래핑하면서 reCAPTCHA를 우회하는 방법

고급 “클릭 앤 스크랩” 노코드 스크린 스크래핑 도구를 사용하거나 Python, Java 또는 Javascript로 작성된 스크래퍼를 사용하더라도 거의 모든 종류의 캡차(CAPTCHA)를 해결하고 우회할 수 있습니다. 100%의 캡차 해결률을 보장하는 서비스/솔루션은 없지만 데스 바이 캡차 또는 2captcha와 같은 인기 툴로 효율 있게 해결할 수 있습니다.

캡차(CAPTCHA)를 해결하기 위한 두 가지 일반적인 접근 방식이 있습니다.

인간 기반 캡차 해결

캡차는 인간만 해결하도록 만들어졌습니다. 수천 명의 사람을 고용하여 실시간으로 매우 저렴하게 이러한 캡차를 해결해 주는 회사들도 있습니다. 효율성은 상당히 높지만 지연 시간이 긴 것이 단점입니다.

그렇다면 스크래핑 과정에서 캡차 해결 서비스를 어떻게 이용해야 할까요?

다음 몇 가지 인기 있는 캡차 솔루션 서비스 제공업체가 있습니다.

  • 데스 바이 캡차(DeathByCaptcha)
  • AZ캡차(AZCaptcha)
  • 이미지타이퍼Z(ImageTyperZ)
  • 엔드캡차(EndCaptcha)
  • 바이패스캡차(BypassCaptcha)
  • 캡차트로닉스(CaptchaTronix)
  • 안티캡차(AntiCaptcha)
  • 2캡차(2Captcha)
  • 캡차 스나이퍼(CaptchaSniper)

상기 서비스 제공업체는 보통 다음과 비슷한 방식으로 운영됩니다.

  1. 웹 사이트에 등록하거나 토큰 및 자격 증명을 받기(유료 또는 체험 기간만 무료)
  2. Python, PHP, Java, JS 등 원하는 언어를 사용하여 API/플러그인을 구현
  3. 캡차(CAPTCHA)를 API로 전송
  4. API 응답에서 해결된 CAPTCHA 수신

OCR(Optical Character Recognition) 기술을 이용한 캡차 해결

이것은 캡차(CAPTCHA)를 해결하기 위한 프로그램 각도의 접근 방식입니다. OCR은 광학 문자 인식 또는 광학 문자 판독기를 의미합니다. OCR은 타이핑체, 손 글씨 또는 인쇄된 텍스트를 인코딩된 텍스트로 변환하는 전자적 또는 기계적 접근 방식입니다. 스캔한 문서, 사진 또는 장면(예: 빌보드)을 OCR에 전송할 수 있습니다. 

입문자 용으로는TESSERACT, GOCROCRAD와 같은 오픈 소스 도구가 있습니다. OCR에는 다양한 유형의 이미지 기반 캡차(CAPTCHA)를 성공적으로 해결할 수 있는 기능이 있습니다.

직접 해결

reCAPTCHA를 사용하여 실제 사용자만 확인하는 단일 사이트를 스크랩하는 경우 수동으로 reCAPTCHA를 우회해야 할 수도 있습니다. 이러한 경우 스크래핑 워크플로우를 다음과 같이 구성할 수 있습니다.

  • reCAPTCHA를 탐지하고, 당신이 CAPTCHA를 해결하는 동안.
    • 지정된 시간 동안(예를 들어 7-8초) 스크랩을 일시 중지합니다.
    • 페이지의 요소가 표시될 때까지 기다리거나
    • 다시 스크래핑을 시작할 때까지 기다립니다.
  • 캡차를 풀고 평소처럼 스크래핑합니다.

ReCaptcha를 탐지하려면 절차를 이해하는 것이 중요합니다.

reCaptcha가 웹사이트에 통합되는 방법

reCaptcha를 통합하는 단계는 다음과 같습니다.

1. 자바스크립트 API 로드

<script src=”https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key“>

</script>

2. 콜백을 처리하기 위한 함수를 호출하여 버튼 또는 액션과 함께 통합합니다.

<button class=“g-recaptcha”

        data-sitekey=“reCAPTCHA_site_key”

        data-callback=‘onSubmit’

        data-action=‘submit’>Submit

</button>

Function:

<script>

  function onSubmit(token) {

    document.getElementById(“demo-form”).submit();

  }

</script>

이제 캡차를 탐지하려면 XPath를 사용하고 reCaptcha가 포함된 클래스 텍스트가 있는 요소를 찾아 reCaptcha를 탐지합니다.

Xpath: //*[contains(“@class”,recaptcha”)]

요소가 있으면 해결해야 할 페이지에 캡차가 있음을 의미합니다. 스크래퍼를 일시 중지하고 캡차를 해결한 후 다시 스크래핑을 재개할 수 있습니다.

Octoparse에서 리캡차를 우회하는 방법

Octoparse 소개

앞서 언급했듯이 클릭 & 스크랩 노 코드 솔루션을 사용하여 웹을 스크랩할 수 있습니다. Octoparse는 수많은 기업과 단체에서 선택한 노코드 웹 스크래핑 솔루션입니다. Octoparse는 무료와 유료 플랜 두 가지를 제공합니다. Octoparse에 대해 알고 있는 경우 Octoparse에서 캡차(CAPTCHA)를 해결할 방법은 다음과 같습니다.

로컬 디바이스 스크래핑

Octoparse를 사용하여 로컬 시스템의 웹을 스크랩하는 동안 Octoparse 스크랩 워크플로우의 고급 사용자 지정 옵션에 따라 제공되는 “실행 전 대기” 또는 “특정 요소가 나타날 때까지 대기” 기능을 사용하는 것이 좋습니다. 버전 업데이트로 인해 옵션이 표시되지 않으면 도움말 센터에서 튜토리얼을 확인하십시오!

local machine scraping

클라우드 스크래핑

대규모 프로젝트의 경우 Octoparse는 CAPTCHA/reCAPTCHA 문제를 해결하기 위한 자바스크립트 템플릿 사용자 지정 서비스를 제공합니다.

캡차(CAPTCHA)로 인해 스크래핑이 중단되는 것을 방지하기 위한 팁

1.Octoparse에서 IP 프록시 전환을 사용하여 유저 에이전트를 전환하여 쿠키를 지웁니다. 일반적으로 웹 사이트는 동일한 IP가 서버를 활발하게 공격하기 시작할 때 통합 스크래핑 방지 탐지 서비스를 유발합니다. 수천 개의 프록시를 사용하여 부단히 전환하면 캡차를 쉽게 우회할 수 있습니다.

2. Robots.txt 파일을 참고합니다. 이 파일에는 웹 사이트 환경설정에 대한 규칙이 포함되어 있습니다. 예를 들어, 이 웹 사이트에서 스크래핑을 허용하는지를 나타냅니다. 허용하지 않는 웹 사이트일 경우 스크래핑을 할 필요가 없겠죠.

3.웹 스크래퍼를 작성할 때 헤드리스 브라우저를 사용합니다.

4. 전체 브라우저를 사용하지 않는 경우 서버에 대한 요청에서 헤더 및 참조자를 사용해 보십시오.

5. 로그인 후 데이터를 스크랩하려면 쿠키를 저장합니다. Octoparse에서는 이렇게 합니다.

6. 웹 사이트에 보이지 않는 허니팟 함정을 조심하세요. 보이지 않는 요소 또는 링크를 긁는 크롤러를 작성했다면 웹 사이트는 당신이 스크래핑 봇임을 알게 됩니다. 왜냐하면 사람들은 크롬이나 파이어폭스와 같은 일반 브라우저를 사용하여 보이지 않는 요소 또는 링크를 클릭할 수 없기 때문입니다.

7. 연속적인 요청에는 랜덤 딜레이를 적용합니다. 특히 같은 IP 주소로 같은 웹 사이트를 반복적으로 방문할 때는 더욱 그렇습니다.

8. 캡차(CAPTCHA) 해결 서비스를 이용합니다.

anti-blocking settings

마무리

웹 페이지를 크롤링하여 데이터를 추출하는 것은 기업이 인사이트를 얻고 데이터 기반으로 중요한 비즈니스 결책을 내리는 데 매우 중요합니다. 웹 데이터는 머신러닝 알고리즘을 훈련하는 데에도 중요합니다. 이 글에서는 다양한 유형의 캡차를 찾아내고, 리캡차 해결 및 캡차 우회를 위한 다양한 접근 방식, Octoparse에서 캡차 해결에 관해서도 이야기했습니다. 

핫 포스트

토픽 보러가기

지금부터 Octoparse 시작하세요.

다운로드

연관 글