我得到一个文件url,例如http://cidian.youdao.com/download/YoudaoDict.exe。
如何获取其版本但不下载?
注意1:如果你先把文件下载到你的电脑上,有很多方法可以获取它
版本,例如,您可以使用窗口工具"filever.exe“来获取版本。
但我不想下载它,至少不下载它all.how我能做什么?等待你的
帮助!谢谢。
注意2:我已经尝试了获取文件的一部分以获取版本的方法:
首先,我使用下载工具" wget.exe“下载了文件的一部分(wget.exe是
一个单线程的下载工具,它可以确保从头部下载)
其次,我使用"filever.exe“来获取文件版本。
通过这种方式,有些软件我可以得到它的版本,但有些软件不能(它们必须都是
下载).I不知道为什么。
发布于 2009-08-10 06:24:15
我注意到那个特定的exe链接支持字节范围请求。
$ curl -I http://cidian.youdao.com/download/YoudaoDict.exe
HTTP/1.1 200 OK
...
Accept-Ranges: bytes
Content-Length: 4820792
...
Content-Type: application/octet-stream您可以发出一个或多个HTTP字节范围请求,以获取确定版本所需的文件部分。如果文件在您的硬盘上,您可能会多次请求获取文件的各个部分。
例如,基于HTTP/1.1 spec,您可以使用此请求头部请求前500个字节:
curl -H"Range: bytes=0-499" http://... -o bytes-0-499.dat发布于 2009-08-10 06:01:35
版本号(如果有)嵌入在.exe文件本身中。您必须至少下载文件的一部分,才能检索这些元数据。
查看.exe file format spec。
发布于 2009-08-10 06:15:43
您可以执行HTTP HEAD请求,服务器可能会以Content-Length格式报告项目的大小。它还可能在Last-Modified header下报告一个版本。此外,ETag可能出于相同的目的而存在。
您可以使用netcat进行测试:
> nc cidian.youdao.com 80
HEAD /download/YoudaoDict.exe HTTP/1.1
Host: cidian.youdao.com
HTTP/1.1 200 OK
Date: Mon, 10 Aug 2009 06:11:59 GMT
Server: Apache
ETag: "Dcm1w6Vxg51"
Last-Modified: Sat, 08 Aug 2009 02:18:40 GMT
Accept-Ranges: bytes
Content-Length: 4820792
X-Request-Received: t=1249884719506801
X-Request-Processing-Time: D=906244
Content-Type: application/octet-stream正如您所看到的,在您的示例中,所有三个头都已给出,因此您可以根据该信息猜测版本更改。我总是检查以确保Date和Last-Modified不同,因为对于脚本生成的页面,有时后者被设置为前者。
https://stackoverflow.com/questions/1253282
复制相似问题