Profile picture

[Python] 2Captcha로 캡챠 뚫기

JaehyoJJAng2023년 06월 05일

개요

업무 자동화를 위해 selenium 라이브러리를 사용하여 특정 사이트를 크롤링 하던 중 , 보안 문자를 입력하라는 액션이 나왔다.
이런 경우 캡챠를 기술로 뚫고자 한다면 OCR을 진행하거나 머신 러닝을 이용해서 캡챠 뚫는 것을 자동화할 수 있다

하지만 내가 자동화하고 있는 사이트의 경우 최초 캡챠만 인증하면 그 이후에는 더 이상 캡챠가 나오지 않으므로(비정상적인 속도로 빠르게 크롤링 시 캡챠가 다시 나옴) 머신 러닝을 사용하는 것은 너무 일을 크게 만드는게 아닌가 생각이 들었다.

그래서 찾은 것이 2Captcha이다. 다른 개발자가 만들어 놓은 캡챠 우회 서비스를 나는 소정의 돈만(캡챠 서비스에 따라 비용이 다름) 지불하고 사용하는게 훨씬 싸게 먹힌다고 생각이 들었다.


아래 사진은 캡챠 우회 서비스별 가격이고 나는 reCAPTCHA V2를 사용할 것이댜.
image

1. 2Captcha 가입

https://2captcha.com/ 사이트 접속 후 회원가입 진행


2. 크래딧 충전

2Captcha API를 사용하기 위해서 아래 사진처럼 + 버튼을 눌러 금액을 충전해주어야 한다. 나는 이전에 한 번 충전을 했었기 때문에 바로 진행하도록 하겠다.
image


3. API KEY 복사

image


4. 2Captcha 테스트

https://2captcha.com/demo/normal 페이지에 캡챠 테스트를 해볼 수 있는 캡챠 화면이 나온다.


1. 사진을 내려받는다 (test.jpg)
image


2. 2captcha-python 라이브러리 설치

$ pip install 2captcha-python

3. 파이썬 스크립트 작성.

from twocaptcha import TwoCaptcha
from dotenv import load_dotenv
import sys
import os

def get_secret_api_key(secret_file: str | None)  -> str | None:
    if os.path.isfile(secret_file):
        load_dotenv(dotenv_path=secret_file)
        return os.getenv('API_KEY')
    else:
        print('Check the secret file')
        return None

api_key : str = get_secret_api_key(secret_file='env/secret.env')

solver = TwoCaptcha(api_key)

try:
    result = solver.normal('captcha_images/sample.jpg')
except Exception as e:
    sys.exit(e)
else:
    sys.exit(f'solved: {result})

4. 파이썬 스크립트를 실행해보자

$ python3 main.py
solved: {'captchaId': '74176743497', 'code': 'W9H5K'}

위 처럼 구글 캡챠 등 여러 캡챠들을 풀 수 있다


Loading script...