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与已存在的Java应用程序集成
Oct 09 PHP
第十五节--Zend引擎的发展
Nov 16 PHP
zend framework多模块多布局配置
Feb 26 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
Aug 20 PHP
使用php-timeit估计php函数的执行时间
Sep 06 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
php判断当前操作系统类型
Oct 28 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
php实现URL加密解密的方法
Nov 17 PHP
PHP数据对象映射模式实例分析
Mar 29 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
vue实现弹幕功能
2019/10/25 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
python 实现倒排索引的方法
2018/12/25 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
python实现简单颜色识别程序
2020/02/19 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
用友笔试题目
2016/10/25 面试题
大三在校生电子商务求职信
2013/10/29 职场文书
幸福家庭标语
2014/06/27 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
Docker安装MySql8并远程访问的实现
2022/07/07 Servers