Как избежать & quot; HTTP / 1.1 999 Запрос отклонен & quot; ответ от LinkedIn?

Я отправляю запрос на страницу 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-теги).

2

Решение

Обратите внимание, что ошибка 999 не существует в Протокол передачи гипертекста W3C — HTTP / 1.1, вероятно, эта ошибка настроена (звучит как шутка)

LinkedIn не разрешает прямой доступ, вероятная причина того, что они блокируют любой «URL» от доступа других веб-серверов:

  1. Предотвратить несанкционированное копирование информации
  2. Предотвратить вторжения
  3. Предотвратить злоупотребление запросами.
  4. Принудительное использование API

Некоторые IP-адреса серверов заблокированы, так как «IP» от «внутреннего провайдера» не блокируются и что при доступе к LinkedIn с помощью веб-браузера вы используете IP вашего интернет-провайдера.

Единственный способ получить доступ к данным — использовать их API. Увидеть:

Примечание: поисковые системы, такие как Google а также Bing вероятно, их IP-адреса в «белом списке».

6

Другие решения

<?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;
4

LinkedIn не поддерживает кодировку по умолчанию «identity», поэтому, если вы установите заголовок

‘Accept-Encoding’: ‘gzip, deflate’

вы должны получить ответ, но вам придется распаковать его.

1

Я столкнулся с этим, когда занимался локальной веб-разработкой и использовал функцию значка LinkedIn (profile.js). Я только получал 999 Request denied в Chrome, поэтому я просто очистил кеш браузера и localStorage, и он снова начал работать.

ОБНОВЛЕНИЕ — Очистка кэша была просто совпадением, и проблема вернулась. У LinkedIn есть проблемы с их функциональностью значка.

Я разместил ветку помощи на их форумах.
https://www.linkedin.com/help/linkedin/forum/question/714971

0
По вопросам рекламы [email protected]