php 伪造HTTP_REFERER页面URL来源的三种方法

php获取当前页面的前一个页面URL地址,即当前页面是从哪个页面链接过来的,可以使用$_SERVER['HTTP_REFERER'],但是这个来源页面的URL地址是可以被伪造和欺骗的,本文章向大家介绍伪造HTTP_REFERER页面URL的三种方法,需要的朋友可以参考一下。

$_SERVER['HTTP_REFERER']是php用来判断页面上级来源页面的一个超级变局变量了,我们可以使用$_SERVER['HTTP_REFERER']来判断是从哪个页面进入到此页面了,这样我们可以进行更好的跟踪了。

但是$_SERVER['HTTP_REFERER']也是可以被伪造欺骗的,有三种方法可以伪造和欺骗$_SERVER['HTTP_REFERER']

第一种方法:file_get_contents

$opt=array('http'=>array('header'=>"Referer: $refer"));
$context=stream_context_create($opt);
$file_contents = file_get_contents($url,false, $context);

file_get_contents中stream_context_create就伪造来源的重要参数了。

第二种方法:CURL

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://www.manongjc.com");
curl_setopt ($ch, CURLOPT_REFERER, "http://www.manongjc.com");
curl_exec ($ch);
curl_close ($ch); 

参数http://www.manongjc.com就是伪造的URL地址。

第三种方法:fsockopen

$server = 'www.manongjc.com';
$host = 'www.manongjc.com';
$target = 'index.php';
$referer = 'http://www.manongjc.com/'; // Referer
$port = 80;
$fp = fsockopen($server, $port, $errno, $errstr, 30);
if (!$fp){
 echo "$errstr ($errno)\n";
}else{
$out = "GET $target HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Referer: $referer\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)){
echo fgets($fp, 128);
}
fclose($fp);
}

上面三种方法中,第三种方法fsockopen性能和效果上是最好的,因此推荐大家使用第三种方法。

以上就是对PHP伪造HTTP_REFERER页面URL来源的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

(0)

相关推荐

  • PHP curl实现抓取302跳转后页面的示例

    PHP的CURL正常抓取页面程序如下: $url = 'http://www.baidu.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLO

  • php URL编码解码函数代码

    复制代码 代码如下: <?php $url = "http://www.jb51.net"; echo urlencode($url); //输出编码后的字符串 ?> 复制代码 代码如下: <?php $url = "http://www.jb51.net"; $newurl = urlencode($url); //首先对$url进行编码 echo urldecode($newurl); //输出解码后的字符串 ?>

  • PHP获取当前页面完整URL的实现代码

    javascript实现: 复制代码 代码如下: top.location.href   顶级窗口的地址 this.location.href  当前窗口的地址 PHP实现: 复制代码 代码如下: #测试网址:     http://localhost/blog/testurl.php?id=5//获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br>"; #localhost//获取网页地址 echo $_SERVER['PHP_SELF']

  • PHP获取当前页面URL函数实例

    本文实例讲述了PHP获取当前页面URL函数实例,分享给大家供大家参考.具体实现方法如下: 在PHP中,没有默认的Function来获取目前所在页面的URL,所以今天就向大家介绍一个在PHP获取当前页面完整URL的PHP函数. 函数代码如下,调用时只需要使用 curPageURL() 就行啦: 复制代码 代码如下: /* 获得当前页面URL开始 */ function curPageURL() {     $pageURL = 'http';     if ($_SERVER["HTTPS&quo

  • php获取当前页面完整URL地址

    使用PHP编写程序的时候,我们常常想要获取当前页面的URL.下面提供一个用于获取当前页面URL的函数以及使用方法: 示例一: <?php // 说明:获取完整URL function curPageURL() { $pageURL = 'http'; if ($_SERVER["HTTPS"] == "on") { $pageURL .= "s"; } $pageURL .= "://"; if ($_SERVER[&q

  • PHP获取当前页面完整URL的方法

    一.利用javascript实现: top.location.href 顶级窗口的地址 this.location.href 当前窗口的地址 二.利用PHP实现 http://localhost/PHP/XX.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']; #localhost //获取网页地址 echo $_SERVER['PHP_SELF']; #/PHP/XX.php //获取网址参数 echo $_SERVER["QUERY_STRING

  • PHP中使用cURL实现Get和Post请求的方法

    1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性,以及在PHP中如何运用它. 2.基本结构 在学习更为复杂的功能之前,先来看一下在PHP中建立cURL请求的基本步骤: (1)初始化 curl_init() (2)设置变量 curl_setopt() .最为重要,一切玄妙均在此.有一长串cURL参数可供设置,它们能指定URL请求的各个细节.要一次性

  • php的urlencode()URL编码函数浅析

    URLEncode的方式一般有两种,一种是传统的基于GB2312的Encode(Baidu.Yisou等使用),另一种是基于UTF-8的Encode(Google.Yahoo等使用). 本工具分别实现两种方式的Encode与Decode: 中文 -> GB2312的Encode -> %D6%D0%CE%C4 中文 -> UTF-8的Encode -> %E4%B8%AD%E6%96%87 Html中的URLEncode: 编码为GB2312的html文件中:http://s.jb

  • php获取当前网址url并替换参数或网址的方法

    一是PHP获取当前页面的网址: 复制代码 代码如下: //获得当前的脚本网址 function GetCurUrl() { if(!empty($_SERVER["REQUEST_URI"])) { $scriptName = $_SERVER["REQUEST_URI"]; $nowurl = $scriptName; } else { $scriptName = $_SERVER["PHP_SELF"]; if(empty($_SERVER[

  • php通过隐藏表单控件获取到前两个页面的url

    自己在学习过程中也遇到了类似的问题: 比如,后台是想做成这样子的: 但是实际则是这样的: 解决方法: 通过隐藏表单控件 <input type="hidden" name="prevurl" value="<?php echo $_SERVER['HTTP_REFERER']?>"> 这样$_SERVER['HTTP_REFERER']的值看上去就暂时存到了$_POST[prevurl]里. 其实这个方法的原理还是把上一个

随机推荐