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 10 Python
浅析python 中__name__ = '__main__' 的作用
Jul 05 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
python使用KNN算法识别手写数字
Apr 25 Python
使用Python自动生成HTML的方法示例
Aug 06 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
基于python实现复制文件并重命名
Sep 16 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
Nov 11 Python
python模板入门教程之flask Jinja
Apr 11 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函数
2010/02/16 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
javascript中的this详解
2014/12/08 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
Python线程同步的实现代码
2018/10/03 Python
Python文件操作基础流程解析
2020/03/19 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
2014年幼儿园植树节活动方案
2014/03/02 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
三好生演讲稿
2014/09/12 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书