此贴由 markdown 语法编辑,如果有违规请立即删除

前沿

之所以尝试 BOSSzhipin,我想通过脚本去每天点一下简历刷新
51job,智联,猎聘 目前都是没有验证码的。都已经写好了脚本。

思路:既然只要滑动不需要考虑滑动的距离那就简单了多, 在网上找滑动元素的例程

方法自己做了一下修改,可以成功滑动,但是哎呀,出错了,点击刷新再来一次(error:XdrDr)

public static void move(WebDriver driver, WebElement element, int distance) throws InterruptedException {
        System.out.println(element.getAttribute("class"));
        Actions actions = new Actions(driver);
        actions.clickAndHold(element);
        int s = 1;
        int y = 3;
        for (int i = 0; i < 278; i++){
                s += 1;
                y=new Random().nextInt(40) ;


               actions.moveToElement(element, s, y).perform();
               Thread.sleep(new Random().nextInt(100) + 150);
        }


        actions.moveByOffset(300, 5).perform();

        Thread.sleep(1000);

    }

解决方案

就思考了一下,是不是支持鼠标 “前台” 滑动就能通过呢,
使用鼠标滑动几次都成功了,使用程序控制鼠标滑动,是这种鼠标前台的模拟而不是通过鼠标消息去模拟,能不能通过呢?

java 里我不知道怎么使鼠标 “前台操作”
鼠标操作分两种,一种是鼠标消息(后台),一种是前台模拟
发消息(后台),鼠标可以打断操作
前台,模拟鼠标操作,不能打断,显然这不是一种高效的方式
但是这个验证过程我只需要 1 -2 s 那又有什么关系呢?

于是用易语言写了一个 demo
这是一个成功 demo(之所以这里成功了,是因为这里的浏览器是我手动打开的,不是通过 java 的 driver 打开的)
视频演示如下(高版本的浏览器可以直接跳转播放,IE 浏览器则会下载)要是论坛支持视频引用就好了。
http://qiniu.domoyun.com/file-hash-mp4-45ebef86adcb54cd6ab560f62e5d185c865543.mp4
既然可以成功

把这个第三方脚本放入 java re'sou'rces 中,在输入完账号密码后调用这个第三方脚本

private static void firefoxtest() throws InterruptedException, IOException {
    //System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, "src/main/resources/driver/ChromeDriver 2.45.exe");
    System.setProperty(SystemProperty.BROWSER_BINARY, "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");

    FirefoxDriver driver = new FirefoxDriver();
    driver.get("https://login.zhipin.com/?ka=header-login");
    Thread.sleep(2000);
    driver.findElement(By.xpath("//*[@id=\"wrap\"]/div[2]/div[1]/form/div[1]/span[2]/input")).sendKeys("15616216603");;

    driver.findElement(By.xpath("//*[@id=\"wrap\"]/div[2]/div[1]/form/div[2]/span/input")).sendKeys("qq123456");;

    Runtime.getRuntime().exec("src/main/resources/driver/pangluo.exe"); //执行外部程序pangluo.exe
    Thread.sleep(5000);

    driver.findElement(By.xpath("//*[@id=\"wrap\"]/div[2]/div[1]/form/div[4]/button")).click();

    Thread.sleep(6000);

    driver.quit();
}

http://qiniu.domoyun.com/file-hash-mp4-c0241da660bbb3722cb1d5eb8cd06eb31378322.mp4
经反复测试,只要用 driver 打开的浏览器,就无法验证通过,即使是手动用鼠标滑。也是报错/
我测试了 firefox、chrome 都没成功

不通过 selenium,就用易语言全部通过前台点击能达到我的目的,显然是一件低效的事情,况且 BOSSzhipin 刷新简历一天只能刷新一次并且还是收费,


↙↙↙阅读原文可查看相关链接,并与作者交流