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实现类的静态变量用法实例
May 08 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
pyqt5简介及安装方法介绍
Jan 31 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
python里 super类的工作原理详解
Jun 19 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
Python jieba库用法及实例解析
Nov 04 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
Python 防止死锁的方法
Jul 29 Python
利用python进行数据加载
Jun 20 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次亲密接触PHP5(2)
2006/10/09 PHP
用Socket发送电子邮件
2006/10/09 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
php单例模式示例分享
2015/02/12 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Django内容增加富文本功能的实例
2017/10/17 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Python itertools.product方法代码实例
2020/03/27 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
捷克时尚网上商店:OTTO
2018/03/15 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
控制工程专业个人求职信
2013/09/25 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
2015年前台文员工作总结
2015/05/18 职场文书