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 limit的优化
Jan 10 PHP
PHP 编写的 25个游戏脚本
May 11 PHP
PHP下对数组进行排序的函数
Aug 08 PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
thinkPHP中_initialize方法实例分析
Dec 05 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 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判断变量类型常用方法
2012/04/24 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
js left,right,mid函数
2008/06/10 Javascript
js option删除代码集合
2008/11/12 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
js重写方法的简单实现
2016/07/10 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
JS实现小米轮播图
2020/09/21 Javascript
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
python实现微信打飞机游戏
2020/03/24 Python
详解Django配置JWT认证方式
2020/05/09 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
Servlet方面面试题
2016/09/28 面试题
仓库主管的岗位职责
2013/12/04 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
搞笑车尾标语
2014/06/23 职场文书
高三英语教学反思
2016/03/03 职场文书
Python日志模块logging用法
2022/06/05 Python