python为tornado添加recaptcha验证码功能

 更新时间:2014年02月26日 14:08:18   作者:  
tornado作为微框架,并没有自带验证码组件,recaptcha是著名的验证码解决方案,简单易用,被很多公司运用来防止恶意注册和评论。tornado添加recaptchaHA非常容易

复制代码 代码如下:

    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.net<!DOCTYPE html>
jb51.net<html>
jb51.net<head>
jb51.netjb51.net<title>reCaptcha验证码</title>
jb51.net</head>
jb51.net<body>
jb51.netjb51.net<form action="" method="post">
jb51.netjb51.net<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k={{ publickey }}"></script>
jb51.netjb51.net<noscript>
jb51.netjb51.netjb51.net<iframe src="http://www.google.com/recaptcha/api/noscript?k={{ publickey }}" height="300" width="500" frameborder="0"></iframe><br>
jb51.netjb51.netjb51.net<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
jb51.netjb51.netjb51.net<input type="hidden" name="recaptcha_response_field" value="manual_challenge">
jb51.netjb51.net</noscript>
jb51.netjb51.net</form>
jb51.net</body>
jb51.net</html>

相关文章

  • PyQt通过动画实现平滑滚动的QScrollArea

    PyQt通过动画实现平滑滚动的QScrollArea

    这篇文章主要为大家详细介绍了PyQt如何使用Qt的动画框架 QPropertyAnimation来实现平滑滚动的QScrollArea,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以学习一下
    2023-01-01
  • Python OpenCV实现识别信用卡号教程详解

    Python OpenCV实现识别信用卡号教程详解

    本文将介绍如何通过 OpenCV 和 Python 使用模板匹配来执行光学字符识别 (OCR),再应用我们的模板匹配 OCR 方法来识别信用卡类型以及 16 位信用卡数字。代码具有一定价值,感兴趣的童鞋可以了解一下
    2021-11-11
  • freeswitch开源通信 python模块介绍

    freeswitch开源通信 python模块介绍

    freeswitch支持多种语言的业务开发,包括C/C++,java,python,js,lua,Golang等等。freeswitch在使用python做业务开发时,有俩种接入方式,一种是ESL接口,另一种是mod_python模块。本文主要介绍的是fs内部的mod_python语言支持模块,需要的朋友可以参考下面文章内容
    2021-09-09
  • python和pyqt实现360的CLable控件

    python和pyqt实现360的CLable控件

    这篇文章主要介绍了python和pyqt实现360的CLable控件示例,需要的朋友可以参考下
    2014-02-02
  • Python去除html标签的几种方法总结

    Python去除html标签的几种方法总结

    这篇文章主要介绍了Python去除html标签的几种方法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • python实现彩色图转换成灰度图

    python实现彩色图转换成灰度图

    这篇文章主要为大家详细介绍了python实现彩色图转换成灰度图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • python使用布隆过滤器的实现示例

    python使用布隆过滤器的实现示例

    这篇文章主要介绍了python使用布隆过滤器的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 关于Numpy中argsort()函数的用法解读

    关于Numpy中argsort()函数的用法解读

    这篇文章主要介绍了关于Numpy中argsort()函数的用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • python 实现 redis 数据库的操作

    python 实现 redis 数据库的操作

    这篇文章主要介绍了python 包 redis 数据库的操作教程,redis 是一个 Key-Value 数据库,下文基于python的相关资料展开对redis 数据库操作的详细介绍,需要的小伙伴可以参考一下
    2022-04-04
  • nginx搭建基于python的web环境的实现步骤

    nginx搭建基于python的web环境的实现步骤

    这篇文章主要介绍了nginx搭建基于python的web环境的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01

最新评论