Java过阿里NC滑块

  • Java+selenium
  • 获得滑块的sessiond+token
  • 阿里滑块是本地生成,当我们滑块成功后,会生成sessiond和token,当我们使用返回的参数时,会先通过阿里后端接口进行认证,阿里认证只会判断该sessiond和token是否使用过,就过了。
  • 因此,我们可以在本地通过selenium模拟人工进行滑动。

 一、H5页面




    
    
    
    


二、java+selenium

public static JSONObject openChrome(String drivePath, String htmlPath) {
        // 隐藏 window.navigator.webdriver
        ChromeOptions option = new ChromeOptions();
        option.addArguments("--incognito");//无痕
        option.addArguments("disable-cache");//禁缓存
        option.addArguments("--remote-allow-origins=*");
        option.setExperimentalOption("useAutomationExtension", false);
        option.setExperimentalOption("excludeSwitches", Lists.newArrayList("enable-automation"));
        option.addArguments("--disable-blink-features=AutomationControlled");//window.navigator.webdriver 开发出现true  正常出现false

        //设置为 headless 模式避免报错用的参数
        option.addArguments("--disable-gpu");

        //禁用沙箱
        option.addArguments("--no-sandbox");

        // 禁用阻止弹出窗口
        option.addArguments("--disable-popup-blocking");

        //使用后台打开chrome的方式
        //option.addArguments("--headless");

        JSONObject proxy = ProxyUtil.getProxy();
        //添加代理
        option.addArguments("--proxy-server=http://"+proxy.getString("sever")+":"+proxy.getInteger("port"));

        System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "/dev/null");
        System.setProperty("webdriver.chrome.driver", drivePath);
        // 1.打开Chrome浏览器
//        chromeDriver.get("file:///D:\\WorkSpace\\Java\\yslm\\src\\main\\resources\\static\\AliBaBa_nc.html");
        chromeDriver = new ChromeDriver(option);
        chromeDriver.get(htmlPath);
        return huakuai(chromeDriver);
    }

    public static JSONObject huakuai(ChromeDriver driver) {
        // 实例化鼠标操作对象Actions
        String sessionId = null, sig = null, token = null;
        JSONObject object = null;
        do {
            WebElement Slider = driver.findElement(By.xpath("//*[@id=\"nc_1_n1z\"]"));// 拿到滑块按钮
            Actions action = new Actions(driver);
            int count = 120;
            do {
                count += 60;
                action.dragAndDropBy(Slider, count, 0).perform();// 移动一定位置
            } while (count < 300);
            WebDriver.Navigation navigate = driver.navigate();
            sessionId = driver.findElement(By.xpath("//*[@id=\"sessionId\"]")).getText();
            sig = driver.findElement(By.xpath("//*[@id=\"sig\"]")).getText();
            token = driver.findElement(By.xpath("//*[@id=\"token\"]")).getText();
//            System.out.println("sessionId:" + sessionId);
//            System.out.println("sig:" + sig);
//            System.out.println("token:" + token);
            log.info("-->token:{}", token);
            object = new JSONObject();
            object.put("sessionId", sessionId);
            object.put("sig", sig);
            object.put("token", token);
            navigate.refresh();
        } while (sessionId == null || sig == null || token == null
                || sessionId.equals("") || sig.equals("") || token.equals(""));
        driver.close();
        driver.quit();
        System.out.println("结果:"+object.toJSONString());
        return object;
    }

你可能感兴趣的:(Java,SE,教程,笔记,java,开发语言,javascript)