锁定老帖子 主题:使用谷歌的kaptcha验证码被破解了
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-24
谢谢各位的关注,确实是个很头疼的问题,辨认复杂会导致用户麻烦,导致流量下降,容易辨认的话破解就简单些
|
|
返回顶楼 | |
发表时间:2011-05-25
kfyfly 写道 谢谢各位的关注,确实是个很头疼的问题,辨认复杂会导致用户麻烦,导致流量下降,容易辨认的话破解就简单些
我刚刚看了下,如果你需要重叠的话,可以修改下源码 把源码中的5行注释掉,就可以配置为负数了,这样字母之间就可以重复了。 /** */ public int getPositiveInt(String paramName, String paramValue, int defaultInt) { int intValue; if ("".equals(paramValue) || paramValue == null) { intValue = defaultInt; } else { try { intValue = Integer.parseInt(paramValue); // if (intValue < 1) // { // throw new ConfigException(paramName, paramValue, // "Value must be greater than or equals to 1."); // } } catch (NumberFormatException nfe) { throw new ConfigException(paramName, paramValue, nfe); } } return intValue; } 把字体间的间距修改为负数,就会有重叠的效果 <prop key="kaptcha.textproducer.char.space">-5</prop> <prop key="kaptcha.textproducer.font.names">华文彩云,华文行楷,方正舒体,华文隶书,幼圆,华文琥珀</prop> 把字体设置为不同的字体,这样机器在识别的时候也有难度的。 还有你也可以修改显示的颜色,这个需要改代码 Font[] fonts = getConfig().getTextProducerFonts(fontSize); Color color = getConfig().getTextProducerFontColor(); font是随机设置的,color也可以的。 可以参考 package com.google.code.kaptcha.text.impl; public class DefaultWordRenderer extends Configurable implements WordRenderer 希望对楼主有帮助, |
|
返回顶楼 | |
发表时间:2011-05-25
matychen 写道 kfyfly 写道 谢谢各位的关注,确实是个很头疼的问题,辨认复杂会导致用户麻烦,导致流量下降,容易辨认的话破解就简单些
我刚刚看了下,如果你需要重叠的话,可以修改下源码 把源码中的5行注释掉,就可以配置为负数了,这样字母之间就可以重复了。 /** */ public int getPositiveInt(String paramName, String paramValue, int defaultInt) { int intValue; if ("".equals(paramValue) || paramValue == null) { intValue = defaultInt; } else { try { intValue = Integer.parseInt(paramValue); // if (intValue < 1) // { // throw new ConfigException(paramName, paramValue, // "Value must be greater than or equals to 1."); // } } catch (NumberFormatException nfe) { throw new ConfigException(paramName, paramValue, nfe); } } return intValue; } 把字体间的间距修改为负数,就会有重叠的效果 <prop key="kaptcha.textproducer.char.space">-5</prop> <prop key="kaptcha.textproducer.font.names">华文彩云,华文行楷,方正舒体,华文隶书,幼圆,华文琥珀</prop> 把字体设置为不同的字体,这样机器在识别的时候也有难度的。 还有你也可以修改显示的颜色,这个需要改代码 Font[] fonts = getConfig().getTextProducerFonts(fontSize); Color color = getConfig().getTextProducerFontColor(); font是随机设置的,color也可以的。 可以参考 package com.google.code.kaptcha.text.impl; public class DefaultWordRenderer extends Configurable implements WordRenderer 希望对楼主有帮助, 谢谢楼上的兄弟,我再试试 |
|
返回顶楼 | |
发表时间:2011-10-22
最后修改:2011-10-22
楼主,你看一下我这个,用户体验应该还是比较好的。
用户输入也不会太麻烦。就算让他识别到编号也没有关系。 因为机器人不知道应该提交哪些编号。 但是,如果,机器人连这些图像都能识别的话那就没办啦。 你看一下效果:http://www.iteye.com/topic/1116904 |
|
返回顶楼 | |