【问题标题】:Accessing a user's history using JS使用 JS 访问用户的历史记录
【发布时间】:2012-10-12 10:59:44
【问题描述】:

我不是在寻找代码/方法。只是知识。

一位客户刚刚向我们提出了一个问题:我们能否从横幅广告中访问用户的历史记录,以便根据他们的历史记录为他们提供一些有针对性的广告。

显然,这存在隐私问题,但我需要说明为什么它在技术上不是一个可行的选择。

所以我有几个问题......

  1. 哪些浏览器仍然支持使用window.history访问用户历史记录(如果有)。
  2. 如果有的有,有的没有。那些不允许的人什么时候不再允许了?
  3. 如果所有浏览器都允许(我还没有找到有效的脚本),为什么它不常用?

最后, 在 Amazon.co.uk 上之后,我访问了 Macrumors.com,广告根据我购买/看过的产品为我提供广告。我猜这只是基于 cookie/亚马逊实施的系统?

只是为了说清楚:

  • 我知道这是一个隐私问题。我不是在寻找代码/方法(如上所述)
  • 有一些方法可以“嗅探”页面中的已访问链接。
  • 曾经有一种方法使用 JavaScript history 对象来列出历史记录中的所有对象(来自当前站点)。 history.length 现在仍然有效。我似乎记得有些浏览器只为每个项目返回undefined,有些则将它们返回为不可读的object

【问题讨论】:

  • “历史”是什么意思?您是指可以使用后退和前进按钮导航的浏览器对象,还是访问网站的历史记录?
  • 访问网站的历史...
  • 可以使用document.referrer访问之前访问过的页面的URL,但不能访问浏览器的全部历史记录。

标签: javascript cross-browser browser-history


【解决方案1】:

不!

没有任何浏览器(据我所知)可以合法地让您访问用户的浏览历史记录。

incidents 可以通过 exploiting certain behaviors of the browser 这样做。最近,在 Firefox 16 中有一个vulnerability,如果利用得当,您可以窥探用户的浏览历史记录。

在您描述的情况下(亚马逊),是的,使用了 cookie。更准确地说,使用Third-Party Cookies

更新: 我对你上次的编辑很感兴趣(关于 history 过去完全开放),所以我试着回去一点。

【讨论】:

  • 我还能问为什么我被否决了吗?为什么这个答案现在被删除了?
  • 另外,我的问题仍然有效:window.history 对象曾经是一个历史项目数组(其中包含 url)。它现在是一个受保护的数组(在 firebug 中运行:window.history[0])... 那么它什么时候变成了一个无法访问的受保护对象,它是为了响应安全、隐私还是两者兼而有之?
  • @sparkyfied,我不确定我是否可以代表其他人回答,但我投了反对票,因为它有点离题,而且我没有看到你的任何努力。至于你的新问题,可以查看History Interface specs
  • 我不同意,我对此进行了研究,我知道 window.history 过去是如何工作的,但是我无法找到某些信息,例如浏览器停止支持时以及是否有任何浏览器仍然支持它?我觉得我收到的答案不是基于所提问题的答案,而是对隐私问题的下意识反应。我会谦虚地要求重新阅读该问题并取消您的反对票。
  • 另外,我不确定如何将这个问题定义为离题?
猜你喜欢
  • 2014-06-10
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 2013-05-21
  • 2011-04-02
  • 1970-01-01
相关资源
最近更新 更多