是否可以删除或隐藏请求标头中的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
答案 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)
答案 7 :(得分:-3)
你做不到。这是浏览器决定是否发送引用者。您可以做的是使用link anonymizer隐藏您的引用。
答案 8 :(得分:-4)
我也在寻找解决方案,幸运的是找到了这个Hide My Referrer网站。令我印象深刻的是它甚至适用于https&gt; https请求。
它将生成一个您可以使用的链接,它将完全符合您的要求。