recaptcha 는 악의적인 공격을 막기 위한 도구입니다. 구글에서 제공하며 사진, 글자 등으로 로봇과 사람을 구별합니다.

https://www.google.com/recaptcha/ 에서 확인 가능합니다. 


1. views.py 설정

django 에서 recaptcha를 쓰려면 django의 views.py 에서 사용하면 됩니다.

url을 이용해서 request와 response를 다뤄야 하므로 몇 가지를 import해서 불러옵니다.


import urllib
from urllib.parse import urlparse
cs


urllib은 파이썬에서 제공하는 url관련 패키지입니다. urlparse는 그 중에서도 url을 바탕으로 파싱하는 작업을 수행하는 모듈입니다.

이렇게 쓸 도구를 불러와서 서버쪽에서 recaptcha와 데이터를 주고받아서 판단하면 됩니다. 

가입은 구글에서 다른 글들을 검색하면 잘 설명되어 있습니다.


        recaptcha_response = request.POST.get('g-recaptcha-response')
        url = 'https://www.google.com/recaptcha/api/siteverify'
        values = {
            'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
            'response': recaptcha_response
        }
        recaptcha_data = urllib.parse.urlencode(values).encode()
        recaptcha_req = urllib.request.Request(url, data=recaptcha_data)
        recaptcha_response = urllib.request.urlopen(recaptcha_req)
        recaptcha_result = json.loads(recaptcha_response.read().decode())
 
        if not recaptcha_result['success']:
cs


여기서 settings.GOOGLE_RECAPTCHA_SECRET_KEY 자리에 각자 부여받은 키를 쓰면 됩니다.

개발용 서버에서 이용하고 싶을 땐 127.0.0.1을 쓰면 자연스럽게 이용가능합니다.


2. html 템플릿 설정


html 태그에선 header등에 <script></script>를 써 주고 구글이 알려준 코드를 쓰면 됩니다.


<script src='https://www.google.com/recaptcha/api.js'></script>
cs

이것을 써주면 됩니다.


<div class="g-recaptcha" data-sitekey="some value that google gave to you"></div>
 
cs


html 템플릿에는 위의 div를 써주면 recaptcha를 유저가 클라이언트에서 볼 수 있고 클릭할 수 있게 됩니다.

+ Recent posts