如何避免 google 搜索将 selenium webdriver 检测为异常行为?
how to avoid google search detect selenium webdriver as unusual behaviour?
我尝试使用 selenium webdriver 在 google 中进行一次图片搜索 所以我的用户不需要手动打开浏览器并将图像 url 粘贴到那里。但是 google 说
Our systems have detected unusual traffic from your computer network. This page checks to see if it's really you sending the requests, and not a robot.
并提供验证码,有没有办法避免被 google 使用 selenium webdriver 检测为自动化?
这里是我的代码:
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://images.google.com/searchbyimage?image_url=";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void test2() throws Exception {
driver.get(baseUrl + "http://somesite.com/somepicture.jpg");
driver.findElement(By.linkText("sometext"));
System.out.println("finish");
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
似乎 google 检测浏览器配置文件以确定是否发生了奇怪的事情。例如,如果您使用浏览器进行隐私浏览(我使用 firefox 和 chrome 对其进行了测试),您的浏览器配置文件将更改为匿名,因此 google 会发现它可疑并要求您填写验证码。
当您 运行 来自 selenium webdriver 的浏览器时,也会发生这种情况。
因此您需要使用类似这样的代码将 selenium 驱动程序配置文件设置为默认配置文件(目前仅适用于 firefox)
ProfilesIni allProfiles = new ProfilesIni();
WebDriver driver = new FirefoxDriver(allProfiles.getProfile("default"));
我不同意@Angga 并且怀疑 Google 知道你是一个机器人,因为你不在你的默认配置文件中。
更有可能是因为:
只需添加一行,一定会有帮助
#For ChromeDriver version 79.0.3945.16 or over
options.add_argument('--disable-blink-features=AutomationControlled')
#Open Browser
browser = webdriver.Chrome(executable_path='chromedriver.exe',options=option)
我尝试使用 selenium webdriver 在 google 中进行一次图片搜索 所以我的用户不需要手动打开浏览器并将图像 url 粘贴到那里。但是 google 说
Our systems have detected unusual traffic from your computer network. This page checks to see if it's really you sending the requests, and not a robot.
并提供验证码,有没有办法避免被 google 使用 selenium webdriver 检测为自动化?
这里是我的代码:
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://images.google.com/searchbyimage?image_url=";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void test2() throws Exception {
driver.get(baseUrl + "http://somesite.com/somepicture.jpg");
driver.findElement(By.linkText("sometext"));
System.out.println("finish");
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
似乎 google 检测浏览器配置文件以确定是否发生了奇怪的事情。例如,如果您使用浏览器进行隐私浏览(我使用 firefox 和 chrome 对其进行了测试),您的浏览器配置文件将更改为匿名,因此 google 会发现它可疑并要求您填写验证码。
当您 运行 来自 selenium webdriver 的浏览器时,也会发生这种情况。
因此您需要使用类似这样的代码将 selenium 驱动程序配置文件设置为默认配置文件(目前仅适用于 firefox)
ProfilesIni allProfiles = new ProfilesIni();
WebDriver driver = new FirefoxDriver(allProfiles.getProfile("default"));
我不同意@Angga 并且怀疑 Google 知道你是一个机器人,因为你不在你的默认配置文件中。
更有可能是因为:
只需添加一行,一定会有帮助
#For ChromeDriver version 79.0.3945.16 or over
options.add_argument('--disable-blink-features=AutomationControlled')
#Open Browser
browser = webdriver.Chrome(executable_path='chromedriver.exe',options=option)