Я отправляю запрос на страницу LinkedIn и получаю ответ «HTTP / 1.1 999 Request denied».
Я использую AWS / EC-2 и получаю этот ответ.
На localhost все работает нормально.
Это пример моего кода для получения html-кода страницы.
<?php
error_reporting(E_ALL);
$url= 'https://www.linkedin.com/pulse/5-essential-strategies-digital-michelle';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($response);
var_dump($info);
Мне не нужен весь контент страницы, только мета-теги (заголовок, og-теги).
Обратите внимание, что ошибка 999 не существует в Протокол передачи гипертекста W3C — HTTP / 1.1, вероятно, эта ошибка настроена (звучит как шутка)
LinkedIn не разрешает прямой доступ, вероятная причина того, что они блокируют любой «URL» от доступа других веб-серверов:
Некоторые IP-адреса серверов заблокированы, так как «IP» от «внутреннего провайдера» не блокируются и что при доступе к LinkedIn с помощью веб-браузера вы используете IP вашего интернет-провайдера.
Единственный способ получить доступ к данным — использовать их API. Увидеть:
Примечание: поисковые системы, такие как Google а также Bing вероятно, их IP-адреса в «белом списке».
<?php
header("Content-Type: text/plain");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.linkedin.com/company/technistone-a-s-");
$header = array();
$header[] = "Host: www.linkedin.com";
$header[] = "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0";
$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$header[] = "Accept-Language: en-US,en;q=0.5";
$header[] = "Accept-Encoding: gzip, deflate, br";
$header[] = "Connection: keep-alive";
$header[] = "Upgrade-Insecure-Requests: 1";
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
$my_var = curl_exec($ch);
echo $my_var;
LinkedIn не поддерживает кодировку по умолчанию «identity», поэтому, если вы установите заголовок
‘Accept-Encoding’: ‘gzip, deflate’
вы должны получить ответ, но вам придется распаковать его.
Я столкнулся с этим, когда занимался локальной веб-разработкой и использовал функцию значка LinkedIn (profile.js). Я только получал 999 Request denied
в Chrome, поэтому я просто очистил кеш браузера и localStorage, и он снова начал работать.
ОБНОВЛЕНИЕ — Очистка кэша была просто совпадением, и проблема вернулась. У LinkedIn есть проблемы с их функциональностью значка.
Я разместил ветку помощи на их форумах.
https://www.linkedin.com/help/linkedin/forum/question/714971