当某人点击搜索结果链接时,谷歌如何设置HTTP Referrer?

3

当有人点击搜索结果链接时,Google会设置一个HTTP Referrer。这个Referrer与URL地址栏中显示的地址不同(例如,它包含GET参数cd,指示所点击链接的搜索结果位置)。

看起来这是通过JavaScript实现的。我想在我的网站上做类似的事情,因此我很想知道如何使用JavaScript确切地进行“referrer manipulation”(引荐操纵)。

有任何想法吗?

1个回答

3
当您在谷歌结果链接上单击时,谷歌会通过自己的点击代理将您重定向 - 代理服务器的地址是您在“Referer”中看到的。
例如:我访问了http://www.google.cz,并搜索了“当某人单击搜索结果链接时,谷歌如何设置HTTP Referrer?”。 这导致了这个请求:
GET http://www.google.cz/search?hl=cs&source=hp&biw=1276&bih=866&q=How+does+Google+set+the+HTTP+Referrer+when+someone+clicks+on+a+search+result+link%3F&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=b29a84a7dd59af16 HTTP/1.1
Referer: http://www.google.cz/

接着,我点击了第一个结果链接:当有人点击搜索结果链接时,Google 如何设置 HTTP Referrer? 该点击被 JS 事件捕获并重定向到此重定向器:

GET http://www.google.cz/url?sa=t&source=web&cd=1&ved=0CBoQFjAA&url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4402502%2Fhow-does-google-set-the-http-referrer-when-someone-clicks-on-a-search-result-link&rct=j&q=How%20does%20Google%20set%20the%20HTTP%20Referrer%20when%20someone%20clicks%20on%20a%20search%20result%20link%3F&ei=WTgBTeOXLsHB8QPO44ybCA&usg=AFQjCNE22KabWH5TnkK1sRLGmqWQ4EvwxQ HTTP/1.1
Referer: http://www.google.cz/search?hl=cs&source=hp&biw=1276&bih=866&q=How+does+Google+set+the+HTTP+Referrer+when+someone+clicks+on+a+search+result+link%3F&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=b29a84a7dd59af16

包含此重定向代码段:

<body><a href="https://dev59.com/AVLTa4cB1Zd3GeqPbYsq" id=link target=_parent></body><script>var a=parent,b=parent.google,c=location;if(a!=window&&b){if(b.r){b.r=0;document.getElementById("link").click();}}else{document.getElementById("link").click();};</script><noscript><META http-equiv="refresh" content="0;URL='https://dev59.com/AVLTa4cB1Zd3GeqPbYsq'"></noscript>

最终将我发送到真正的URL:

GET https://dev59.com/AVLTa4cB1Zd3GeqPbYsq HTTP/1.1
Referer: http://www.google.cz/url?sa=t&source=web&cd=1&ved=0CBoQFjAA&url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4402502%2Fhow-does-google-set-the-http-referrer-when-someone-clicks-on-a-search-result-link&rct=j&q=How%20does%20Google%20set%20the%20HTTP%20Referrer%20when%20someone%20clicks%20on%20a%20search%20result%20link%3F&ei=WTgBTeOXLsHB8QPO44ybCA&usg=AFQjCNE22KabWH5TnkK1sRLGmqWQ4EvwxQ

所以,你是正确的——这里大部分的工作都是通过JavaScript完成的,尽管还涉及一些服务器端代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接