完美兼容各大浏览器获取HTTP

2019-12-21,,

后来查了一些相关资料,发现在IE 中通过 window.location.href 或者是 是无法获取HTTP_REFERER, 真是搞不懂 IE 的浏览器,很多浏览器运行的很好的东西,它就是不支持,最后没有办法,只能PHP伪造来源HTTP_REFERER的方法或者用JS来伪造。

IE可以识别的 HTTP_REFERER 提交是通过click 触发的事件或者是 Form 表单提交的请求,下面是根据网上的资料总结的一个方法:

<script>
function referURL(url){
var isIe=(document.all)?true:false;
if(isIe) {
var linka = document.createElement(‘a');
linka.href=url;
document.body.appendChild(linka);
linka.click();
}
else window.location = url;
}

var url=”//www.jb51.net”;
referURL(url);
</script>

这个方法先是用 document.all 来判断当前的浏览器是否是IE, 如果是的话就生成一个link,然后自动执行 onclick 事件,如果不是的话就用JS 跳转。这样在处理页面就可以得到 HTTP_REFERER 了

此方法在IE, Firefox, Safari , Chrome 测试通过

2. PHP利用curl伪造IP和来路HTTP Referrer

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, "//www.jb51.net/ ");  //构造来路
curl_setopt($ch, CURLOPT_HEADER, 1);
$out = curl_exec($ch);
curl_close($ch);

echo $out;

ip.php

<?php
function getClientIp() {
if (!empty($_SERVER["HTTP_CLIENT_IP"]))
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if (!empty($_SERVER["REMOTE_ADDR"]))
$ip = $_SERVER["REMOTE_ADDR"];
else
$ip = "err";
return $ip;
}
echo "IP: " . getClientIp() . "<br>";
echo "referer: " . $_SERVER["HTTP_REFERER"];

您可能感兴趣的文章:

  • php 伪造HTTP_REFERER页面URL来源的三种方法
  • PHP伪造来源HTTP_REFERER的方法实例详解
  • php中HTTP_REFERER函数用法实例
  • php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
  • php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
  • VBS伪造HTTP-REFERER的实现方法
  • asp Http_Referer,Server_Name和Http_Host
  • 一段ASP的HTTP_REFERER判断代码
  • ASP,PHP与.NET伪造HTTP-REFERER方法及防止伪造REFERER的方法
  • ASP,PHP与.NET伪造HTTP-REFERER方法及防止伪造REFERER方法探讨
  • ASP,PHP与.NET伪造HTTP-REFERER方法及防止伪造REFERER方法探讨
  • HTTP Referer详解及Referer控制

《完美兼容各大浏览器获取HTTP.doc》

下载本文的Word格式文档,以方便收藏与打印。