python为tornado添加recaptcha验证码功能


Posted in Python onFebruary 26, 2014
    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

   
3water.com<!DOCTYPE html>
3water.com<html>
3water.com<head>
3water.com3water.com<title>reCaptcha验证码</title>
3water.com</head>
3water.com<body>
3water.com3water.com<form action="" method="post">
3water.com3water.com<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k={{ publickey }}"></script>
3water.com3water.com<noscript>
3water.com3water.com3water.com<iframe src="http://www.google.com/recaptcha/api/noscript?k={{ publickey }}" height="300" width="500" frameborder="0"></iframe><br>
3water.com3water.com3water.com<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
3water.com3water.com3water.com<input type="hidden" name="recaptcha_response_field" value="manual_challenge">
3water.com3water.com</noscript>
3water.com3water.com</form>
3water.com</body>
3water.com</html>
Python 相关文章推荐
Cpy和Python的效率对比
Mar 20 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python Switch Case三种实现方法代码实例
Jun 18 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 Python
python实现博客文章爬虫示例
Feb 26 #Python
python处理中文编码和判断编码示例
Feb 26 #Python
python实现网页链接提取的方法分享
Feb 25 #Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 #Python
python实现socket客户端和服务端简单示例
Feb 24 #Python
python抓取网页内容示例分享
Feb 24 #Python
使用python装饰器验证配置文件示例
Feb 24 #Python
You might like
PHP集成FCK的函数代码
2008/09/27 PHP
PHP 组件化编程技巧
2009/06/06 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
jquery中each方法示例和常用选择器
2014/07/08 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
利用jqgrid实现上移下移单元格功能
2018/11/07 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
Python算法之栈(stack)的实现
2014/08/18 Python
线程和进程的区别及Python代码实例
2015/02/04 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
pytorch打印网络结构的实例
2019/08/19 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
现场施工员岗位职责
2014/03/10 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
离婚协议书的范本
2015/01/27 职场文书
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis