完美兼容各大浏览器获取HTTP_REFERER方法总结
后来查了一些相关资料,发现在IE中通过window.location.href或者是是无法获取HTTP_REFERER,真是搞不懂IE的浏览器,很多浏览器运行的很好的东西,它就是不支持,最后没有办法,只能PHP伪造来源HTTP_REFERER的方法或者用JS来伪造。
IE可以识别的HTTP_REFERER提交是通过click触发的事件或者是Form表单提交的请求,下面是根据网上的资料总结的一个方法:
<script>
functionreferURL(url){
varisIe=(document.all)?true:false;
if(isIe){
varlinka=document.createElement(‘a');
linka.href=url;
document.body.appendChild(linka);
linka.click();
}
elsewindow.location=url;
}
varurl=”https://www.nhooo.com”;
referURL(url);
</script>
这个方法先是用document.all来判断当前的浏览器是否是IE,如果是的话就生成一个link,然后自动执行onclick事件,如果不是的话就用JS跳转。这样在处理页面就可以得到HTTP_REFERER了
此方法在IE,Firefox,Safari,Chrome测试通过
2.PHP利用curl伪造IP和来路HTTPReferrer
referer.php
<?php
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://mydomain.com/ip.php");
curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-FORWARDED-FOR:8.8.8.8','CLIENT-IP:8.8.8.8'));//构造IP
curl_setopt($ch,CURLOPT_REFERER,"https://www.nhooo.com/");//构造来路
curl_setopt($ch,CURLOPT_HEADER,1);
$out=curl_exec($ch);
curl_close($ch);
echo$out;
ip.php
<?php
functiongetClientIp(){
if(!empty($_SERVER["HTTP_CLIENT_IP"]))
$ip=$_SERVER["HTTP_CLIENT_IP"];
elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];
elseif(!empty($_SERVER["REMOTE_ADDR"]))
$ip=$_SERVER["REMOTE_ADDR"];
else
$ip="err";
return$ip;
}
echo"IP:".getClientIp()."<br>";
echo"referer:".$_SERVER["HTTP_REFERER"];热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下