【问题标题】:How to find when a web page was last updated如何查找网页上次更新的时间
【发布时间】:2014-07-01 21:43:51
【问题描述】:

有没有办法查出网页被更改后经过了多长时间?

例如, 我有一个页面托管在:www.mywebsitenotupdated.com

有没有办法知道这个 HTML 页面是什么时候上传到服务器的?

我无法访问服务器;只是一个网页链接。

【问题讨论】:

    标签: html upload


    【解决方案1】:

    不,您无法仅通过访问页面就知道页面上次更新或上次更改或上传到服务器的时间(根据解释,这可能是三个不同的事情)。

    服务器可以并且应该(根据 HTTP 1.1 协议)发送Last-Modified header,您可以通过多种方式找到它,例如使用Rex Swain’s HTTP Viewer。但是,根据协议,这只是

    “源服务器认为最后修改变体的日期和时间”。

    并且协议实际上添加了:

    “这个头域的确切含义取决于源服务器的实现和原始资源的性质。对于文件,它可能只是文件系统的最后修改时间。对于具有动态包含部分的实体,它可能是其组成部分的最后修改时间集合中的最新时间。对于数据库网关,它可能是记录的最后更新时间戳。对于虚拟对象,可能是最后一次内部状态发生变化。”

    实际上,网页通常是通过内容管理系统或其他方式动态创建的,在这种情况下,Last-Modified 标头通常会显示创建响应的数据戳,这通常非常接近于请求。这意味着在这种情况下,标头实际上是无用的。

    即使在“静态”页面的情况下(服务器只需选择与请求匹配的文件并将其发送),Last-Modified 日期戳通常也仅表示对服务器上文件的最后一次写入访问。这可能与文件从备份副本恢复的时间有关,或者文件在服务器上编辑而不对内容进行任何更改的时间,或者文件上传到服务器的时间,可能会替换旧的相同的副本。在这些情况下,假设时间戳在技术上是正确的,它表示页面未更改的时间(但不一定是上次更改的时间)。

    【讨论】:

    • Last-Modified 标头是正确的,但是可以根据服务器对 HEAD 请求的响应以及对特定主机的服务器及其内容的了解以及它们的方式做出一些有根据的猜测生成它;窥探他们的页面并在连接上使用嗅探器可以发现很多信息。
    【解决方案2】:

    打开浏览器控制台(?)并输入以下内容:

    javascript:alert(document.lastModified)
    

    【讨论】:

    • 您也可以在控制台中打印出来。只需输入 document.lastModified
    • 下面的答案应该是公认的答案,因为动态页面是动态生成的,在这种情况下,这个命令毫无价值。尽管对于静态页面(如果您可以确定页面是真正静态的),这是一个有用的命令。
    • 你好。当我在控制台中搜索这个时:我得到了我系统的当前日期和时间:javascript:alert(document.lastModified) 不是实际日期
    • @raja777m 也许你正在为动态网页尝试这个
    • 如果网站移动了服务器,这会显示不正确的数据,不是吗?
    【解决方案3】:

    还有另一种查找页面更新的方法,这在某些情况下可能很有用(如果可行的话:)。

    如果该页面已被 Google 或 Wayback Machine 编入索引,您可以尝试找出他们保存的日期(这些方法不适用于任何页面,并且有一些限制,在此 webmasters.stackexchange question's answers 中进行了广泛调查。但在许多情况下,它们可以帮助您找出页面更新日期:

    1. 谷歌方式:链接https://www.google.com.ua/search?q=site%3Awww.example.com&biw=1855&bih=916&source=lnt&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2000%2Ccd_max%3A&tbm=
    2. 回程机方式:链接https://web.archive.org/web/*/www.example.com
      • 对于此 stackoverflow 页面回程机器 gives us 更多结果:Saved 6 times between June 7, 2014 and November 23, 2016.,您可以查看每个日期的所有已保存副本

    【讨论】:

    • Wayback machine 是一个了不起的工具!它会告诉您,对于给定页面,它的更新时间,但您也可以访问它对该页面所做的不同快照。您可以准确地检查您感兴趣的部分是否很旧或很新。 Wayback machine 是这个问题的真正答案。
    • Wayback 机器的 API 可让您按归档顺序查看页面所有版本的列表。然后,您可以扫描其中的几个以确定该页面何时不再存在。但是您必须提取每个版本并进行差异检查以查看上次修改的时间。
    【解决方案4】:

    要检查Last Modified 标头,您可以使用httpie (docs)。

    安装

    pip install httpie --user
    

    用法

    $ http -h https://martin-thoma.com/author/martin-thoma/ | grep 'Last-Modified\|Date'
    Date: Fri, 06 Jan 2017 10:06:43 GMT
    Last-Modified: Fri, 06 Jan 2017 07:42:34 GMT
    

    Date 很重要,因为它报告的是服务器时间,而不是您的本地时间。此外,并非每个服务器都发送Last-Modified(例如,超级用户似乎不这样做)。

    【讨论】:

      【解决方案5】:

      这是a Pythonic way来做的:

      import httplib
      import yaml
      c = httplib.HTTPConnection(address)
      c.request('GET', url_path)
      r = c.getresponse()
      # get the date into a datetime object
      lmd = r.getheader('last-modified')
      if lmd != None:
         cur_data = { url: datetime.strptime(lmd, '%a, %d %b %Y %H:%M:%S %Z') }
      else:
         print "Hmmm, no last-modified data was returned from the URL."
         print "Returned header:"
         print yaml.dump(dict(r.getheaders()), default_flow_style=False)
      

      脚本的其余部分包括存档页面和检查新版本的更改以及通过电子邮件提醒某人的示例。

      【讨论】:

        【解决方案6】:

        对我来说是

        article:modified_time
        

        在页面源中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-26
          • 1970-01-01
          • 1970-01-01
          • 2011-06-05
          • 2010-09-20
          • 2014-01-03
          • 1970-01-01
          相关资源
          最近更新 更多