赞
踩
前言
由于网站注册入口容易被黑客攻击,存在如下安全问题:
所以大部分网站及App 都采取图形验证码或滑动验证码等交互解决方案, 但在机器学习能力提高的当下,连百度这样的大厂都遭受攻击导致点名批评, 图形验证及交互验证方式的安全性到底如何? 请看具体分析
简介:中国东方航空股份有限公司总部位于上海,是中国三大国有骨干航空公司之一,前身可追溯到1957年1月原民航上海管理处成立的第一支飞行中队,在上海、香港挂牌上市。
东航运营近800架飞机组成的现代化机队,是全球最年轻的机队之—,拥有中国规模最大、商业和技术模式领先的互联网宽体机队,在中国民航首家开放手机等便携式设备使用。“东方万里行”常旅客可享受联盟多家航空公司的会员权益及全球超过750间机场贵宾室。每年能为1.5亿人次提供航空出行服务,位居全球前十。
采用极验的V2版本,容易被模拟器绕过甚至逆向后暴力攻击,滑动拼图识别率在 95% 以上。
前端界面分析, 采用的是极验2.0,最大特点就是将图片做分割后,在前端再做合并,这就好办了, 网上有大量现成的逆向文章及视频参考,不过我们这次不用逆向, 只是采用模拟器的方式,关键点主要模拟器交互、距离识别和轨道算法3部分。
public RetEntity send(WebDriver driver, String areaCode, String phone) { try { RetEntity retEntity = new RetEntity(); driver.get(smsUrl); By phoneBy = By.xpath("//input[@placeholder='请输入手机号码']"); WebElement phoneElemet = driver.findElement(phoneBy); phoneElemet.sendKeys(phone); driver.findElement(By.className("global-login-sendcode")).click(); Thread.sleep(1000); boolean moveResult = geetApi.getAndMove(driver, 6); Thread.sleep(500); WebElement msgElement = ChromeDriverManager.waitElement(driver, By.className("global-login-sendcode-active"), 10); String msg = (msgElement != null) ? msgElement.getText() : null; if (moveResult && msg != null && msg.contains("s")) { retEntity.setRet(0); retEntity.setMsg(msg); } else { System.out.println("moveResult=" + moveResult + ",msg=" + msg); } return retEntity; } catch (Exception e) { System.out.println(e.toString()); return null; } }
public boolean getAndMove(WebDriver driver, Integer offSet) { int distance = -1; try { WebElement moveElement = ChromeDriverManager.waitElement(driver, By.className("geetest_slider_button"), 1000); if (moveElement == null) { logger.error("getAndMove() moveElement=" + moveElement); return false; } // 下面的js代码根据canvas文档说明而来 // 完整背景图geetest_canvas_fullbg geetest_fade geetest_absolute StringBuffer base64 = new StringBuffer(); String fullName = "geetest_canvas_fullbg geetest_fade geetest_absolute"; byte[] fullImg = GetImage.callJsByName(driver, fullName, base64); String bgName = "geetest_canvas_bg geetest_absolute"; byte[] bgImg = GetImage.callJsByName(driver, bgName, base64); File fullFile = null, bgFile = null; if (fullImg != null && bgImg != null) { Long time = System.currentTimeMillis(); fullFile = new File(dataPath + "geet/" + time + "full.png"); FileUtils.writeByteArrayToFile(fullFile, fullImg); bgFile = new File(dataPath + "geet/" + time + "bg.png"); FileUtils.writeByteArrayToFile(bgFile, bgImg); if (fullImg.length < 10000) { System.out.println("fullImg len=" + fullImg.length + " -> err[len<10000]"); return false; } } // 获取滑动距离并删除图片 distance = (fullFile != null && bgFile != null) ? ActionMove.getMoveDistance(fullFile.getAbsolutePath(), bgFile.getAbsolutePath())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。