Получение 403 Forbidden от Cloudflare при доступе к API FlightRadar24 с использованием Java RestTemplateJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Получение 403 Forbidden от Cloudflare при доступе к API FlightRadar24 с использованием Java RestTemplate

Сообщение Anonymous »

Я пытаюсь получить доступ к API FlightRadar24 с помощью Java и Spring RestTemplate, но получаю ошибку 403 Forbidden от Cloudflare.
Что я пытаюсь сделать достичь:
Согласно документации API FlightRadar24, я хочу получить данные о полете следующим образом:
  • Использование базового URL-адреса https://fr24api.flightradar24.com/api.
  • Отправка моего токена API в заголовке авторизации в качестве токена носителя.
  • Настройка API версию в заголовке Accept-Version до v1.
  • Выполнение запроса GET к соответствующей конечной точке.
< strong>Мой код:

Код: Выделить всё

package ch.ais.www.services;

import java.util.Collections;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;

public class Fr24Service {
private final RestTemplate restTemplate = new RestTemplate();
private final String apiToken = "your_api_token_here";
private final String baseUrl = "https://fr24api.flightradar24.com/api";

public String getFlightData(String flightId) {
String url = String.format("%s/flights/%s", baseUrl, flightId);

// Set headers
HttpHeaders headers = new HttpHeaders();
headers.setBearerAuth(apiToken); // Set Authorization header
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.add("Accept-Version", "v1");
headers.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");

// Create request entity
HttpEntity entity = new HttpEntity(headers);

// Send GET request
ResponseEntity response;
try {
response = restTemplate.exchange(
url, HttpMethod.GET, entity, String.class);
} catch (HttpClientErrorException e) {
// Handle HTTP errors
System.err.println("HTTP Status Code: " + e.getStatusCode());
System.err.println("Response Body: " + e.getResponseBodyAsString());
throw e;
}

if (response.getStatusCode() == HttpStatus.OK) {
return response.getBody();
} else {
// Error handling
throw new RuntimeException("Error fetching flight data: " + response.getStatusCode());
}
}
}
Я получаю сообщение об ошибке:
Когда я запускаю приложение, я получаю следующее исключение:

Код: Выделить всё

Exception in thread "main" org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: "



  

Attention Required! | Cloudflare
...
Похоже, что Cloudflare блокирует мой запрос, и вместо ожидаемого ответа в формате JSON я получаю HTML-страницу.
Дополнительная информация :
Я использую Java 21 и Spring RestTemplate.
Похоже, что Cloudflare обнаруживает и блокирует мой запрос как автоматический трафик.
API в документации указано, что токен API должен быть отправлен в заголовке авторизации и что версия API должна быть указана в заголовке Accept-Version.
Мой вопрос:
Как я могу успешно отправить запрос к API FlightRadar24 из моего Java-приложение без блокировки Cloudflare? Есть ли способ настроить RestTemplate (или другой HTTP-клиент) для доступа к API, несмотря на механизмы защиты Cloudflare, учитывая, что у меня есть законные учетные данные API?
Будем очень благодарны за любую помощь или предложения.
Примечание.
  • Я исключил свой фактический токен API из кода для из соображений безопасности.
  • Я понимаю, что Cloudflare может блокировать автоматические запросы, но поскольку у меня есть действительный доступ к API, должен быть способ правильно настроить мой клиент.
Что я пробовал Дальний:
  • Проверено, что мой apiToken верен.
  • Убедился, что я устанавливаю авторизацию заголовок с токеном носителя.
  • Добавлена ​​версия Accept-Version. заголовок со значением v1.
  • Включен заголовок User-Agent для имитации обычного браузера.
  • Протестирован запрос API с помощью таких инструментов, как Postman и Curl. — там работает.
  • Подтверждено, что URL-адрес конечной точки правильный.
  • Пытался использовать WebClient из Spring WebFlux, но получаю ту же ошибку.
  • Включено ведение журнала для проверки HTTP-запросов и ответов.


Подробнее здесь: https://stackoverflow.com/questions/792 ... -using-jav
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»