- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章网站建设经验分享:交互中的网站验证码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
很多网站推广SEOer发现自己90%时间在干三件事:1. 链接建设 2. 网站内容建设 3. 天天盯着百度或谷歌的排名和算法更新。当然也有很多SEOer认识到好的用户体验不仅提升网站转化率,还会建立网站品牌口碑,进而带来更多流量。提升用户体验的方法有很多,在这里SEO专家不谈UI、不谈WPO、不谈购物流程,我们只说一个大家经常忽略的小细节:
——网站验证码.
大家都知道验证码是重要的交互方法,用来防止网站的表单被滥用,尤其是被软件机器人滥用。只要你的网站开通了评论、发帖等互动功能,机器人就能找到表单自动填写表格然后发出去一大堆广告或者欺诈信息。机器人不会自己填写验证码,从而无法滥用表单.
但验证码会带来不少麻烦:
首先,验证码会让用户感觉到不受信任 。
当你访问网站,遇到验证码,相当于有人在问你:“你是机器人吗?”或者“你是不是想来这儿发垃圾信息的?”。就好像你来俺家开的商店,你刚一进门我就问:“你是小偷么?”,你会感觉很爽么?
现在几乎所有网站都充斥着这种不尊重、不信任用户的验证码,大家居然习以为常,这不是很荒谬的一件事么?
第二,验证码造成转化率降低 。
国外的凯西亨利在4年前对验证码做过一个测试,他发现,如果验证码关闭了,的确会带来一些垃圾信息,但在该步骤的转化率会增加3.2%.
可不要小看这区区3.2%,亿推给您举一个例子:在有验证码的情况下,用户转化率20%,如果有验证码提升到23.2%,那么潜在销售额提升了多少呢?
可不是 23.2%-20%=3.2% 。
而是 (23.2%-20%)/20% = 16% 。
也就是你的营业额可能因此提升16%,这可不是一个小数字了.
第三,验证码会给用户造成挫败感 。
我们看看下面一些坑爹的验证码效果 。
上面的验证码,我需要带着放大镜仔细看,还不一定能保证100%正确输入。斯坦福大学的调查数据:
– 网站验证码平均耗时9.8秒 。
- 如果是音频验证码,耗用时间超过28秒 。
- 第一次输错验证码的比率接近30% 。
- 接近20%的连续三次输错验证码的用户愤怒的离开 。
如果你想用户感到迷茫、挫败、愤怒的话,那么就大量的使用验证码吧.
第四,验证码会带来网站性能问题 。
普通的验证码,往往会被机器人破解,所以很多网站采用了外部插件来调用验证码。有的时候用JS代码,有的时候用iFrame,这些都会带来速度问题.
速度有时是生死攸关的大事,如果我用一秒钟时间打开你的网页,然后用3秒钟等待验证码刷新,你说我会不会掉头就走?
验证码的诞生,是为了判断表单提交者是不是机器人,相当于是一个图灵测试。但对于真正的访客,验证码所体现出来的不信任、不尊重用户的傲慢态度,已经大大超过了其积极意义。更何况,部分用户视力不好,部分用户没有耐心,这些都是验证码解决不了的。在某种程度,验证码没有解决问题,反而带来了更多问题.
上面的道理,可能很多站长都懂,但似乎滥用验证码的情况并没有改善,并且愈演愈烈。为了解决垃圾信息的问题,站长选择了验证码这种最简单直接,但容易得罪用户的方式,这是啥?亿推海外推广认为,这是懒惰.
有没有解决方案呢?当然有!笔者谈谈自己的经验:
方法一: 使用访客行为分析程序而不是验证码来判断是否机器人 。
有一些插件,比如在Wordpress上经常使用的Akismet,可以通过IP频率、Cookies等信息判断机器人。AKismet不仅仅用于wordpess,还可以安装在企业网站甚至电商网站上.
道高一尺魔高一丈,已经有针对Akismet的机器人出现了,但这么做起码可以避开大多数机器人,并且远离坑爹的验证码.
方法二:使用诱饵表单项 。
这个技术很简单,就是在你的表单里面,放一个单行文本框,文本框内写着:如果你不是机器人,请删掉这行数据.
机器人来了,肯定不管三七二一直接提交。那么我们在后台判断,凡是填写了表单的访问都是机器人,凡是删除这行数据的人都是访客.
这个方法的优点在于,不需要用户填写验证码了。缺点在于,用户还是需要手动删除一行数据,但这总算相对轻松很多吧.
诱饵技术还有一个变种,就是用隐含文本框,里面什么内容都不填写。一些初级的机器人,只要见到表单都会照例填写一些东东进去,而用户看不到表单自然也不会填写。这个方法比上面的更简单,但只能防住比较笨的机器人。如果我们稍作改造,就可以防住不少聪明机器人,比如我们的诱饵表单不是固定的,而是随机生成的,那么机器人的难度会高很多.
方法三:将验证码和用户正常数据结合在一起 。
比如用户信息中,有一个必填项是性别。当用户填写性别的时候,跳出两个选项:
我是帅哥(传递一个隐含变量 100981) 。
我是美女(传递一个隐含变量 283397) 。
第二次访问的时候,跳出两个选项 。
我是帅哥(传递一个隐含变量 997301) 。
我是美女(传递一个隐含变量 000981) 。
你可以随机生成几十组这样变量对应表,每60分钟该表格自动更新一次数据。首先机器人无法判断每次需要正确传递的变量。如果某个不怀好意的垃圾制造者用遍历法分析了你的代码找到了对应关系,然后做出新的机器人,他也不可能每小时来遍历一次.
这个方法的好处在于,用户丝毫感觉不出来这是一个验证码,而机器人则束手无策,即使有垃圾制造者人工参与,破解的难度也很大。这个方法是否十全十美呢?非也。如果某个垃圾制造者专门针对你的网站做个机器人,先获取表单数据,然后再Post数据,就顺利过关了。为了防止这种情况,我们可以用java或者ajax技术来展现选项,对方改造机器人的成本也会增加很多.
世界上没有十全十美无懈可击的解决方法,但对所有关注用户体验的站长或者网站推广人员,亿推海外推广都给予一个忠告:别小看验证码,别将防范垃圾信息的问题转嫁到用户身上,验证码有的时候不仅没有帮你解决问题,反而带来更多的问题,而这一切都几乎不被站长察觉。摆脱验证码系统,能够改善用户体验,并直接提升转化率.
最后此篇关于网站建设经验分享:交互中的网站验证码的文章就讲到这里了,如果你想了解更多关于网站建设经验分享:交互中的网站验证码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!