PHP伪造referer实例代码
时间:2008-09-22
来源:互联网
<?
$url=str_replace('/file.php/','',$_SERVER[\"REQUEST_URI\"]);//得出需要转换的网址。这里我就偷懒,不做安全检测了,需要的自己加上去
$downfile=str_replace(\" \",\"%20\",$url);//替换空格之类,可以根据实际情况进行替换
$downfile=str_replace(\"http://\",\"\",$downfile);//去掉http://
$urlarr=explode(\"/\",$downfile);//以\"/\"分解出域名
$domain=$urlarr[0];//域名
$getfile=str_replace($urlarr[0],'',$downfile);//得出header中的GET部分
$content = @fsockopen(\"$domain\", 80, $errno, $errstr, 12);//连接目标主机
if (!$content){//链接不上就提示错误
die(\"对不起,无法连接上 $domain 。\");
}
fputs($content, \"GET $getfile HTTP/1.0\r\n\");
fputs($content, \"Host: $domain\r\n\");
fputs($content, \"Referer: $domain\r\n\");//伪造部分
fputs($content, \"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n\r\n\");
while (!feof($content)) {
$tp.=fgets($content, 128);
if (strstr($tp,\"200 OK\")){ //这里要说明一下。header的第一行一般是请求文件的状态。具体请参照HTTP 1.1状态代码及其含义 hi.baidu.com/110911/blog/item/21f20d2475af812ed50742c5.html这里是正常的文件请求状态,只需直接转向就可以。其他状态的继续执行程序
header(\"Location
url\");
die();
}
}
//302 转向,大部分的防盗链系统都是先判断referfer,对了的话再转向真实的地址。下面就是获取真实的地址。
$arr=explode(\"\n\",$tp);
$arr1=explode(\"Location: \",$tp);//分解出Location后面的真时地址
$arr2=explode(\"\n\",$arr1[1]);
header('Content-Type:application/force-download');//强制下载
header(\"location:\".$arr2[0]);//转向目标地址
die();
?>
这段程序只能针对使用referer来判断是否盗链的防盗链系统,使用其他特殊方法防盗链的,这个估计就不适用了
$url=str_replace('/file.php/','',$_SERVER[\"REQUEST_URI\"]);//得出需要转换的网址。这里我就偷懒,不做安全检测了,需要的自己加上去
$downfile=str_replace(\" \",\"%20\",$url);//替换空格之类,可以根据实际情况进行替换
$downfile=str_replace(\"http://\",\"\",$downfile);//去掉http://
$urlarr=explode(\"/\",$downfile);//以\"/\"分解出域名
$domain=$urlarr[0];//域名
$getfile=str_replace($urlarr[0],'',$downfile);//得出header中的GET部分
$content = @fsockopen(\"$domain\", 80, $errno, $errstr, 12);//连接目标主机
if (!$content){//链接不上就提示错误
die(\"对不起,无法连接上 $domain 。\");
}
fputs($content, \"GET $getfile HTTP/1.0\r\n\");
fputs($content, \"Host: $domain\r\n\");
fputs($content, \"Referer: $domain\r\n\");//伪造部分
fputs($content, \"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n\r\n\");
while (!feof($content)) {
$tp.=fgets($content, 128);
if (strstr($tp,\"200 OK\")){ //这里要说明一下。header的第一行一般是请求文件的状态。具体请参照HTTP 1.1状态代码及其含义 hi.baidu.com/110911/blog/item/21f20d2475af812ed50742c5.html这里是正常的文件请求状态,只需直接转向就可以。其他状态的继续执行程序
header(\"Location

die();
}
}
//302 转向,大部分的防盗链系统都是先判断referfer,对了的话再转向真实的地址。下面就是获取真实的地址。
$arr=explode(\"\n\",$tp);
$arr1=explode(\"Location: \",$tp);//分解出Location后面的真时地址
$arr2=explode(\"\n\",$arr1[1]);
header('Content-Type:application/force-download');//强制下载
header(\"location:\".$arr2[0]);//转向目标地址
die();
?>
这段程序只能针对使用referer来判断是否盗链的防盗链系统,使用其他特殊方法防盗链的,这个估计就不适用了
作者: 淡水 发布时间: 2008-09-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28