Back
Featured image of post 化学式/历史上的今天验证码开源(内含维基百科历史上的今天数据)

化学式/历史上的今天验证码开源(内含维基百科历史上的今天数据)

在上次的化学式验证码启用后,有许多文科生掀桌,所以这次又写了一个针对文科生版的:

 

要是再答不上来可不能怪我→_→

验证码的数据爬取自维基百科,好在维基百科每个日期的词条格式都是规范式的,这也就方便了爬取。总共收集了三万多条数据,分为伟人出生,逝世,大事件三类。数据搞定了,随之而来的难题是用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

Licenced under CC BY-NC-SA 4.0
views
这篇文章发表于 1384 天前,可能包含过期内容、中二言论、失效链接