飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

关于隐藏来路 Referrer 的方法探讨

Author:飘易 Source:飘易
Categories:电脑技术 PostTime:2014-10-22 0:34:50
正 文:
    关于隐藏来路 Referrer 在某些情况下很有用,国外网赚界使用的非常广泛。比如流量提供方由于不想让联盟知道自己的流量来源,就需要隐藏自己来源网站的 referer。今天飘易就来简单分享下我自己的心得。

    先看如何获取这个来路:
js: document.referrer
php: echo $_SERVER['HTTP_REFERER'];

    最开始,大家使用的技术一般是 DMR (Double Meta Refresh) ,即两次meta refresh 刷新,这种技术对于ie浏览器,目前为止还有有效果。但是对于chrome、Safari、firefox浏览器就不一定可行,存在泄漏的风险。

    目前为了保险起见,飘易觉的还有以下几个方式,可以同时采用:
    1、Meta Refresh
    这个就不说了,很简单,页面2次跳转刷新。

    2、Javascript Location Replace
    replace 方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。
    语法: location.replace(URL)   
    如果有这种应用: 需要重新加载该页面,也就是说期望页面能够在服务端重新被创建,期望是 Not IsPostback 的,这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。
代码: location.replace(location.href);

    3、iFrame Parent Post
    使用示例一:
<html>
<head>
<script>
function load(){
    var postdata = '<form id="dynForm" method="POST" action="http://www.piaoyi.org/" target=
"_top">' +
                   '<input type=hidden name="uname" value="piaoyi" />' +
                   '<input type=hidden name="pwd" value="123456" />' +
                   '</form>';
    top.frames[0].document.body.innerHTML=postdata;
    top.frames[0].document.getElementById('dynForm').submit();
}
</script>
</head>
<body onload="load()">
<iframe src="about:blank" id="noreferer"></iframe>
</body>
</html>

    使用示例二:
function open_without_referrer(link){
document.body.appendChild(document.createElement('iframe')).src='javascript:"<script>top.location.replace(\''+link+'\')<\/script>"';
}

    4、Flash getURL Function
    这点是利用Flash里面的 getURL 函数打开新页面。比如 getURL(open_url,'_blank'); 就可以在新窗口中打开指定url。
    但是经过飘易的测试,flash跳转也不靠谱了。在chrome、firefox下都泄漏了来路referer信息。只有在ie下 才没有了JS的来路,但是php的来路 $_SERVER['HTTP_REFERER']  还是有值,指向具体的 swf 文件。

    flash跳转示例:
    网页代码:
<!--flash引用代码-->
<object id="open_url" width="25" height="20" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" >
    <param name="movie" value="piaoyi.org_open_url.swf?callback=get_url" />
    <param name="quality" value="high" />
    <param name="wmode" value="transparent" />
    <embed width="25" height="20"  src="piaoyi.org_open_url.swf?callback=get_url" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent"/>
</object>
<script type="text/javascript">
    function get_url(){
        return 'http://www.piaoyi.org/';
    }

</script>

    新建个flash,添加个button, 在动作中粘贴如下代码:
    on (release) { 
        import flash.external.ExternalInterface;
        loadVariablesNum('','callback');//获取js回调函数名称,存放在callback变量中
        if(callback!=''){
            open_url=ExternalInterface.call(callback);//调用js程序,获取url
            if(open_url!=undefined){
                getURL(open_url,'_blank');//在新窗口打开链接 
            }
        }
    }

    5、HTTPS跳到HTTP
    由于HTTPS是加密传输,出于安全需要,避免泄露用户的隐私(如银行支付系统的账户私人敏感信息来源) ,几乎所有主流浏览器都遵守了 RFC-2616规范,在 https 页面 来到 http 页面时,不会发送 referer 信息。 要做到这点,就需要自行架设https环境,需要考验技术了。

    注意,我说的是几乎所有主流浏览器,但是就有个别浏览器为了自身的利益,不遵守规范。比如手机端的安卓/苹果 UC浏览器,即使是由HTTPS 来到 HTTP页面时,如果用户是从 UC自己的神马搜索点击搜索结果后来到HTTP页面时,然后跳转到 https 再跳到 http 时,神马搜索的来路referrer依然被 uc浏览器发送过来了。

    UC浏览器耍流氓啊。与此类似的还有 小米miui系统里自带的小米浏览器,有的时候也会偷偷发送这个referer。

    附注:RFC-2616规范第15.1.3条
15.1.3 Encoding Sensitive Information in URI's

   Because the source of a link might be private information or might
   reveal an otherwise private information source, it is strongly
   recommended that the user be able to select whether or not the
   Referer field is sent. For example, a browser client could have a
   toggle switch for browsing openly/anonymously, which would
   respectively enable/disable the sending of Referer and From
   information.

   Clients SHOULD NOT include a Referer header field in a (non-secure)
   HTTP request if the referring page was transferred with a secure
   protocol.

    6、使用标签:rel="noreferrer"
    目前基于webkit内核的比如chrome、Safari浏览器均支持该标签。

    7、html data URI scheme
    使用内嵌的方式,不会发起二次请求。
作者:飘易
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:没有了
下一篇:LNMP安装Pureftpd FTP服务器以及问题汇总
0条评论 “关于隐藏来路 Referrer 的方法探讨”
No Comment .
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2019 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有