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通过socket查询whois的方法
Jul 18 Python
python删除特定文件的方法
Jul 30 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
详解python 3.6 安装json 模块(simplejson)
Apr 02 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
May 13 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
Python使用Excel将数据写入多个sheet
May 16 Python
python主要用于哪些方向
Jul 05 Python
Pycharm调试程序技巧小结
Aug 08 Python
方法汇总:Python 安装第三方库常用
Apr 26 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防止SQL注入详解及防范
2013/11/12 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
php更新mysql后获取改变行数的方法
2014/12/25 PHP
php封装一个异常的处理类
2017/06/08 PHP
PHP 断点续传实例详解
2017/11/11 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
python实现数通设备端口监控示例
2014/04/02 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
Collection和Collections的区别
2016/05/02 面试题
初婚未育证明
2014/01/15 职场文书
学习自我鉴定
2014/02/01 职场文书
教师个人自我评价范文
2014/04/13 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP
Python如何加载模型并查看网络
2022/07/15 Python