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 Web框架Tornado运行和部署
Oct 19 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
Python生成数字图片代码分享
Oct 31 Python
Flask之flask-script模块使用
Jul 26 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
Mar 06 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Python之多进程与多线程的使用
Feb 23 Python
Python实现文字pdf转换图片pdf效果
Apr 03 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
用来解析.htgroup文件的PHP类
2012/09/05 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
js数据类型检测总结
2018/08/05 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
python 中split 和 strip的实例详解
2017/07/12 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
python实现飞船大战
2020/04/24 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
文秘专业个人求职信
2013/12/22 职场文书
简历中个人自我评价范文
2013/12/26 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
2014年民警工作总结
2014/11/25 职场文书
python基础之爬虫入门
2021/05/10 Python
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫