Как получить ответ от сервера с помощью cURL PHP?

Добрый день! Пытаюсь отправить GET запрос с помощью cURL на PHP вот так:
<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

$url = "https://api.investing.com/api/financialdata/assets/equitiesByCountry/default?fields-list=id%2Cname%2Csymbol%2Chigh%2Clow%2Clast%2ClastPairDecimal%2Cchange%2CchangePercent%2Cvolume%2Ctime%2CisOpen%2Curl%2Cflag%2CcountryNameTranslated%2CexchangeId%2CperformanceDay%2CperformanceWeek%2CperformanceMonth%2CperformanceYtd%2CperformanceYear%2Cperformance3Year%2CtechnicalHour%2CtechnicalDay%2CtechnicalWeek%2CtechnicalMonth%2CavgVolume%2CfundamentalMarketCap%2CfundamentalRevenue%2CfundamentalRatio%2CfundamentalBeta&country-id=5&page=0&page-size=100&include-major-indices=false&include-additional-indices=false&include-primary-sectors=false&include-other-indices=false&limit=0";

$headers = array(
    "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36",
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
    "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
    "Connection: keep-alive",
    "DNT: 1",
    "Host: api.investing.com",
    "Referer: https://www.investing.com/",
    "Upgrade-Insecure-Requests: 1",
    "Cache-Control: max-age=0",
    "TE: Trailers"
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>

В итоге в $result получаю пустоту, а если проверять ответ от cURL то HTTP Status 403. Я так понимаю, не хватает / параметров правильных в заголовках, чтобы получить ответ.

Если через браузер запросить эту ссылку https://api.investing.com/api/financialdata/assets... то данные отображаются без проблем.

Подскажите пожалуйста, как правильно составить запрос?
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Там система защиты от cloudfare. Она отдаёт страницу с JS, который вычисляет и выставляет куки, затем перезагружает страницу с уже установленными куками. Тут либо получать эту страницу с JS и имитировать его работу, либо использовать headless-браузер.
Ответ написан
Starina_js
@Starina_js
full-stack web dev
Там cloudflare стоит, все чутка сложнее.

Тут посмотрите решение для php

Ключевое, надо 1 шагом получить нужные куки , второй шаг как раз выставить нужные заголовки

Но возможно лучше использовать допустим pupeeter на js , который эмулирует браузер и ждет нужные загрузки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы