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 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
PHP实现动态web服务器方法
Jul 29 PHP
详解php比较操作符的安全问题
Dec 03 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 PHP
浅析PHP echo 和 print 语句
Jun 30 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
php 中英文语言转换类代码
2011/08/11 PHP
使用URL传输SESSION信息
2015/07/14 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
幼儿教师求职信
2014/05/24 职场文书
2014年会计工作总结
2014/11/27 职场文书
电影圆明园观后感
2015/06/03 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
基于Python实现射击小游戏的制作
2022/04/06 Python