Selenium WebDriver — очень популярный инструмент в области веб-сканеров и автоматического тестирования, который позволяет разработчикам имитировать действия пользователя в браузере. Однако по соображениям безопасности или конфиденциальности иногда нам необходимо отправлять запросы через прокси-сервер. В этой статье рассказывается, как использовать Selenium WebDriver в среде Java для настройки прокси-сервера и захвата изображений целевой веб-страницы.
Сначала убедитесь, что в вашей среде разработки установлены следующие компоненты:
В проекте Maven,редактироватьpom.xml
документ,ДобавитьSelenium Зависимости веб-драйвера:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<!-- При необходимости добавьте зависимости WebDriver для других браузеров. -->
</dependencies>
Прежде чем выполнять операции с веб-страницей, нам необходимо настроить WebDriver для использования прокси-сервера. Вот код настройки прокси-сервера с использованием ChromeDriver в качестве примера:
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
public class WebDriverProxySetup {
public static void main(String[] args) {
// Настройки прокси-сервера
String proxyHost = "xdfrgr";
String proxyPort = "5445";
String proxyUser = "16QMSOML";
String proxyPass = "280651";
// Создайте прокси-объект и укажите хост и порт прокси-сервера.
Proxy seleniumProxy = new Proxy();
seleniumProxy.setHttpProxy(proxyHost + ":" + proxyPort)
.setSslProxy(proxyHost + ":" + proxyPort);
// Параметры Chrome
ChromeOptions options = new ChromeOptions();
// Установите имя пользователя и пароль прокси
String proxyString = "http://" + proxyUser + ":" + proxyPass + "@" + proxyHost + ":" + proxyPort;
options.setCapability(CapabilityType.PROXY, proxyString);
// Установить путь ChromeDriver
System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
// Инициализировать веб-драйвер
WebDriver driver = new ChromeDriver(options);
// Что делать дальше...
// Например, посетите веб-страницу
driver.get("http://www.example.com");
// Выполняйте другие задания...
// Закрыть веб-драйвер
driver.quit();
}
}
После настройки WebDriver мы можем использовать его для доступа к веб-страницам и захвата изображений:
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class WebPageImageCapture {
public static void main(String[] args) {
// Предположим, что класс WebDriverProxySetup инициализировал WebDriver.
WebDriver driver = WebDriverProxySetup.getInitializedDriver();
try {
// Посетите целевую страницу
driver.get("http://www.example.com");
// Сделать скриншот всей страницы
WebElement htmlElement = driver.findElement(By.tagName("html"));
File fullPageScreenshot = htmlElement.getScreenshotAs(OutputType.FILE);
fullPageScreenshot.renameTo(new File("example_full_page.png"));
// Вы также можете просто сделать снимок экрана текущего вида браузера.
File screenshot = driver.getScreenshotAs(OutputType.FILE(File));
screenshot.renameTo(new File("example_screenshot.png"));
System.out.println("Захват изображения выполнен успешно!");
} finally {
// Закрыть веб-драйвер
if (driver != null) {
driver.quit();
}
}
}
}
Proxy
класс для настройкиHTTPиSSLактерское мастерство。ChromeOptions
класс позволяет намChromeDriverУстановить параметры,Как агент.webdriver.chrome.driver
Свойства системы указывают наChromeDriverисполняемого файладокументпуть。getScreenshotAs
Метод, используемый для создания снимка экрана браузера,Вы можете указать тип файла для сохранения.