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实现的微信好友数据分析
Feb 26 Python
pip安装时ReadTimeoutError的解决方法
Jun 12 Python
Python读写zip压缩文件的方法
Aug 29 Python
python3 读取Excel表格中的数据
Oct 16 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
python之pexpect实现自动交互的例子
Jul 25 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
Django项目中使用JWT的实现代码
Nov 04 Python
Python3变量与基本数据类型用法实例分析
Feb 14 Python
对PyTorch中inplace字段的全面理解
May 22 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
小议javascript 设计模式 推荐
2009/10/28 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
Python做文本按行去重的实现方法
2016/10/19 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python自动化生成IOS的图标
2018/11/13 Python
对python周期性定时器的示例详解
2019/02/19 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
获奖的大学生创业计划书
2014/01/05 职场文书
校本教研活动总结
2014/07/01 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js