【问题标题】:Can I check a website's status without actually download its content?我可以在不实际下载内容的情况下检查网站的状态吗?
【发布时间】:2020-10-07 11:44:31
【问题描述】:

我使用以下函数从 API 获取一些内容。这里的问题是,有一个速率限制,我在检查 URL 时通常会超过这个限制。因此,我想知道是否有另一种方法可以在不打开 URL 的情况下检查它们。

Updated <- function(x){http_error(GET(x))}

抱歉,没有真正的方法可以制作出好的样本

【问题讨论】:

    标签: r http url get ratelimit


    【解决方案1】:

    真是个好问题,这有时非常有用!也许您可以尝试运行curlGetHeaders() 函数。它位于基础 R 中,因此您无需安装任何软件包。只需输入:

    curlGetHeaders("https://stackoverflow.com/")
    

    这应该只询问 HTTP 标头,而不是内容(就像运行命令行 curl -I),因此它可能会绕过您的速率限制(但也可能不会,这取决于 API 提供商,您需要先试试看)。

    如果要获取 HTTP 状态,只需运行:

    # get all HTTP headers
    headers <- curlGetHeaders("https://stackoverflow.com/")
    
    # get HTTP status code
    http_status <- attributes(headers)$status
    #> http_status
    # [1] 200
    
    # or full status header
    headers[1]
    # [1] "HTTP/1.1 200 OK\r\n"
    

    有关详细信息,请参阅documentation 或在您的 R 控制台中输入 ?curlGetHeaders

    希望这会有所帮助!

    【讨论】:

    • 我检查了这个方法。但是,我现在只收到大量 404 错误。这可能是由于防火墙的问题,对吧?还是有其他解释?我这样尝试过:更新了
    • PS:对不起,我没有弄清楚如何在 cmets 中将文本格式化为代码
    • @wwnpo01 如果您收到 HTTP 404 状态码,请尝试打印出所有标头(上面代码中的headers)。也许这真的是网络服务器的响应(你有正确的 url 地址吗?),否则你可以找出标题中的问题(防火墙等)。
    • 谢谢,网址是正确的 :) 无论如何我会检查标题 :)
    • @wwnpo01 试试看,也许你这边没有错误,你会在标题中看到一些奇怪的东西,比如服务器错误或缺少重定向等......你的代码似乎没问题。
    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2022-11-24
    相关资源
    最近更新 更多