希望很快,我有一项任务是查看 URL 在我们的 TFS 服务器上是否仍然有效,因为我正在做一些内务处理。
目前,我有一个需要检查的 URL 列表,我正在使用 CURL。问题是我有 1000 个 URL 需要检查,每个人都会自动下载一个文件。
有没有办法“伪造”下载?我的意思是,有没有一种方法可以让我在不实际下载文件的情况下确认 URL 是否有效,因为有 1000 个 URL,如果我要全部下载它们,这将花费大量时间来浏览,并且会占用硬盘空间?
提前致谢:)
<小时/>更新
TFS 是 Team Foundation Server,
这是我当前的测试代码;
curl -k -u $userPass $url --output test.zip
此代码 ^^^ 成功下载了我想要的文件,但一旦我添加“-v”来获取 header ,它就会破坏下载并给我一个 405 响应代码。
最佳答案
发出 HTTP HEAD 请求并仅下载 header ,这样您就可以检查它是否返回“HTTP 404 Not Found”或其他内容,您可以使用 -I
参数通过curl 来执行此操作,但对于大型列表,您不应该使用 cli 程序curl,您应该使用 libcurl curl_multi API,它可以使用异步连接同时检查数百甚至数千个 url,这比您从 cli 程序执行的任何操作都要快得多。此代码使用curl_multi API 使用 PHP 检查大型 URL 列表:https://stackoverflow.com/a/54353191/1067003
将该代码放入 .php 脚本中并从 php-cli 运行它应该比从 cli 程序curl 实现的任何操作都要快得多。
如果这对您来说仍然太慢,您可以使用 curl_multi C API 在 C/C++ 中重写它。 ,它的运行速度甚至比上面的 PHP 实现还要快~(PHP 使用的 CPU 明显多于 C 实现使用的 CPU。使用解释语言的缺点之一。不过,此时您的瓶颈可能是带宽,而不是 CPU)
关于linux - 有谁知道如何使用CURL下载 "fake"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59453842/