删除http referer

时间:2011-07-25 14:22:39

标签: http http-headers

是否可以删除或隐藏请求标头中的http引用信息? 我想删除使用javascript python或django中的脚本从我的网站转到其他网站的用户的http引用信息

示例:

Host    slogout.espncricinfo.com
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0    
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8    
Accept-Language en-us,en;q=0.5    
Accept-Encoding gzip, deflate    
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7    
Connection  keep-alive
Referer http://slogout.espncricinfo.com/index.php?page=index&level=login

9 个答案:

答案 0 :(得分:10)

Javascript中有一个跨浏览器解决方案,它使用动态创建的Iframes,检查proof of concept(免责声明:它使用了我为此目的而编写的一些JS库)。

答案 1 :(得分:5)

如果您只想隐藏完整的网址并且不介意保持您的域名公开,那么这个小的Javascript代码可以完成这项工作。

您的用户位于example.com/secret_url_we_want_to_hide,您的用户点击了一个应该将其发送到google.com的链接。但我们使用此代码而不是<a href="http://google.com">Go to Google</a>

a href="http://example.com/redirect.html#http://google.com">Go to Google</a>

其中/redirect.html是包含以下内容的HTML页面: (编辑:请参阅更新!)

<html><head></head><script>
window.location.replace(location.hash.substring(1));
</script></html>

Google.com会在引荐来源代码中看到http://example.com/redirect.html,但绝不会看到实际的example.com/secret_url_we_want_to_hide

<强>更新

Firefox的bug位于location.hash,解决方法如下:

<html><head></head><script>
workaround_hash=location.href.split('#').splice(1).join('#');
window.location.replace(workaround_hash);
</script></html>

答案 2 :(得分:4)

根据您使用的浏览器版本,有多种机制可以执行此操作。对于任何浏览器,如果目标是通过HTTP,您可以通过重定向到HTTPS页面来“清洗”原点,然后导航到目标页面。

对于IE,您可以使用JavaScript(例如window.open)执行导航,这将抑制引用。或者你可以使用META Refresh,但是有一个性价比。对于基于WebKit的浏览器,请参阅NoReferrer LINK REL选项:http://www.webkit.org/blog/907/webkit-nightlies-support-html5-noreferrer-link-relation/

答案 3 :(得分:1)

我一直在寻找类似的解决方案,空白引荐来源,但只计算来自推荐网站的独特访问次数。我遇到的问题是,如果有人从特定链接访问我的网站,访问计数器会上升,但如果该人刷新页面,则访问者计数器仍在上升。

我使用google访问了有关此主题的几个资源,是的,在有人指示我查看php.net解决方案之前,找到答案非常困难。

我找到了使用

的解决方案
header('Refresh: 0; url=index.php');

但只是上面的代码不是解决方案。解决方案在于它的位置。这是完整的代码:

$ref=@$_SERVER[HTTP_REFERER];
$domain = parse_url($ref, PHP_URL_HOST);

If ($domain === "google.com") 
    {
        header('Refresh: 0; url=index.php'); //Resets header info to host site so that on page refresh, the hit counter does not
    }                                        // increase but increases only when someone visits from google url again

&#34;刷新&#34;后,标题信息会更改为主机站点的信息,因此在页面上刷新&#34;如果&#34;声明不会验证,点击计数器也不会增加。

您可以将您的点击计数器放在IF块中。您还可以编写不同的参数来记录您网站的空白点击和不同的参数,以便记录所有页面加载/网页浏览量。

希望它有所帮助.....

答案 4 :(得分:0)

您无法通过javascript访问Referer标头。就像http中的User-Agent标头一样,javascript无法访问referer等。这些标头的值由浏览器提供。如果你需要,你可以做的是一些棘手的工作。

答案 5 :(得分:0)

还有另一种方法是使用history.replace() method来隐藏查询字符串,例如,如果您想http://example.com/search?q=100替换为http://example.com/search,则可以通过以下方式执行此操作:

history.replace(null,null,'search')

希望这有帮助! :d

答案 6 :(得分:0)

<meta name="referrer" content="no-referrer"/>

如果在页面上放置上述代码,则所有传出链接(用户点击)将不会发送引荐来源信息

Documentation

答案 7 :(得分:-3)

你做不到。这是浏览器决定是否发送引用者。您可以做的是使用link anonymizer隐藏您的引用。

答案 8 :(得分:-4)

我也在寻找解决方案,幸运的是找到了这个Hide My Referrer网站。令我印象深刻的是它甚至适用于https&gt; https请求。

它将生成一个您可以使用的链接,它将完全符合您的要求。