【问题标题】:How to avoid "HTTP/1.1 999 Request denied" response from LinkedIn?如何避免来自 LinkedIn 的“HTTP/1.1 999 Request denied”响应?
【发布时间】: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 标记)。

【问题讨论】:

    标签: php curl amazon-web-services amazon-ec2 linkedin


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 是的,Guilherme。它与证书或用户代理无关。看起来 LinkedIn 已将 AWS 列入黑名单。
    • 浏览器如何在没有 API 的情况下获得访问权限?同样的方式,通过http。 LinkedIn 的 IP/子网禁止问题。我试图联系 LinkedIn 支持,他们不想用它做任何事情。他们忽略了这个问题,把我推到了论坛,这是行不通的。所以我来到了这里,也许这里有一些普通的linkedin员工。但看起来这里的大多数人都是官僚和一些愚蠢的家伙,他们并不真正理解这个问题。只有你想帮忙。
    • Guilherme,在这里提问之前我明白了。
    • @zoonman 你想强制访问,即使你的服务器的 IP 在阻止列表中?
    • @zoonman 如果您认为问题是 LinkedIn 强加的 审查,那么您的问题不在于 PHP,这对于 StackOverflow 来说不是问题,您应该谈谈到“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,一切又好了。
    猜你喜欢
    • 2013-08-13
    • 2013-01-26
    • 2012-04-10
    • 2019-02-09
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多