ответ cURL отличается от отклика в браузере - PullRequest
0 голосов
/ 18 ноября 2018

В одном из моих проектов мне необходимо получить содержимое верхнего / нижнего колонтитула с внешнего URL-адреса. Один из URL (скажем, это https://example.com/header) ведет себя странно, когда возвращаемое содержимое не соответствует ожидаемому.

Например, если я открою указанный URL-адрес в браузере, в исходном коде появится сообщение (PS: это не содержит никаких тегов html, head, body, как должно быть):

<ul>
   <li>Item 1</li>
   <li>Item 2</li>
   <li>Item 3</li>
   <li>Item 4</li>
   <li>Item 5</li>
</ul>

Однако, когда я звоню по тому же URL через cURL, ответ становится:

<ul>
   <li>Item 25</li>
   <li>Item 100</li>
</ul>

Конечно, я показываю очень упрощенную форму ответа, но между ними есть существенная разница.

Код, который я использую:

$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c,CURLOPT_SSL_VERIFYHOST,0); // $url is https, so had to use this
curl_setopt($c,CURLOPT_SSL_VERIFYPEER,0); // $url is https, so had to use this
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_VERBOSE, 0);

$user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0'
curl_setopt ($c, CURLOPT_USERAGENT, $user_agent); // this line was originally not being used, but I tried adding this to see if it helps - but it did not

$html = curl_exec($c);

if (curl_error($c))
    die(curl_error($c));

// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);

return $html;

Что я не уверен, так это то, что это что-то, что можно исправить с моей стороны, или я должен связаться с командой, которая управляет этими URL-адресами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...