这个网站怎么知道我正在打开另一个标签?
Posted
技术标签:
【中文标题】这个网站怎么知道我正在打开另一个标签?【英文标题】:How does this site know that I am opening another tab? 【发布时间】:2012-11-07 11:07:38 【问题描述】:当我登录一个网站(我所在大学的“学习系统”)时,我发现我无法在打开相同网站的情况下打开新标签。当我这样做时,网站会以某种方式知道并显示以下消息?
网站到底怎么知道我在我的电脑上打开了哪些标签?据我所知,前端代码不应该访问我的私人浏览器信息。该网站可以使用哪些可访问的信息来确定我已经打开了另一个标签?
我正在使用私人计算机访问该站点,并且正在访问的站点不在本地网络上,而是通过 Internet 访问的。因此,没有可能导致这种情况的内部监控软件。我正在使用适用于 Mac 的 Google Chrome 24 Beta。
【问题讨论】:
如何打开新标签页?很有可能他们正在检查引荐来源网址,当它发现您没有引荐来源网址或您来自一个页面并登陆另一个不在“序列”中的页面时,它会弹出一个错误。它还可以使用会话变量/IP 组合来跟踪您正在查看的页面。 您是否会在打开新标签页或在新标签页中执行某些操作后立即看到此消息?如果您通过“在新标签中打开链接”选项打开标签,您会看到它吗? 我一打开新标签就看到了。 【参考方案1】:一种方法是通过 cookie 和 ID。首先,您登录到该站点并在那里进行会话。这是使用 cookie 管理的;每当您访问网站上的页面时,您的浏览器都会发送一个通常包含某种 id 的 cookie。这样,服务器就可以识别来自您的任何请求,真正来自您。因此,在这种情况下,您的原始标签和新标签都将发送相同的 cookie。
其次,它还可以为您在网站上提交的任何链接或表单添加另一个不同的 ID(称为页面 ID)。因此,页面上的表单可能包含 id 1234,并且任何链接也将包含该 id。您访问的每个新页面都可能包含一个新 ID。因此,在任何时候,站点都知道来自您浏览器的下一个请求(由 cookie 标识)也应该包含这个其他 id。如果您以正常方式浏览网站,点击链接,提交表单,这将是真的,一切都会好起来的。
您的下一个请求不会提交预期的第二个 id 的情况是:
-
您点击了返回按钮(您将发送一个旧页面 ID)
您打开一个新选项卡(这取决于浏览器,但如果它打开
您已经在原始选项卡中的同一页面,它将发送当前页面
id,而不是服务器期望的下一页 id)
无论哪种方式,您发送的请求都带有服务器不期望的页面 ID,它可以对您所做的事情做出最好的猜测。
【讨论】:
据我所知 - Chrome 在标签之间共享会话/cookie。【参考方案2】:他们在访问他们的网站时跟踪您的鼠标光标移动。这是吸引访客注意力的好方法。当您移动鼠标和希望关闭鼠标时,它们会以编程方式提出一些查询。
这是很好的用户体验。
【讨论】:
欢迎来到 SO!我知道您所指的技术,但对于一个我不确定这是好的用户体验——我遇到的最大烦恼之一是当我将鼠标移到窗口外并获得巨大的订阅优惠或“但是WAIT”试图诱使我留在网站上。不过,这不是重点——与这篇文章更相关的是,该网站如何检测使用键盘快捷键打开的选项卡?以上是关于这个网站怎么知道我正在打开另一个标签?的主要内容,如果未能解决你的问题,请参考以下文章