PHP伪造referer实例代码


Posted in PHP onSeptember 20, 2008

这里就直接给出完整的程序吧,具体的应用可以自己修改。
我这里给出的例子是很简单的,其实可以从这个例子中发展出很多的应用。比如隐藏真实的URL地址……嘿嘿,具体的就自己分析去吧
这里新建一个文件file.php。后面的参数就是需要伪造referfer的目标地址吧。如:file.php/http://www.xxx.xxx/xxx.mp3

<? 
$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来判断是否盗链的防盗链系统,使用其他特殊方法防盗链的,这个估计就不适用了
PHP 相关文章推荐
也谈 PHP 和 MYSQL
Oct 09 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
php模板函数 正则实现代码
Oct 15 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
跟我学Laravel之路由
Oct 15 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
Yii框架常见缓存应用实例小结
Sep 09 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
PHP面向对象分析设计的经验原则
Sep 20 #PHP
php 301转向实现代码
Sep 18 #PHP
PHP Squid中可缓存的动态网页设计
Sep 17 #PHP
PHP cron中的批处理
Sep 16 #PHP
FleaPHP的安全设置方法
Sep 15 #PHP
用PHP调用Oracle存储过程的方法
Sep 12 #PHP
php5新改动之短标记启用方法
Sep 11 #PHP
You might like
截获网站title标签之家内容的例子
2006/10/09 PHP
php 安全过滤函数代码
2011/05/07 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
python del()函数用法
2013/03/24 Python
python如何求解两数的最大公约数
2018/09/27 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
在Django中实现添加user到group并查看
2019/11/18 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
小学生考试获奖感言
2014/01/30 职场文书
《去年的树》教学反思
2014/04/11 职场文书
餐饮投资计划书
2014/04/25 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
世界文化遗产导游词
2015/02/13 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书