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 相关文章推荐
Python实现向QQ群成员自动发邮件的方法
Nov 19 Python
python常见数制转换实例分析
May 09 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
Jan 20 Python
python脚本监控docker容器
Apr 27 Python
django表单实现下拉框的示例讲解
May 29 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
python aiohttp的使用详解
Jun 20 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
pycharm的python_stubs问题
Apr 08 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 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学习之数组的定义和填充
2011/04/17 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
vue实现一拉到底的滑动验证
2019/07/25 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
python3中int(整型)的使用教程
2017/03/23 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
英语专业毕业个人求职自荐信
2013/09/21 职场文书
信访工作者先进事迹
2014/01/17 职场文书
赔偿协议书范本
2014/04/15 职场文书
服务承诺书怎么写
2014/05/24 职场文书
大学生创业计划书
2014/08/14 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书