接上文:https://aoaoao.me/1192.html
在上次的化学式验证码启用后,有许多文科生掀桌,所以这次又写了一个针对文科生版的:
要是再答不上来可不能怪我→_→
验证码的数据爬取自维基百科,好在维基百科每个日期的词条格式都是规范式的,这也就方便了爬取。总共收集了三万多条数据,分为伟人出生,逝世,大事件三类。数据搞定了,随之而来的难题是用GD库写多行文本,本来以为肯定有相关函数,但后来发现GD库只能写单行文本,多行的话只能通过计算文字量,分开写入单行
维基百科三万历史上的今天数据
我已经打包成SQL格式了:https://file.aoaoao.me/f.php?k=57e6b
此数据为粗整理版,由于爬去的时候因为网络问题断了几次,所以有几天的数据是不全的。其中y字段为时间类型,0为大事件,1为人物出生,2为逝世。d为年份,i为日期,p为时间内容。
爬虫参考了GitHub上的开源项目,但原爬虫已失效,稍后我会在此更新代码:https://github.com/HFO4/TodayInHistory-Crawler
为树洞外链添加此验证码
要求:树洞外链版本2.4.X,material主题,PHP版本≥5.4,启用GD库扩展(低版本未测试)
1.安装Composer(已安装请略过)Linux下可执行以下命令安装
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
2.用cd命令切换到树洞外链安装目录,执行下面命令安装gd-text
composer require zgldh/gd-text-for-chinese
3.下载验证码补丁:https://file.aoaoao.me/f.php?k=a0472 并覆盖到树洞外链所在目录
4.将压缩包内的Cas.sql和Todayinhistory.sql导入至数据库
演示:https://file.aoaoao.me/views/login.php
默认情况下,化学式和历史上的今天会随机展示给用户,如果只想使用其中一种,可以修改content/themes/material/login.html底部的js代码。如果只使用化学式验证码,第一第二步可以略过。另外还要说明的是,化学式验证码图像会直接调用chemicalbook,不支持https,并且用户可以通过图像url获取到CAS编号从而查询到答案。你可以使用nginx或七牛融合cdn等工具将图像缓存下来,在此不再赘述。
为其他程序添加此验证码
原理类似,随机从数据库中取值,讲答案写入到session中,注意判断时忽略大小写,检查空值等。历史上的今天的文字格式转换、图像生成可参见includes/code2.php