伪造来源破解下解防盗链图片的简单实现
伪造referer破解下解防盗链图片的简单实现
代码如下:
<?php
$url="http://img1.fbgirl.com/09/08/14/1465/1.jpeg";
$referer="www.fbgirl.com";
$writefile=basename($url);
$filesss=sockOpenUrl($url,'GET',$referer);
write_file($writefile,$filesss);
//sock方式打开远程文件
function sockOpenUrl($url,$method='GET',$referer,$postValue=''){
$method = strtoupper($method);
if(!$url){
return '';
}elseif(!ereg("://",$url)){
$url="http://$url";
}
if(!$referer){
$referer=$url;
}
$urldb=parse_url($url);
$port=$urldb[port]?$urldb[port]:80;
$host=$urldb[host];
$query='?'.$urldb[query];
$path=$urldb[path]?$urldb[path]:'/';
$method=$method=='GET'?"GET":'POST';
$fp = fsockopen($host, $port, $errno, $errstr, 30);
if(!$fp)
{
echo "$errstr ($errno)<br />\n";
}
else
{
$out = "$method $path$query HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Cookie: c=1;c2=2\r\n";
$out .= "Referer: $url\r\n";
$out .= "Accept: */*\r\n";
$out .= "Connection: Close\r\n";
if ( $method == "POST" ) {
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$length = strlen($postValue);
$out .= "Content-Length: $length\r\n";
$out .= "\r\n";
$out .= $postValue;
}else{
$out .= "\r\n";
}
fwrite($fp, $out);
while (!feof($fp)) {
$file.= fgets($fp, 256);
}
fclose($fp);
if(!$file){
return '';
}
$ck=0;
$string='';
$detail=explode("\r\n",$file);
foreach( $detail AS $key=>$value){
if($value==''){
$ck++;
if($ck==1){
continue;
}
}
if($ck){
$stringdb[]=$value;
}
}
$string=implode("\r\n",$stringdb);
//$string=preg_replace("/([\d]+)(.*)0/is","\\2",$string);
return $string;
}
}
/**
*写文件函数
**/
function write_file($filename,$data,$method="rb+",$iflock=1){
@touch($filename);
$handle=@fopen($filename,$method);
if($iflock){
@flock($handle,LOCK_EX);
}
@fputs($handle,$data);
if($method=="rb+") @ftruncate($handle,strlen($data));
@fclose($handle);
@chmod($filename,0777);
if( is_writable($filename) ){
return 1;
}else{
return 0;
}
}
?>






