[Python / Flask] hCaptcha를 사용해보자.

2021. 12. 24. 15:59개발/Python

hCaptcha 이미지.

더 많은 봇을 중지합니다.
- hCaptcha 소개 문구

안녕하세요. Seeun Dev 블로그 입니다.

오늘은 hCaptcha를 Flask에서 사용해 보도록 하겠습니다.

" hCaptcha가 뭐야? "

hCaptcha는 reCaptcha 같은 하나의 캡챠인데요,

사용자의 개인정보 보호를 우선시 한다고 하는 보안 캡챠입니다.

hCaptcha는 GDPR, CCPA, LGPD, PIPL 및 기타 글로벌 데이터 법률을 준수한다고 합니다.

그래서, 뭐가 더 좋은데?

hCaptcha의 장점은 Publisher일 경우 인간이 캡챠를 풀 때 마다 돈을 벌 수 있다 라는 장점입니다.

아니면, 자선단체에 기부할 수도 있습니다.

대단하지 않나요? 캡챠만으로도 광고 없이 돈을 벌 수 있다는 점.

그러면 이제 시작해 봅시다!


기본 코드 짜기

자 먼저, Python 코드를 먼저 짜 보도록 합시다.

from flask import Flask, render_template, request

app = Flask(__name__)

host = '0.0.0.0'
port = '8080'
debug = True

@app.route('/')
def index():
  return render_template('index.html')
        
app.run(host = host, port = port, debug=debug)

자, 이게 기본적인 코드입니다.

잘 모르시는 분들은 복사 붙여넣기 해주셔도 되고, 이미 Python 파일이 있으신 분들 께서는, 기존 코드를 써도 괜찮습니다! 저는 일단 이 코드로 갈께요.

hCaptcha 발급 받기

hCaptcha를 이용하기 위해서는, 사이트 키와 프라이빗 키가 필요합니다.

사이트 키와 프라이빗 키는 https://www.hcaptcha.com/ 에서 발급 받으실 수 있습니다.

테스트용 키를 공유 해드리겠습니다.

Site Key 10000000-ffff-ffff-ffff-000000000001 
Secret Key 0x0000000000000000000000000000000000000000

테스트용 키는 localhost 등 어디서든 사용이 가능하지만, 인증 되는 부분이 존재하지 않고 리워드를 받을 수 없습니다.

개발 목적으로만 사용해주시길 바라며, Publisher일 경우에는 돈을 내지 않아도 되니 웬만하면 발급 받고 사용해주세요!

모듈 넣기

pip로 설치 해야겠죠? 설치해봅시다.

pip install flask-hcaptcha

설치가 되었으면, Flask 파일에 import 하고 몇가지 세팅을 더 해주시면 됩니다.

from flask_hcaptcha import hCaptcha # import

app.config['HCAPTCHA_ENABLED'] = True # 활성화 여부 (BOOL)
app.config['HCAPTCHA_SITE_KEY'] = "" # 사이트 키 (SITE KEY)
app.config['HCAPTCHA_SECRET_KEY'] = "" # 시크릿 키 (SECRET KEY)
hcaptcha = hCaptcha(app) # 셋업

자, 이것만 추가해주시면 됩니다.

import하고 app.config 사이에 app 변수를 정의해주세요.

HTML에서 삽입

index 함수에 render 했던 파일을 열어 봅시다. (제 코드에선 `index.html` 입니다)

<form action="check" method="post">
  {{ hcaptcha }}
</form>

이렇게 그냥 form 추가하고 {{ hcaptcha }} 만 넣어주시면 끝납니다.

정말 쉽죠?

hCaptcha 체크하기

@app.route('/check', methods = ['POST'])
def check():
    if hcaptcha.verify():
        return "성공"
    else:
        return "실패"

이렇게 해서 체크 할 수 있습니다.

method는 POST를 사용하고요.

참 쉽죠?


벌써 다 따라오셨네요.

제 예시를 보여드리겠습니다.

이번껀 정말 쉬웠네요. 그럼 포스팅 마치겠습니다!

감사합니다! #hCaptcha