- 2010/12/06 02:54
- 114 次阅读
-
Python
CAPTCHA 是Completely Automated Public Turing test to tell Computers and Humans Apart的缩写,够长吧!中文意思是:"全自动区分电脑与人类的图灵测试" 简单来说就是用于区分人类和电脑的验证码图片.
感谢伟大的Google提供了其实现和相应的API. 相关文档大家可自行参考:
http://www.google.com/recaptcha
最近公司的一个项目要使用验证码防止恶意脚本批量注册或遍历破解密码. 传统的解决方式很多,比如IP记录,验证码…但最常见的还是验证码功能,但现在验证码也是有很多弱点的,很容易被破解. 敢兴趣的朋友可以参看相关文章(http://www.xklog.org/article/internet/python-verify-code-recognize-discuz.html) 其实最主要想使用Google Captacha的原因是想省力气,懒得写太复杂的算法. 囧~呵呵
Google Captacha有相应的python实现,但是我感觉默认库可定制性太差,所以只部分采用.
开始之前我先来说下Google Captacha的原理.
传统的验证码是网站先随即生成一个字符,然后保存字符串到session或数据库中.然后把这个字符串生成图片,输出到页面上去.
Google Captacha构架如下图:
步骤看上去比较多,其实对网站开发者来说重点是3步.即图上的1、3、4. 下面稍微解释下
第一步是用户从Google服务器上得到一个验证码图片
没错,是用户获取。对开发人员来说就是在页面加一个ajax调用,当用户加载页面的同时,加载一个Google Capatcha图片即可.
第二步是当用户把含验证码信息表单提到后台,也是web应用最常见的步骤.
第三步是网站后台把用户得到的验证码传递给Google Capatcha服务器验证用户输入的是否正确.
这里就是重点所在,Google服务器如何知道当前验证码输入是否和第一步用户请求到的图片一致,就需要一样东西,即一个随机码. 此外要确定是哪一个网站用户申请的图片和哪一个网站验证图片,需要另外一样
......
Python
Django
Google
Google Captcha
More
- 2010/12/01 11:49
- 58 次阅读
-
Django
有点造轮子的嫌疑,感觉Django自带的分页工具不是很好用,部分重写了下
Python代码
class Pagination():
'''
Pagination tools
'''
count = 0
page_size = 10
current_page = 1
page_gap = 5
page_count = 0
def __init__(self,object_list,page_size,current_page = 1,page_gap=5):
u'''Simple Pagination tools
object_list: The queue or list objects
page_size: Page size
current_page: Current Page
page_gap: The gap of current page, inlcude left gap and right gap. the same value is this.
'''
self.object_list = object_list
self.count = self._get_count()
self.page_size = page_size
self.current_page = current_page
self.page_gap = page_gap
if not self.count % page_size:
self.page_count = self.count / page_size
else:
self.page_count = self.count / page_size + 1
def _get_count(self):
"Returns the total number of objects, across all pages."
tr
......
Django
Python
More
Recent Comments