Accessing a user's history using JS

2019-07-04 12:03发布

问题:

I'm not looking for code/how to. Just knowledge.

A client has just come to us with a question: Can we access the user's history from within a banner advert to give them some targeted advertising based on their history.

Obviously, this presents a privacy issue, but I need to give a good case for why it is technically not a viable option.

So I have a few questions...

  1. Which browsers still, if any, support accessing a user's history, using window.history.
  2. If some do and some don't. When did those who don't allow it stop allowing it?
  3. If all browsers allow it (I have yet to find a script that works), why is it not commonly used?

Finally, Having been on Amazon.co.uk, I then go to Macrumors.com and the adverts give me adverts based on products I have bought/looked at. I'm guessing this is just based on cookies/a system that amazon has implemented?

Just to make things clear:

  • I know it is a privacy issue. I am not looking for code/a way to do it (as I mentioned above)
  • There are ways to "sniff" for visited links within a page.
  • There used to be a way using the JavaScript history object, to list all the objects within your history (from the current site). history.length still works now. I seem to remember some browsers only returning undefined for each item, some returning them as an unreadable object.

回答1:

No!

There's no browser (that I know of) that legitimately give you access to a user's browsing history.

There has been incidents where it was possible to do so by exploiting certain behaviors of the browser. Recently, in Firefox 16 there's a vulnerability that, if exploited properly, allows you to peek into the user's browsing history.

In the case you're describing (Amazon), yes, cookies are used. To be more accurate, Third-Party Cookies are used.

Update: I was very interested in your last edit (about history being completely open in the past), so I tried to go back a little.