如何避免" HTTP / 1.1 999请求被拒绝"来自LinkedIn的回复?

时间:2014-12-19 17:56:52

标签: php curl amazon-web-services amazon-ec2 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-tags)。

4 个答案:

答案 0 :(得分:6)

  

请注意,W3C Hypertext Transfer Protocol - HTTP/1.1中不存在错误 999 ,可能此错误是自定义的(听起来像个笑话)

LinkedIn不允许直接访问,这可能是他们阻止任何&#34; url&#34;来自其他网络服务器的访问应该是:

  1. 防止未经授权的信息复制
  2. 防止入侵
  3. 防止滥用请求。
  4. 强制使用API​​
  5. 服务器的某些IP地址被阻止,因为&#34; IP&#34;来自&#34;国内ISP&#34;未被阻止,当您使用网络浏览器访问LinkedIn时,您使用的是互联网提供商的IP。

    访问数据的唯一方法是使用他们的API。参见:

      

    注意:像GoogleBing这样的搜索引擎可能会将自己的IP置于&#34;白名单&#34;。

答案 1 :(得分:4)

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

答案 2 :(得分:1)

LinkedIn不支持默认编码'identity',因此如果设置标题

  

'接受编码':'gzip,deflate'

你应该得到回复,但你必须解压缩它。

答案 3 :(得分:0)

我在进行本地Web开发并使用LinkedIn徽章功能(profile.js)时遇到了这个问题。我只是在Chrome中使用var chars = new antlr4.InputStream(script);,所以我只是清除了浏览器缓存和localStorage,然后它又开始工作了。

更新-清除缓存只是一个巧合,问题又回来了。 LinkedIn的徽章功能存在问题。

我向他们的论坛提交了一个帮助主题。 https://www.linkedin.com/help/linkedin/forum/question/714971