URL работает в браузере и почтальоне, но не в cURL - PullRequest
0 голосов
/ 04 мая 2020

У меня нет идей с этим. Это простой запрос curl, и он не работает. URL-адрес

https://www.nseindia.com/api/event-calendar?index=equities&from_date=05-05-2020&to_date=05-05-2020

Он отлично работает в браузере. Я положил его в Postman, простой запрос GET, и он работает там же. Я генерирую код PHP из самого почтальона, и он не работает. Код продолжает работать до истечения времени ожидания, а затем я получаю 500 внутренних ошибок сервера. В логах Apache я получаю

[Mon May 04 18:47:59.325513 2020] [fcgid:warn] [pid 25143] (104)Connection reset by peer: [client 112.196.159.208:47585] mod_fcgid: error reading data from FastCGI server
[Mon May 04 18:47:59.325568 2020] [core:error] [pid 25143] [client 112.196.159.208:47585] End of script output before headers: test.php

Я также создал эту площадку , чтобы убедиться, что проблема не в моем сервере, а в том же результате.

Почему это не работает в cURL?

1 Ответ

0 голосов
/ 04 мая 2020

Как уже упоминалось @Evert, они блокируют не браузерный запрос, поэтому вы можете обмануть ваш запрос, добавив User-Agent с ключом: CURLOPT_USERAGENT

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_USERAGENT   => "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0",
  CURLOPT_URL => "https://www.nseindia.com/api/event-calendar?index=equities&from_date=05-05-2020&to_date=05-05-2020",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
));

$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);

if($error) {
    echo "cURL Error:" . $error;
} else {
    echo $response;
}
...