Я делаю запрос на страницу LinkedIn и получаю ответ «HTTP / 1.1 999 Request denied». Я использую AWS / EC-2 и получаю этот ответ. На локальном хосте все работает отлично.
Это образец моего кода, чтобы получить 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);
Мне не нужен весь контент страницы, только метатеги (title, og-tags).
Обратите внимание, что ошибка 999 не существует в W3C Hypertext Transfer Protocol – 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-as-"); $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»
вы должны получить ответ, но вам придется его распаковать.