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 专题三 字符串的基础知识
Mar 19 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
python实现简单图片物体标注工具
Mar 18 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
python交易记录链的实现过程详解
Jul 03 Python
Flask框架单例模式实现方法详解
Jul 31 Python
Scrapy框架基本命令与settings.py设置
Feb 06 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
python中翻译功能translate模块实现方法
Dec 17 Python
Python截图并保存的具体实例
Jan 14 Python
基于Python 函数和方法的区别说明
Mar 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php教程之phpize使用方法
2014/02/12 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
python中threading超线程用法实例分析
2015/05/16 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
is_file和file_exists效率比较
2021/03/14 PHP
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
应届电子商务毕业自荐书范文
2014/02/11 职场文书
安全生产专项整治方案
2014/05/06 职场文书
民生工作实施方案
2014/05/31 职场文书
明确岗位职责
2015/02/14 职场文书
2015初中团委工作总结
2015/07/28 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记