GensoukyoBurstedRouter,中文名称 幻想乡炸裂路由器 ,是用于swzry.com的用户系统zlogin2的验证码生成器。项目页面&Demo: http://zlogin.swzry.com/captcha/GensoukyoBurstedRouter/

zry 295a9c99c7 更新注释 8 years ago
Tools acf5664a4a 将内容添加到空仓库 8 years ago
LICENSE dc64265ff7 initial commit 8 years ago
README.md acf5664a4a 将内容添加到空仓库 8 years ago
captcha.py 295a9c99c7 更新注释 8 years ago

README.md

GensoukyoBurstedRouter

简介

GensoukyoBurstedRouter,中文名称 幻想乡炸裂路由器 ,是用于swzry.com的用户系统zlogin2的验证码生成器。

项目页面&Demo

该验证码生成器利用分词技术获得名词和动词两个词库,通过从词库内随机选择两个名词和一个动词,按照名词+动词+名词的主谓宾结构组合, 形成验证码所需的字符串。这种生成方式所生成的验证码字符串,不再枯燥,很容易随机地产生良多乐趣(←_←),让用户在输入验证码这一 让人烦躁的过程之中,偶尔也能找到一点崎岖的笑点。

关于这个项目崎岖的名称,由来就是,项目在开发过程中,测试字符串生成器的时候,出现的第一个让开发者印象深刻的随机字串。 不得不说,这个生成方式确实是很有趣啊2333333333333333

使用之前

在使用之前,请先生成一个字典。 生成字典的工具在Tools/DictTool/目录内。 按如下步骤生成字典:

  1. 您需要准备一篇包含大量中文词汇的文章,比如一篇小说之类的。
  2. 将这篇文章放入Source.txt,保存为UTF-8编码。
  3. 在custom.json内设置需要从结果中排除或额外增加的动词和名词,像这样:

    (其中nouns是名词,verbs是动词,将要手动添加的词汇放到对应的add里,要从结果中删除的词汇放入对应的del里)

    {
    "nouns":{
        "add":["博丽神社","博丽灵梦","幻想乡","琪露诺"],
        "del":["博丽神","博丽灵","琪露"]
    },
    "verbs":{
        "add":[],
        "del":["琪露"]
    }
    }
    

4.执行DictGenerator.py,会生成两个文件:

captcha-dict.json是生成的字典文件,请放到合适的目录,然后在底下的使用说明中将其路径赋予给配置文件。
captcha-dict-human-read.json是上面那个字典文件的副本,它包含缩进,更利于人类阅读,但体积显然会更大。

使用说明

在部署之前,请先确保您安装了PIL(Python Imaging Library)。

该项目用于Django环境,但也可以轻易地移植用于其它的Web框架。

此处以Django中使用为例。先将captcha.py放入某个Django App,然后在Django的settings.py内加入像这样的配置:

CAPTCHA_CONF = {
    "colorList":[
                    (228,0,255),(255,0,0),(0,255,255),(255,255,0),
                    (75,189,88),(221,140,45),(45,165,221),(0,255,0),
                    (255,126,217),(126,255,196),(255,205,126),
                    (255,126,126),(181,126,255),(126,162,255),(232,255,126)
                ], #所有可用颜色列表
    "fontType":"/Path/To/Fonts/CaptchaFont.ttf", #验证码字体
    "tipFontType":"/Path/To/Fonts/TipFont.ttf", #验证码内提示性文字的字体
    "size":(300,120), #尺寸,(长,宽)
    "img_type":"PNG", 
        #图片格式(其它格式请参见PIL文档。您的PIL需已编译入相关格式的库,如果没有,请参照网上的教程,安装PIL的png支持)
    "mode":"RGB",
        #参见PIL文档
    "bg_color":(28, 44, 97), #背景颜色
    "font_size":24, #字体颜色
    "draw_lines":True, #是否绘制干扰线
    "line_range":(5,10), #干扰线数量范围
    "draw_points":True, #是否绘制干扰点
    "point_chance":5, #干扰点强度
}

with open(os.path.join(SWZRY_COMMON_DIR, 'captcha-dict.json')) as fjs:
    # captcha-dict.json为字典文件的文件名
    jsc=fjs.read()
    CAPTCHA_DICT = json.loads(jsc)

之后您就可以在Django中导入该模块并生成验证码了:

from django.http import HttpResponse
import StringIO
from zlogin.captcha import create_validate_with_conf
# 从您的APP中导入该模块

def MakeCaptchaImage_Test(request,randstr):
    ioStr = StringIO.StringIO()
    img,text = create_validate_with_conf()
    img.save(ioStr, "PNG")
    ot.seek(0)
    # 在这里放置用于存储验证码session的代码,验证码的内容在text变量内
    response = HttpResponse(ioStr.read(), mimetype='image/png')
    return response

关于字典生成器引用的jieba分词模块

该项目的字典生成器,其分词模块使用了基于MIT License的开源项目jieba分词 该模块Github地址 为了方便大家使用,所以直接把这个本来可以让大家自己pip install安一下的东西直接放进了项目里了。 由于是从Python的dist-packages目录里拷贝出来的,所以LICENSE, README.md, ChangeLog是我后来从GitHub上重新下载了放进去的。

关于字典生成器内的Source.txt

这个文件的内容是我写的连载小说《博丽结界之外 ~ Out of Hakurei Firewall》的部分内容。 提供这个文件只是方便测试演示,您如果需要使用该文件的内容,请遵照该小说的版权说明。 小说项目地址 (您看见本条目时小说可能还尚未发布,却已经先放入该项目中作为Demo使用,在小说发布之前您无权转载。) (这个文件会从半中间随机删掉部分小说内容,然后随机打乱顺序,请不要将其当小说阅读)