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的安全策略
Oct 09 PHP
PHP脚本的10个技巧(6)
Oct 09 PHP
特转载一高手总结PHP学习资源和链接.
Dec 05 PHP
php你的验证码安全码?
Jan 02 PHP
PHP技术开发技巧分享
Mar 23 PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 PHP
PHP中数组的三种排序方法分享
May 07 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
CodeIgniter记录错误日志的方法全面总结
May 17 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
php curl操作API接口类完整示例
May 21 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
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
拖拉表格的JS函数
2008/11/20 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
ES6正则的扩展实例详解
2017/04/25 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python中字符串的修改及传参详解
2016/11/30 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
Django REST framework 分页的实现代码
2019/06/19 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
美国眼镜网:GlassesUSA
2017/09/07 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
Ajax的工作原理
2015/12/04 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
质量承诺书怎么写
2014/05/24 职场文书
求职意向书范本
2015/05/11 职场文书