验证码:UX 终结者

网络验证码技术虽然是外国人发明的,但却在天朝泛滥成灾。

我们有那么多同学去做 UX ,花了那么多心思给用户提供更好的体验。到最后,被一个验证码全毁了。万恶的验证码,以及走不动的进度条,总是最烦人的。

简单的麻烦——淘宝的滑动验证码

48022-20160305151513034-1640022452

淘宝和微博目前使用这个验证码,原理和 Google 的 reCAPTCHA 2 类似。第一步让用户拖动滑块(触屏或鼠标),然后记录鼠标或手指触摸的轨迹,猜测用户是人还是机器。同时还会测试浏览器的排版引擎,JavaScript 引擎等等,确定这是一个人类使用的浏览器,而不是机器人程序。

在滑动过程中,鼠标位置/手指位置的数据是发送到服务器进行验证的(密文,如下图)。由于这一过程很短,采样率有限,而且直线滑动的人为特征性也不是很明显,即使算法再好也很容易被破解程序骗。

Spectacle.G10324

如果第一步判断不是人或者把握不准,则进入第二步,即传统的图形验证码。

e3d4062a23f78089d8463eb8a87d9414_r

有没有必要

它挡不住破解程序。滑动验证比图片验证要弱,所以图片验证码才会作为第二道防线。只要写一个程序控制鼠标,并且让鼠标轨迹看起来不那么有规律就可以了。(配合浏览器,骗过浏览器性能验证机制)

如果是通过用户的交互行为来判断其是人还是机器,大可不必显示这个滑块。用户在浏览网站或使用应用的过程中必然要进行大量交互,记录这些数据要比滑动那么一下有效得多。

滑动验证是不能证明其对错的,它的数据和算法都是不透明的,而且可以推测其原理极其复杂。即使用户觉得自己是滑动到了最右端,它仍然可以强硬地不通过验证,给用户一种很无奈的挫折感。目前看来这算法确实有问题,因为通过率出奇地低于文字验证码的通过率。如是玄学,寡人不服 XD

这就造成了两种常见结果:

  1. 破解程序没被挡住。
  2. 一些用户验证了两步。

在我使用的十次当中,有七次没有通过滑块验证码,而不得不使用图形验证码。滑动和使用图形验证码所需的反应时间其实是差不多的,这意味着我比使用单一图形验证码反而多用了 70% 的时间。

而某些破解程序,已经能够做到 80% 以上的成功率。令人唏嘘不已。

两步验证码的组合更是浪费时间。

我只能说:这不合理。

四处滥用

昨天,有个人在微博上给我发消息,我用 Android 应用回他一下,然后就冒出了验证码,必须要完成验证才能发送消息。然后连续输入错误,消息没有发送成功。

我今天在淘宝注册账号,更改设置,总共输入了十几次验证码。即使我已经输入了短信验证码,后续还是被要求输入滑动验证码。

对于已经登录的用户,验证码通常是没有必要的。如果想验证用户是不是机器人,为什么不在登录的时候提前验证好?如果想验证用户是不是本人,则应该输入密码或者短信验证码。

我在使用 Facebook 和 Twitter 的这些年里,除了短信验证码和手机令牌,从来没有遇到过滑动验证或文字验证码的时候。Paypal 和 Amazon 的验证码也出现得极少,甚至于我都忘记了他们的验证码是什么样子。

当一个交互过程需要安全检查,而人们又想偷懒的时候:加个验证码吧。

验证码是一个在设计过程中绝对应该尽可能避免的东西。不管形式怎么变,用户都会反感,因为它带来了麻烦,且不止一次。它不能保证安全,任何现有的验证码机制都有破解之法。越复杂的验证码,对于人类的挑战也越大。

Sweet Captcha

Spectacle.N10324

参考链接

  1. Inside reCAPTCHA – Google “点击验证”的原理和简单破解方法
  2. 淘宝滑动验证码研究

八月半

新学期开始,最后选了一门英语课,一门设计趋势分析。这是我最后一个学年。不是新人,也不成熟。

我现在很少出门了。门外好像没有什么可以召过去的。大概是我认识的人太少,兴趣也不多。我每天就从小小的窗外望那棵小苹果树,其实它还是海棠。早晨或傍晚,我会穿戴整齐,出门倒垃圾,收信。

天气很冷,晚上睡不好。常会梦见我喜欢的女孩子们。想起教室,车站,山路,峡谷,小岛,轮船,游乐园,水族馆。还有年幼的我,在小菜园里给番茄苗浇水。

昨天去吃 Kebab ,新店员用土耳其语和我打招呼。几个大叔坐在各个角落,互相离得很远。我们在此刻成为了同一类人,虽然找不到有意义的理由。我突然想,我得找个喜欢 Kebab 的姑娘结婚才行。

学校走廊的一扇窗。

2016-08-17 17.27.48

又是奥运会

里约奥运会还没有结束。中间穿插着很多不好的事件,比如对中国运动员的不礼貌评论和疑似不公裁判。在新浪微博,知乎和百度贴吧,各种争论没完没了。

我没看奥运会,也不关心竞技体育。

奥运会本是希望世界和平的,而如今却越来越不平静了。所有人都心有不安,这成了一个发泄躁动情绪的机会。

几百万人在网络上骂外国运动员,骂外国裁判,还要求道歉,这就是网络暴力了。即使他们有错,即使他们不懂中文。

Instagram 在中国是被封的,那四十几万在霍顿的 Instagram 留言骂他的网民,你们是怎么成功翻墙的?

MariaDB 全文索引

MariaDB 和 MySQL 的全文索引的建立方式与查找方式,都和普通的索引不同。

建立索引

建立索引的语法可以简单也可以复杂:

FULLTEXT(title)
FULLTEXT(title,content)
FULLTEXT INDEX post_title_content_ft_index(title,content)

查询

1. 按照自然语言查询,匹配完整单词。比如查询 rabbit 可以匹配 rabbit, rabbits, Rabbits,但是查询 rab 不能匹配 rabbit 。

MATCH(title,content) AGAINST('rabbit')

2. 按照字符匹配查询,从单词开头开始。查询 rab 可以匹配 rabbit ,但是查询 bit 不能匹配 rabbit 。

MATCH(title,content) AGAINST('rabbit' IN BOOLEAN MODE)

多列索引与单列索引

对于普通的索引,如果建立了(title,content)的联合索引,就不必单独建立 title 和 content 的索引,也可以搜索单列。但是全文索引就不行,索引的列必须和查询的列完全一致。如果查询 title ,就要建立 title 单列的全文索引;如果查询 (title, content) 就要建立只包含 (title, content) 两列的索引。

搜索中文

MySQL 和 MariaDB 的全文索引一开始就不是为东亚语言设计的。单词断字是按照空格和标点符号的,但是中日韩文字单词之间没有空格。因此搜索“明月”无法匹配“床前明月光”。使用 IN NATURAL LANGUAGE MODE 只有在搜索整句的时候才能匹配到,基本上没有什么用处。使用 IN BOOLEAN MODE 的时候,只能搜索一句的开头,比如“床前*”可以匹配,而“明月*”就不行。* 通配符只能放在单词的结尾。

因此对中文而言,全文索引反而没有 %LIKE% 的效果好,虽然 %LIKE% 的效率很低。小型网站,可以采用。

MySQL 提供了额外的 ngram 技术,支持每 n 个字符断字。这样就可以用逐字搜索中日韩文字。但 MariaDB 还没有引进此功能。

一天又一天

近一个月来,都在忙创业的工作。网站推出开始运行,逐渐积累内容和用户。也不是特别出彩,但也像模像样的。

santakani.com

万事开头难。得时时想着这件事,偶尔跳出圈子,才能理清头绪。工作的时候也不是要拼多少小时,而是每天坚持做一点,做最要紧的,选择最高效的途径。

前几天参加一个小活动,有个大叔说,“Do not fall in love with what you are doing.”意思是说要灵活变通,最后做成的事,不总是和初衷完全一致的。

看着一点点积累了这么多,有点小开心。感谢玥辛和小童。我们这三个人好像都不够聪明,不是特别勤奋,也没啥经验。只是一直在慢慢往前走。

毕业临近,稍有紧迫之感。同一届的学生,都还没有毕业。有的在忙毕业设计,有的则在实习。在芬兰,人们已经习惯了按照自己的节奏规划生活。社会也有足够的包容性,不会计较你是否早一年或晚一年毕业。

好好学习,好好玩耍。

睡前热,醒前凉

六月末,杭州的连阴雨刚结束,保定的雨水刚开始。不一样的热。而 Espoo 和 Helsinki 还是很凉爽,晚上五六点钟才有点热。

前几日去医院检查两次,第一次验血和测心电图,第二次测肺功能。目前的真实体重 55 kg ,真实身高 174 cm 。舌头上破了一个伤口,半个头都疼啊。据说盐水漱口管用(来自百度经验)。每日去小区的免费健身房锻炼,玩会儿游戏,看会儿动漫,其余的时间都在好好工作。

在宁静,整洁,绿树成荫,不与人接触的地方生活,有的人会发疯,有的人会颓废。我们的思想已经无法重返自然。

七月的目标:

  1. 完成网站的第一版,投入使用。
  2. 写毕业论文的第一章。
  3. 去动物园散心。

最近在看《男子高中生的日常》。

《富士山同学正值思春期》

一部微微带些诱惑的青涩恋爱漫画。

fu-shi-shan-tong-xue-zheng-zhi-si-chun-qi-4

富士山牧央,身高超过 180cm 的女中学生,校排球队主力,积极而富有责任感。上场优一则是个只有 160cm 的小个子,过着普普通通的校园生活。两人虽是幼年相识,但上中学后已经有些陌生了。

故事一开始,男生三人组计划偷窥女生换衣服。上场同学顺着窗户爬下来,视角却被大块头的富士山同学挡住了,慌张之下掉落受伤。随后三人组被富士山胖揍一顿,上场则挖苦她“你妈妈是天空树……”然而看到富士山换衣服的场景令上场很在意。

之后因为手机掉了的缘故,在放学后有了和富士山独处的机会。原本觉得这么高大一点也不萌,却被她的单纯活泼所吸引。身高什么的,都不管了。简单的告白,简单的回应。 继续阅读 →

近日记

六月已去大半。

赫尔辛基一带的气温忽然变得很低,出门总带外套和雨伞。雨伞还是彩虹伞好呢,在 Tiger 买了一把,也不贵。

续签证的麻烦还是每年一次,今年更棘手。好在就快毕业,不需要怕。和人打交道,总会遇到顺利和不顺利的情况,若能真得看开就好了。我还需磨练。

创业的事情在慢慢进行,网站已经快要完成投入使用,最后的完善和修补却是件熬人的活儿。

看似挺顺利的呀,虽然遇到的全是不顺利的情况。明明想要放松一下,却还是停不下来。有时间休息的时候,已经睡不着了呀。

昨天是暴雨,让我想起六月这个时候的杭州。杭州是一个浪漫的城市,多半是因为雨水和撑着伞的男男女女。

此时你已回到祖国了吧,愿你一切顺利。山重水复,柳暗花明。

雨后的小路上,有慢慢爬的蜗牛。我们有天也会长出硬壳,但保留着柔弱,也好。

Wake up, wake up.

包粽子

今天邀请同学一起包粽子,有 DYX , YXT 和她妹妹。先用麻绳,又用皮筋,最后用铁丝绑……形状不好,味道不错。放了糯米,红枣和豆沙。还吃了薯片,烤薯格,看了《坂本》。吃饱,慵懒的感觉注满全身。

我们是时间的刻度。

IMG_20160611_165426

IMG_20160611_184530

IMG_20160611_185058