본문 바로가기
개발 및 운영

Captcha Solver 개발기

by Joseph.Lee 2024. 8. 7.

 특정 데이터를 스크래핑 하려는데 로그인 후 캡챠가 있어 이를 우회 및 자동화 하기 위해 captcha solver 을 만들어야 했다.

머신러닝을 이용해서 captcha solver 을 만들었다.

 

captcha solver 을 만드는 과정은 다음과 같다.

 

1. 사용하는 라이브러리 파악.
- 어떤 라이브러리를 사용했는지 파악한다. 모양 혹은 소스를 통해 유추 가능하다.

 

2. 파라미터 탐색 및 generator 제작

- 폰트, 폰트사이즈, 노이즈 방식 등 파라미터를 찾는다.

- 여러 방식으로 유추하여 파라미터를 찾고, 원본과 동일한 값을 재-생성해 유사한지 확인한다.

- 해당 사이트는 simplecaptcha 을 사용했지만, noise, font rotate, overlap 등 추가 기능을 자체적으로 개발한 듯 했다. 이러한 것 또한 rotate 정도 등의 파라미터를 찾아 동일하게 구현해 줘야 한다.

포토샵으로 원본(빨간색), 재생성(검정색) 의 차이를 보는 것. 동일한 파라미터면 이렇게 정확히 일치한다.

 

3. generator 로 train dataset / validate dataset 생성

 

4. test dataset 수집

- 실제 사이트에서 샘플을 수집하고 라벨링한다.

- 이를 위해 next.js + sqlite 으로 간단한 페이지를 만들었다.

 

5. 모델 학습

- 나는 괜찮은 GPU 가 없어 vast.ai 을 이용했다. 사용해보니 외국거는 레이턴시가 너무 길어서 불편하고, 한국 호스트가 네트워크도 빠르고 좋았다. 다만 비쌈..ㅠㅠ
- RTX4090 을 이용했는데 생각보다 100% 활용하지 못하고 40~50% 정도만 사용했다. RTX3090 이어도 충분할 듯.

 

 

6. 결과 확인

- 2,000 개의 generated sample 에서는 0.995 의 정확도를 보였고

- 위에서 라벨링한 약 3,000 개의 실제 사이트의 test sample 에서는 무려 1.00 (100%) 정확도를 보였다! 대 성공!

 

 

사실 80~90% 정도의 정확도만 나와도 좋겠다 싶었는데 생각 외로 100% 정확도가 나와버렸다.

거의 정확하게 실제 사이트의 캡챠 파라미터를 정확하게 찾아낸 것이 높은 정확도의 원인으로 보인다.

모델을 어떻게 만느냐 보다 이것이 더 노하우가 필요한 부분 같다.

 

 

 

(* 캡챠를 이용한 대량 글쓰기, 대량 수집 등은 개발하지 않습니다. 이런건 의뢰하지 말아주세요.)

 

이미지 캡챠 스크래핑, 캡챠 우회 가능. 다만 reCaptcha 처럼 단순 이미지가 아닌 질의에 대한 응답이 필요한 것은 어렵습니다.

 

문의 : joseph@jc-lab.net

 

캡차 우회, 캡차 우회 소스, 캡차 자동화

반응형

댓글