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之dict()的操作方法
Sep 24 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
使用Python对Csv文件操作实例代码
May 12 Python
tornado 多进程模式解析
Jan 15 Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
对python模块中多个类的用法详解
Jan 10 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
Python装饰器用法与知识点小结
Mar 09 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 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执行速度全攻略(上)
2006/10/09 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP实现简单日历类编写
2020/08/28 PHP
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
Vue左滑组件slider使用详解
2020/08/21 Javascript
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
代码详解django中数据库设置
2019/01/28 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
简单了解django orm中介模型
2019/07/30 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
高中军训感言600字
2014/03/11 职场文书
Python利用zhdate模块实现农历日期处理
2022/03/31 Python
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android