如何避免来自 LinkedIn 的“HTTP/1.1 999 Request denied”响应?

Posted

技术标签:

【中文标题】如何避免来自 LinkedIn 的“HTTP/1.1 999 Request denied”响应?【英文标题】:How to avoid "HTTP/1.1 999 Request denied" response from LinkedIn? 【发布时间】:2015-02-18 16:57:25 【问题描述】:

我正在向 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); 

我不需要整个页面的内容,只需要元标记(标题、OG 标记)。

【问题讨论】:

【参考方案1】:

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

LinkedIn 不允许直接访问,他们阻止其他网络服务器访问的任何“url”的可能原因应该是:

    防止未经授权的信息复制 防止入侵 防止滥用请求。 强制使用 API

某些服务器的 IP 地址被阻止,因为来自“国内 ISP”的“IP”未被阻止,并且当您使用网络浏览器访问 LinkedIn 时,您使用的是您的互联网提供商的 IP。

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

Accessing LinkedIn public pages using Python Heroku requests return 999

注意:Google 和 Bing 等搜索引擎的 IP 可能在“白名单”中。

【讨论】:

是的,Guilherme。它与证书或用户代理无关。看起来 LinkedIn 已将 AWS 列入黑名单。 浏览器如何在没有 API 的情况下获得访问权限?同样的方式,通过http。 LinkedIn 的 IP/子网禁止问题。我试图联系 LinkedIn 支持,他们不想用它做任何事情。他们忽略了这个问题,把我推到了论坛,这是行不通的。所以我来到了这里,也许这里有一些普通的linkedin员工。但看起来这里的大多数人都是官僚和一些愚蠢的家伙,他们并不真正理解这个问题。只有你想帮忙。 Guilherme,在这里提问之前我明白了。 @zoonman 你想强制访问,即使你的服务器的 IP 在阻止列表中? @zoonman 如果您认为问题是 LinkedIn 强加的 审查,那么您的问题不在于 PHP,这对于 *** 来说不是问题,您应该谈谈到“LinkedIn Adm”需要解锁您的 IP(请注意,共享服务器通常具有随机的“IP”,因此无法解锁)。我编辑了我的答案,请阅读。【参考方案2】:
<?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;

【讨论】:

您能简要解释一下这应该有什么帮助吗?仅代码的答案很少很有帮助。 唯一重要的一行是 User-Agent,其他所有标题都可以删除,它仍然可以工作。 用户代理不足以链接进来。我试过了,从这个标题中重要的是这些 $header[] = "Accept: text/html,application/xhtml+xml,application/xml; q=0.9,/;q=0.8"; $header[] = "接受语言:en-US,en;q=0.5"; $header[] = "Accept-Encoding: gzip, deflate, br";【参考方案3】:

LinkedIn 不支持默认编码 'identity' ,所以如果你设置了 header

'Accept-Encoding': 'gzip, deflate'

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

【讨论】:

您还需要AcceptUser-Agent 标头。 我设置了以下标题但还没有工作:headers = 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 'referer': 'https://linkedin.com', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'en-US,en;q=0.8', 'cache-control': 'no-cache', 'pragma': 'no-cache', 'upgrade-insecure-requests': '1', 【参考方案4】:

我在进行本地 Web 开发并使用 LinkedIn 徽章功能 (profile.js) 时遇到了这个问题。我只在 Chrome 中获得了999 Request denied,所以我刚刚清除了我的浏览器缓存和 localStorage,它又开始工作了。

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

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

【讨论】:

谢谢,擦了cookie,一切又好了。

以上是关于如何避免来自 LinkedIn 的“HTTP/1.1 999 Request denied”响应?的主要内容,如果未能解决你的问题,请参考以下文章

将来自 Linkedin 帖子的评论整合回 Wordpress

基于 Kafka 和 ElasticSearch,LinkedIn是如何构建实时日志分析系统的?

从 Android 应用程序发布 LinkedIn 消息

Linkedin 999请求被拒绝

获取 r_liteprofile 和 r_emailaddress - api.linkedin.com/v2

Android中LinkedIn的Oauth 2.0授权