Google 如何掩盖搜索结果页面上链接的真实 URL?
Posted
技术标签:
【中文标题】Google 如何掩盖搜索结果页面上链接的真实 URL?【英文标题】:How does Google mask the real URLs of links on search results pages? 【发布时间】:2013-12-04 03:30:55 【问题描述】:以下我在最新版本的Chrome和Firefox以及IE11上测试,结果都是一样的。
如果您进行 Google 搜索,然后将鼠标悬停在搜索结果页面上的链接上,则浏览器窗口左下角显示的链接与 a
元素的实际 href
不同.
在我测试过的所有三个浏览器中,如果你在元素检查器中检查链接,你可以很容易地看到真正的链接(即www.google.com
),当检查器打开时,如果你再次将鼠标悬停在链接上,然后您会在浏览器窗口的左下角看到真正的 URL 链接。
我有两个关于这种行为的问题?
-
虽然问起来可能有点天真,但 Google 为什么要这样做?
Google 如何做到这一点?因为我在 Chrome、Firefox 和 IE11 中看到了这种行为,所以我认为这是一些 javascript 控制的行为(而不是一些浏览器控制的行为),但我从未听说这在 JavaScript 中是可能的。如果在 JavaScript 中是可能的,你是怎么做到的?
谢谢。
【问题讨论】:
当我在检查器打开的情况下将鼠标悬停在链接上时,我仍然在浏览器的角落看到www.google.com
URL。
+1 为 Barmar。我看到了同样的行为。
是的,你们都是对的。正如我在 PoByPobel 的回答中评论的那样,起初我并没有想到右键单击链接打开检查会导致 onmousedown
事件发生,并且 rwt
函数被触发。感谢您指出这一点。
【参考方案1】:
当用户点击href
时,
onmousedown
事件处理程序被执行
在默认行为开始之前。
这个时间范围是用来改变锚标签的href。
查看他们代码的简化版本:
<a
href="https://www.google.com/"
data-href='https://www.yahoo.com/'
onmousedown="this.href = this.dataset.href"
>Link</a>
【讨论】:
【参考方案2】:查看初始标记:
<a onmousedown="return rwt(this,'','','','3','AFQjCNF8xnW_qOvuZURbtcZUvB6zhKtRQw','35cXyZwuoZY8hBY1VfDr8Q','0CEAQFjAC','','',event)"
href="http://en.wikipedia.org/wiki/How_Do_You_Do_It%3F">
<em>How Do You Do It</em>? - Wikipedia, the free encyclopedia
</a>
最初,href
属性显示“真实”URL。但是当你点击链接时,rwt
函数将属性值更改为
http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&ved=0CEAQFjAC&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHow_Do_You_Do_It%253F&ei=8nSMUqXtLKfe4QSzwIDADQ&usg=AFQjCNF8xnW_qOvuZURbtcZUvB6zhKtRQw&sig2=35cXyZwuoZY8hBY1VfDr8Q&bvm=bv.56643336,d.bGE
回答您的问题:当您单击链接时,他们使用onmousedown
属性来更改链接的href
属性。 Barmar 指出他们这样做的原因。
【讨论】:
啊哈,我没看到,因为我右键点击链接使用Inspect element
,这改变了链接!
我也做了同样的事情。但在我看到onmousedown
属性后,我发现Google 已经更改了href
的值。所以我尝试了一个我还没有点击的链接;)
@PoByBolek,非常感谢这个好答案。像 Barmar 一样,我没有考虑到当我右键单击链接打开检查时,会导致鼠标按下事件发生。感谢您指出这一点。现在这几乎都说得通了。不过,我仍然有一个相关的后续问题,我将其作为对 Barmar 答案的评论发布。谢谢。
如果在结果页面上禁用了 javascript,结果从一开始就使用跟踪 url(而不是原来的)【参考方案3】:
结果页面中的链接指向 Google 服务器上的重定向页面。他们这样做是为了跟踪人们点击了哪些链接。这比使用 Javascript 更可靠,因为它不需要用户启用 Javascript。
您可以在 URL 的 url
参数中看到链接的最终目标。
【讨论】:
跟踪链接的使用不需要 JavaScript,但您还没有解释它们如何使最终目标出现在状态栏中。 @ruakh 即使不能解决完整的问题,也可以提供部分答案——请参阅我的问题meta @Barmar,非常感谢您的解释。不过,我对您的回答有一个后续问题。您提到 Google 所做的一切都是为了跟踪目的,这是一种可靠的技术,因为有些用户没有启用 JavaScript,但如果用户禁用了 JavaScript,那么链接的href
将永远不会更改,并且他们永远不会被定向到谷歌服务器,对吧?相反,它们将被直接带到实际的 URI,对吗?我只是想确保我没有误解任何事情。谢谢。
@HartleySan 理论上是的。但是 Google 不知何故注意到您禁用了 JavaScript,并且(神奇地)向您发送了不同的标记,其中所有 href
s 都包含 Google 重定向 URL。
他们可能使用<noscript>
来检测。以上是关于Google 如何掩盖搜索结果页面上链接的真实 URL?的主要内容,如果未能解决你的问题,请参考以下文章