Dec 18

Felix分析Boblog防盗链实现原理 不指定

felix021 @ 2007-12-18 18:26 [IT » 网络] 评论(2) , 引用(0) , 阅读(6675) | Via 本站原创 | |
注意一下链接的形式:
/blog/attachment.php?fid=x   其中x是一个数字。
所以我们访问的都是attachment.php这个文件。

根据HTTP协议规定,在HTTP头部的信息中可以有这么一句
Referer: 来源地址
这样服务器很容易就可以知道点击链接的来源是什么地方(一般浏览器都会支持)
所以只要attachment.php只要parse一下$_SERVER['HTTP_REFERER']
就可以知道是否是来自允许的站点。

所以可以用一个php脚本来实现:

<?php

$host = "localhost";
$uri = "/manage.php";
$savename = "example.txt";

$crlf = chr(13).chr(10); //回车换行。如果显示不正确请换成下面那行
//$crlf = "\r\n";

$out = "GET http://$uri HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Referer: http://19880711.com\r\n";
$out .= "Connection: close\r\n\r\n";

$fp = fsockopen($host,80,$errno,$errstr);
if(!$fp){die("Error appeared: $errno - $errstr");}
fputs($fp,$out);
while(!feof($fp)&&$a!=$crlf)$a = fgets($fp);//去掉header
$savefp = fopen($savename,"w");
while(!feof($fp))
fwrite($savefp,fread($fp,128));
fclose($fp);
fclose($savefp);


//附送一个函数^_^
function RemoveHttpHeader(&$a)
{
  $pos = strpos($a,"\r\n\r\n");
  if( $pos === false)
  {
    return true;
  }
  else
    $a = substr($a,$pos+4);
  return false;
}

?>




欢迎扫码关注:




转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php
adf Email Homepage
2008-8-20 12:00
fdsa
风吟 Homepage
2008-4-9 08:50
代码的html部分! "应改为' 吧
felix021 回复于 2008-4-9 10:36
反斜杆被过滤掉了,汗。。
改回[code]标签,正常了
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]