想要爬取数据,验证码是必须要过的一关,而如今绝大部分验证码都鬼精鬼精的,想要破解起来比较麻烦。
虽然Selenium这个自动化测试工具可以帮我们模拟用户行为,但是Selenium自带的一些标签可以让网站轻轻松松就识别出你是爬虫,直接把你干掉,那么该怎么绕过这一关呢?
我们可以使用Chrome的debug模式:
1、打开Chrome
String path = "你的Chrome路径";
String dir = "存储用户数据的路径";
System.setProperty("webdriver.chrome.driver", "你的chromedriver.exe地址");
List<String> cmd = new ArrayList<>();
cmd.add(path);
cmd.add("--user-data-dir="+ dir);
cmd.add("--remote-debugging-port=9222");
// 窗口启动最大化
cmd.add("--start-maximized");
ProcessBuilder process = new ProcessBuilder(cmd);
try {
process.start();
} catch (IOException e) {
throw e;
}
2、Selenium连接Chrome
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress","127.0.0.1:9222");
ChromeDriver driver = new ChromeDriver(options);
driver.get("http://www.baidu.com");
这样我们就通过Java打开了Chrome并且用Selenium成功连接,通过这种方式打开的浏览器不会带有Selenium的标签,也就不会被网站识别出来。