我们在 PHP 应用程序中使用curl HEAD 请求来验证通用链接的有效性。我们检查状态代码只是为了确保用户输入的链接有效。除 LinkedIn 外,所有网站的链接均已成功。
虽然它似乎可以在本地 (Mac) 上运行,但当我们尝试从任何 Ubuntu 服务器发出请求时,LinkedIn 会返回 999 状态代码。不是 API 请求,只是一个简单的卷曲,就像我们对每个其他链接所做的那样。我们在几台不同的机器上进行了尝试,并尝试更改用户代理,但没有成功。如何修改我们的curl 以便工作链接返回200?
HEAD 请求示例:
curl -I --url https://www.linkedin.com/company/linkedin
Ubuntu 机器上的示例响应:
HTTP/1.1 999 Request denied
Date: Tue, 18 Nov 2014 23:20:48 GMT
Server: ATS
X-Li-Pop: prod-lva1
Content-Length: 956
Content-Type: text/html
为了更好地回应@alexandru-guzinschi。我们尝试屏蔽用户代理。总结一下我们的试验:
- Mac机+Mac UA =>works
- Mac 机 + Windows UA =>works
- Ubuntu 远程计算机 +(无 UA 更改)=>fails
- Ubuntu 远程机器 + Mac UA =>fails
- Ubuntu 远程机器 + Windows UA =>fails
- Ubuntu 本地虚拟机(在 Mac 上)+(无 UA 更改)=>fails
- Ubuntu 本地虚拟机(在 Mac 上)+ Windows UA =>works
- Ubuntu 本地虚拟机(在 Mac 上)+ Mac UA =>works
所以现在我认为他们会阻止任何不提供备用 UA 的 url 请求also阻止托管提供商?
有没有其他方法可以从使用 PHP 的 Ubuntu 机器检查 linkedin 的链接是否有效,或者是否会导致 404 页面?
看起来他们根据用户代理过滤请求:
$ curl -I --url https://www.linkedin.com/company/linkedin | grep HTTP
HTTP/1.1 999 Request denied
$ curl -A "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" -I --url https://www.linkedin.com/company/linkedin | grep HTTP
HTTP/1.1 200 OK
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)