开源项目 geetest ruby sdk

nbkhic · 2014年05月14日 · 最后由 quakewang 回复于 2014年05月15日 · 6924 次阅读

前一段时间一直在找一个简单好用的验证码,后来不出意外的找到了geetest。由于官方没有 ruby 的 sdk,所以自己实现了一个,然后顺手用 sinatra 写了个 demo。

项目地址在这里,已经联系 geetest 官方,应该会作为官方版本维护把。

可以去我们的站点看一下实际使用的效果http://ur.tencent.com/entry_forms/new

BTW,这也许是 TX 唯一的一个使用 ror 的对外站点。当然了,我个人维护一个内部 ror 站点,用的是 ror1.0+ruby186,n 年前的东西了,现在已经迁移到 php。为了弥补 TX 没有 ruby 的遗憾,作为 TX 唯一使用 ruby 的伪 php 程序员,这个项目我果断选择 ror,把根留住,火种不能熄灭。

我们用的是 ruby2.1.1+rails4.1。后台用的是 puma。服务器是 8 核 16G 内存,本站点预计总访问人数不会超过 2000 人,所以没有做任何性能调优。想起自己的 512M 的 vps,这台在内部算是很普通的服务器简直就是航空母舰。

楼主,我一个 8 位 QQ 号送给我妹妹了,结果她上网吧不小心被盗了,有可能改密码后自己忘记密码了,密保也没设置好,请问有可能找回来吗?

手机上拖不了诶

这验证码挺有意思的,以前见过拖动的,但是拖动 + 拼图倒是第一次见

楼主,这个验证码在我的手机 chrome 浏览器上拖动不正常

拖不动,iOS 上面

ios 上前天还拖过一次,也许是我昨天发了点什么 js 上去玩坏了。哈哈,不管了。

已 Star,火种不能熄灭~

说实话我感觉这个验证码虽然新,能拦住一群只会搞 ORC 的人,但是从图形的角度似乎比较容易破解。 http://geetest-jordan2.b0.upaiyun.com/pictures/gt/653dba75/bg/3c489a66.webp 这个坑的位置有点略明显牙? 而且不同的验证码的坑的样子也差不太多 http://geetest-jordan2.b0.upaiyun.com/pictures/gt/b53e9b64/bg/6b675edd.webp

这个验证码的思路简直... 破解代码如下

// 加载js拖拽模拟库
jQuery.getScript("https://raw.githubusercontent.com/jquery/jquery-ui/master/tests/jquery.simulate.js");
function simulate(i) {
  $dom = $('.gt_slider_knob');
  var x = 0;
  var left = $('.gt_slider_knob').css("-webkit-transform").match(/\d+/g);
  if (left == null || (left[4] < 10)) {
    x = 40; // 根据我观察 坑基本没有在最左边的
  }
  x = x + 10;
  $dom.simulate('drag', { dx: x });
  setTimeout(function(){
    simulate(i+1);
  }, 1000);
}
setTimeout(function(){
    simulate(0);
  }, 2000);

说白了就是用 js 多拖几次,总有机会会碰到 你们可以在楼主的表单上,在控制台运行一下试试

由于这个模拟拖动的库没有延迟一下就拽过去了,需要的话可以考虑让他拖拽放下的中间给点时间

http://www.36kr.com/p/211940.html

传统的码式验证策略单一、可见、而且是静态的。恶意程序通过 OCR 识别技术已经能非常成熟地达到攻击效果。吴渊很难量化的描述极验的行为验证在安全性上有多大提升,但他给了一个实例。265G 网游门户是极验的客户之一,它每年举办的游戏投票排行活动“龙虎榜”都存在买榜嫌疑。而最近这一次,有不少提供买榜服务的黑客是纷纷找上门来,说他家的验证实在是没办法攻破,但已经和顾客签了约,所以求合作。当然,最后是拒绝

@bydmm 其实只要从最左拖到最右就肯定能被破解掉。

/*
破解 http://geetest.com/tryit/
打开浏览器在console里面运行如下代码
加载jquery模拟drag脚本,考虑到滑块大小,第一次直接拖动到50px,后续每秒钟拖动8px
从人工拖动的结果可以看出,该验证码方式位置误差在+/- 5px左右,所以50px+8px这样简单粗暴的2行代码就可以有30%的成功率
破解失败情况是在滑块缺口位置偏右了,导致尝试太多
加上图像识别滑块缺口位置,就可以轻松100%地破解
*/

function d(first) {
$('.gt_slider_knob').simulate('drag', { dx: first ? 50 : 8 });
setTimeout(function(){d(false);}, 1000);
}

jQuery.getScript("https://raw.githubusercontent.com/jquery/jquery-ui/master/tests/jquery.simulate.js", function() {
d(true);
});
需要 登录 后方可回复, 如果你还没有账号请 注册新账号