<a href="#%E7%9B%AE%E5%BD%95">目录</a>
<a href="#%E5%89%8D%E6%96%87%E5%88%97%E8%A1%A8">前文列表</a>
<a href="#recaptcha">reCAPTCHA</a>
<a href="#%E5%BA%94%E7%94%A8-recaptcha">应用 reCAPTCHA</a>
<a href="http://blog.csdn.net/jmilk/article/details/53150084">用 Flask 来写个轻博客 (1) — 创建项目</a>
<a href="http://blog.csdn.net/jmilk/article/details/53152158">用 Flask 来写个轻博客 (2) — Hello World!</a>
<a href="http://blog.csdn.net/jmilk/article/details/53153382">用 Flask 来写个轻博客 (3) — (M)VC_连接 MySQL 和 SQLAlchemy</a>
<a href="http://blog.csdn.net/jmilk/article/details/53184903">用 Flask 来写个轻博客 (4) — (M)VC_创建数据模型和表</a>
<a href="http://blog.csdn.net/jmilk/article/details/53187575">用 Flask 来写个轻博客 (5) — (M)VC_SQLAlchemy 的 CRUD 详解</a>
<a href="http://blog.csdn.net/jmilk/article/details/53229180">用 Flask 来写个轻博客 (6) — (M)VC_models 的关系(one to many)</a>
<a href="http://blog.csdn.net/jmilk/article/details/53239740">用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)</a>
<a href="http://blog.csdn.net/jmilk/article/details/53241361">用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级</a>
<a href="http://blog.csdn.net/jmilk/article/details/53264049">用 Flask 来写个轻博客 (9) — M(V)C_Jinja 语法基础快速概览</a>
<a href="http://blog.csdn.net/jmilk/article/details/53292248">用 Flask 来写个轻博客 (10) — M(V)C_Jinja 常用过滤器与 Flask 特殊变量及方法</a>
<a href="http://blog.csdn.net/jmilk/article/details/53303870">用 Flask 来写个轻博客 (11) — M(V)C_创建视图函数</a>
<a href="http://blog.csdn.net/jmilk/article/details/53306560">用 Flask 来写个轻博客 (12) — M(V)C_编写和继承 Jinja 模板</a>
<a href="http://blog.csdn.net/jmilk/article/details/53321939">用 Flask 来写个轻博客 (13) — M(V)C_WTForms 服务端表单检验</a>
<a href="http://blog.csdn.net/jmilk/article/details/53327164">用 Flask 来写个轻博客 (14) — M(V)C_实现项目首页的模板</a>
<a href="http://blog.csdn.net/jmilk/article/details/53332204">用 Flask 来写个轻博客 (15) — M(V)C_实现博文页面评论表单</a>
<a href="http://blog.csdn.net/jmilk/article/details/53342517">用 Flask 来写个轻博客 (16) — MV(C)_Flask Blueprint 蓝图</a>
<a href="http://blog.csdn.net/jmilk/article/details/53352359">用 Flask 来写个轻博客 (17) — MV(C)_应用蓝图来重构项目</a>
<a href="http://blog.csdn.net/jmilk/article/details/53363109">用 Flask 来写个轻博客 (18) — 使用工厂模式来生成应用对象</a>
<a href="http://blog.csdn.net/jmilk/article/details/53365714">用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单</a>
CMU 设计了一个名叫 reCAPTCHA 的强大系统,让他们的电脑去向人类求助。具体做法是:将 OCR 软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片,这些网站的用户在正确识别出这些文字之后,其答案便会被传回CMU。所以 reCAPTCHA 本质上是一个披着验证码皮的分布式文字识别系统(OCR)。
reCAPTCHA 是利用 CAPTCHA(全自动区分计算机和人类的图灵测试) 的原理借助于人类大脑对难以识别的字符的辨别能力,进行对古旧书籍中难以被 OCR 识别的字符进行辨别的技术。也就是说,reCAPTCHA 不仅可以反 spam(垃圾内容),而且同时还可以帮助进行古籍的数字化工作(可以称为人工OCR)。只能说这个创意简直是绝了!所以即便由于 reCAPTCHA 是 Google 的产品在国内无法正常使用,但还是会应用到我们的这个 Blog 项目中,再通过应用反向代理的方式使之成为可行。

如上图 reCAPTCHA 会告诉你如何将它集成到客户端和服务端。所以建议备份这些信息,尤其是 Public Key 和 <code><script></code>。
client-side integration:
Paste this snippet before the closing tag on your HTML template:
Paste this snippet at the end of the where you want the reCAPTCHA widget to appear:
Server-side integration:
When your users submit the form where you integrated reCAPTCHA, you’ll get as part of the payload a string with the name “g-recaptcha-response”. In order to check whether Google has verified that user, send a POST request with these parameters:
URL:
config.py
forms.py