3

Googleは、誰かが検索結果のリンクをクリックするとHTTPリファラーを設定します。このリファラーは、URLアドレスバーに表示されるアドレスとは異なります(たとえば、クリックされたリンクの検索結果の位置を示すGETパラメーターcdが含まれています)。

これはjavascriptで行われているようです。私は自分のウェブサイトで同様のことをしたいので、この「リファラー操作」がjavascriptでどのように正確に実行できるかを知りたいと思います。

何か案は?

4

1 に答える 1

3

結果リンクをクリックすると、Googleは独自のクリックプロキシを介してリダイレクトします。プロキシのアドレスはに表示されているものですReferer

例:http://www.google.czにアクセスして、「誰かが検索結果のリンクをクリックしたときに、GoogleはHTTPリファラーをどのように設定しますか?」を検索しました。その結果、次のリクエストが発生しました。

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リファラーを設定しますか? そのクリックは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://stackoverflow.com/questions/4402502/how-does-google-set-the-http-referrer-when-someone-clicks-on-a-search-result-link" 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://stackoverflow.com/questions/4402502/how-does-google-set-the-http-referrer-when-someone-clicks-on-a-search-result-link'"></noscript>

最終的に私を実際のURLに送りました:

GET https://stackoverflow.com/questions/4402502/how-does-google-set-the-http-referrer-when-someone-clicks-on-a-search-result-link 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を介して行われますが、サーバー側のコードも含まれています。

于 2010-12-09T20:01:09.663 に答える