Каким образом можно отправлять API-запросы из браузера?

Привет!
У меня возникла проблема при отправке запросов на ресурс https://visa.vfsglobal.com/blr/ru/pol/login. Оказывается, данная страница защищена Cloudflare и блокирует все API запросы, которые не были отправлены из браузера.

Я реализовал логику, используя Selenium, чтобы открыть браузер, перейти на указанный сайт и выполнить Fetch запрос с помощью executeScript(). Это работает, однако, так как я не очень хорошо знаком с JavaScript, у меня возникают сложности с получением ответа.

Можете порекомендовать какую-нибудь библиотеку на Java, через которую я смогу отправлять запросы из браузера и получать ответ?
  • 27 октября 2023 г. 11:28
Ответы на вопрос 4
Привет! Вы можете использовать библиотеку Selenium WebDriver для отправки API-запросов из браузера на Java. Вот пример кода, демонстрирующий, как сделать это:

```java
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class SeleniumApiRequest {
    public static void main(String[] args) {
        // Установка пути к драйверу Chrome
        System.setProperty("webdriver.chrome.driver", "путь_к_драйверу_chrome");

        // Создание экземпляра веб-драйвера
        WebDriver driver = new ChromeDriver();

        // Открытие страницы
        driver.get("https://visa.vfsglobal.com/blr/ru/pol/login");

        // Выполнение API-запроса с помощью JavaScript
        JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
        String response = (String) jsExecutor.executeScript("return fetch('ваш_url_api').then(response => response.text());");

        // Вывод ответа
        System.out.println(response);

        // Закрытие браузера
        driver.quit();
    }
}
```

В этом примере мы используем Selenium WebDriver для запуска Chrome-браузера и открытия страницы. Затем мы используем JavascriptExecutor для выполнения API-запроса с помощью метода `executeScript()`. Ответ сохраняется в переменной `response`, и вы можете обработать его дальше в своем коде.

Обратите внимание, что вы должны скачать и установить драйвер Chrome (например, ChromeDriver) и указать путь к нему в коде.

Надеюсь, это поможет вам решить проблему с отправкой API-запросов из браузера на Java!
Selenium или Playwright 
 https://playwright.dev/java/ 
 Используйте JavaScript для отправки запросов из контекста страницы. Java позволяет модифицировать запросы и считывать ответы, как только они поступят.
Похожие вопросы