我怎样才能在互联网上的文件版本而不是下载呢?(how can I get the file vers

2019-09-22 17:22发布

我得到一个文件的URL,例如, http://cidian.youdao.com/download/YoudaoDict.exe

我怎样才能得到它的版本,但不下载呢?

穷人1:如果你先下载到计算机上的文件中,有很多方法可以得到它的

版本,例如,你可以使用窗口工具“filever.exe”拿到的版本。

但我想不能下载它,至少不会下载它,我all.how可以做什么? 等待您的

救命! 谢谢。

穷人2:我试图获取该文件的一部分,以获取版本的方法:

第一,我使用了下载工具“wget.exe”下载该文件的一部分(wget.exe是

单线程下载工具,它可以确保下载表格头)

第二,我用“filever.exe”获得的文件版本。

这样一来,一些软件,我可以得到它的版本,但一些水湿(它们必须

下载)。我不知道为什么。

Answer 1:

我注意到,该特定的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规范 ,可以请求头500个字节与该请求头:

curl -H"Range: bytes=0-499" http://... -o bytes-0-499.dat


Answer 2:

版本号,如果有的话,被嵌入exe文件本身。 你必须下载至少在文件的一部分来检索元数据的这些位。

退房的.exe文件格式规范 。



Answer 3:

你可以做一个HTTP HEAD请求,服务器可能会报告中项目的大小的Content-Length 。 它也可能下一个报告版本Last-Modified头 。 此外, 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

正如你所看到的,在你的例子情况下,这三个头给出了,这样你就可以猜测基于该版本信息的变化。 我会经常检查,以确保日期和最后修改是不一样的,因为有时后者设定前者由脚本生成的页面。



Answer 4:

那么在理论上,这是那种一个任务的HTTP HEAD请求是专为,但IIRC唯一相关的信息你会在默认情况下得到(如果要求在所有课程的处理)将内容长度和最后修改。 编辑:和ETag的 !

这可能让你多,你需要知道什么,但如果你真的想要的版本号为你必须在Web服务的控制,并能够获取和附加信息的响应头。 不是很难做,但只有当你有服务的控制。



Answer 5:

如果你的目的是检测当一个新的版本可用,你可以看一个HEAD HTTP请求的响应,其他建议。

否则,你可以屏幕刮的( 下载页面 ),并提取了最新版本的详细信息。 有一个方便的<dl id="downloadSth">内的版本信息被列出并且可以令人信服地收获标签。 我不知道这是否将是可靠的; 该网站的作者可能,恕不另行通知改变这一点。

我想看看使用BeautifulSoup这一点。



文章来源: how can I get the file version on the Internet but not download it?