cURL是否适用于某些指定的网站?

时间:2014-09-14 11:18:12

标签: curl

为什么命令

  

$ curl www.facebook.com

不起作用,而命令

  

$ curl www.example.com

工作?某些网站是否有限制,通过cURL获取源代码

1 个答案:

答案 0 :(得分:1)

当您遇到卷曲问题时,首先要考虑的是--verbose选项,或者稍微不那么详细的表兄--include

$ curl --include www.facebook.com
HTTP/1.1 302 forced.302
Location: https://www.facebook.com/
Content-Type: text/html; charset=utf-8
X-FB-Debug: xJrxsrLiOuMwGBUSyUyXURhBdIcj/ZegnfeIReFcNxrtuMNv0+JivRudlLO4XIzq/Dy1CGgC14DUhCkrXUT3Rw==
Date: Sun, 14 Sep 2014 11:44:59 GMT
Connection: keep-alive
Content-Length: 0

现在您可以看到Facebook将您从http://www.facebook.com/重定向到https://www.facebook.com/,因为它确实希望您使用加密。当您请求新URL时,您将获得所需的HTML代码。您可以使用curl选项自动--location跟踪重定向。

这可以解决Facebook的问题,但对于其他网站,您可能遇到其他问题。

有些网站不喜欢卷曲和其他自动化工具;他们只想与真实的Web浏览器交谈。他们可能会回复空页或403 Forbidden等错误。如果您确实需要,可以通过将user agent字符串替换为--user-agent选项来解决此问题,但请同时确保不要通过插入适当的延迟来填充网站请求(通常几十秒之间。

有些网站使用AJAX技术,当您使用curl检索它们时,您只会看到没有有趣内容的网页框架,因为所有实际工作都是在JavaScript中完成的。在这种情况下,您可以制作AJAX请求并使用curl重现它们,或者使用无头浏览器引擎而不是卷曲的裸HTTP客户端。