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 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
深入理解Python3 内置函数大全
Nov 23 Python
python中的随机函数random的用法示例
Jan 27 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
python cv2在验证码识别中应用实例解析
Dec 25 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
Python实现汇率转换操作
May 03 Python
Python如何把十进制数转换成ip地址
May 25 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 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
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
原生js二级联动效果
2017/06/20 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
Python实现批量转换文件编码的方法
2015/07/28 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
如何利用find命令查找文件
2015/02/07 面试题
公务员年总结的自我评价
2013/10/25 职场文书
高中班级口号
2014/06/09 职场文书
爱护公共设施标语
2014/06/24 职场文书
借名购房协议书范本
2014/10/06 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
八年级数学教学反思
2016/02/17 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
python开发人人对战的五子棋小游戏
2022/05/02 Python
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS