当前位置 博文首页 > python为tornado添加recaptcha验证码功能

    python为tornado添加recaptcha验证码功能

    作者:admin 时间:2021-06-27 18:29

    复制代码 代码如下:

        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

    复制代码 代码如下:
      
    jb51.net<!DOCTYPE html>
    jb51.net<html>
    jb51.net<head>
    jb51.netjb51.net<title>reCaptcha验证码</title>
    jb51.net</head>
    jb51.net<body>
    jb51.netjb51.net<form action="" method="post">
    jb51.netjb51.net<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k={{ publickey }}"></script>
    jb51.netjb51.net<noscript>
    jb51.netjb51.netjb51.net<iframe src="http://www.google.com/recaptcha/api/noscript?k={{ publickey }}" height="300" width="500" frameborder="0"></iframe><br>
    jb51.netjb51.netjb51.net<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
    jb51.netjb51.netjb51.net<input type="hidden" name="recaptcha_response_field" value="manual_challenge">
    jb51.netjb51.net</noscript>
    jb51.netjb51.net</form>
    jb51.net</body>
    jb51.net</html>

    js
    下一篇:没有了