【问题标题】:How to detect that the URLs navigate to the same webpage如何检测 URL 导航到同一网页
【发布时间】:2014-03-13 20:44:59
【问题描述】:

我正在使用webbrowser 工具尝试构建我自己的浏览器。 我在做的事情是历史部分。

当文档完成导航时,我在我的数据库中搜索它的 URL,如果它的 URL 不存在,那么我将它添加到历史记录中,否则我只是在数据库中增加这个页面的 "counter"

问题是,当我每次输入一些页面时,它都会给我不同的 URL,但它是同一个页面!例如google.com,当我导航到它时,它会第一时间给我(例如):https://www.google.co.il/?gws_rd=cr&ei=eBP-UtPCOMi84ASukoCAAw

我第二次导航:

https://www.google.co.il/?gws_rd=cr&ei=rhP-UpW6CYG54ATAqIHIDg

有没有办法确定这两个网址都指向同一个页面??

我正在尝试这样做,因为当我将历史记录加载到我的应用程序时,会加载许多指向同一页面的 URL。

感谢任何帮助,提前谢谢

【问题讨论】:

  • 这取决于你所说的 same 页面是什么意思?如果您忽略 URL 的查询字符串部分,那么您就有页面的入口点,但这并不一定意味着它是同一页面。查询字符串可能是所服务数据的组成部分。

标签: c# url webpage


【解决方案1】:

我个人希望我的浏览器通过 URL 而不是内容来获取历史记录(据我所知,这正是您实际尝试做的事情)。但是,如果您想避免这些多个条目,您可能会为该页面收到的每个 content 计算一个哈希码并增加您的计数器。

问题是您无法知道服务器将使用该 URL 做什么。今天可能一样,明天可能不同。我也不会只选择没有参数的 URL,因为在其他页面上,参数可能会产生非常重要的影响。

另一个注意事项:如果您对内容进行哈希处理,您可能希望排除诸如 404 页面之类的内容(可能会出现在不同的 URL 中,并且不应将其分组在同一个哈希下。)

【讨论】:

  • 哈希部分不够可靠,想想像 BBC news 这样的网站 - 主页上的内容一直在变化,但 URL 总是一样。
【解决方案2】:

您可以使用 Uri 对象并请求 AbsolutePath 属性

【讨论】:

  • 它不起作用,两个 URL 都是 '/',我注意到两个 URL 的 Host 属性都是 www.google.com...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 2011-07-10
  • 1970-01-01
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多