python为tornado添加recaptcha验证码功能

代码如下:

from urllib.request import urlopen from urllib.parse import urlencode import tornado.httpserver import tornado.ioloop import tornado.web #获取key: https://www.google.com/recaptcha/whyrecaptcha publickey = ‘填入你的 public key’ privatekey = ‘填入你的 private key’ class application(tornado.web.application): def __init__(self): handlers = [ (r’/’, indexhandler) ] settings = dict( template_path=”templates”, ) tornado.web.application.__init__(self, handlers, **settings) class indexhandler(tornado.web.requesthandler): def get(self): self.render(‘index.html’, publickey=publickey) def post(self): url = ‘http://www.google.com/recaptcha/api/verify’ #验证码 challenge = self.get_argument(‘recaptcha_challenge_field’) #用户输入 response = self.get_argument(‘recaptcha_response_field’) data = { ‘privatekey’: privatekey, ‘remoteip’: self.request.remote_ip, ‘challenge’: challenge, ‘response’: response } res = urlopen(url, data=urlencode(data).encode()) #获取验证结果,这里直接将返回结果输出到页面 self.write(res.read().decode()) if __name__ == ‘__main__’: server = tornado.httpserver.httpserver(application()) server.listen(10001) tornado.ioloop.ioloop.instance().start()

templates/index.html

代码如下:

jb51.netjb51.netjb51.netjb51.netjb51.netrecaptcha验证码jb51.netjb51.netjb51.netjb51.netjb51.netjb51.net《script》jb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.netjb51.net