亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

php實現的網絡相冊圖片防盜鏈完美破解方法

2024-04-25 20:38:00
字體:
來源:轉載
供稿:網友

本文實例講述了php實現的網絡相冊圖片防盜鏈完美破解方法。分享給大家供大家參考。具體如下:

網絡相冊圖片防盜鏈破解程序 - PHP版 這個防盜鏈破解版可以完美破解當下比較流行的: 百度相冊,網易相冊,360我喜歡等網站圖片. 還可以實現簡單的圖片防盜鏈. 因為這個類是先進行獲取遠程圖片, 然后再把圖片發送到客戶端,所以,算是進行了兩次流量的傳送.因此,會浪費空間流量,接下來,會開發緩存功能,這樣可以實現節約流量!

<?php

/**

* 網絡相冊圖片防盜鏈破解程序 - PHP版

*

* 使用方法:

*

* http://yourdomain/url.php?url=http://hiphotos.baidu.com/verdana/pic/item/baidupicture.jpg&referer=

* 其中url是指需要破解的圖片URL,而referer是為了兼容一些不需要設置來路域名才能顯示的相冊,例如360我喜歡網,必須設置來路為空才能正常瀏覽. 所以,此時應該設置referer為1

*

* @author 雪狐博客

* @version 1.0

* @since July 16, 2012

* @URL http://www.xuehuwang.com

*/

class Frivoller

{

/**

* HTTP 版本號 (1.0, 1.1) , 百度使用的是 version 1.1

*

* @var string

*/

protected $version;

/**

* 進行HTTP請求后響應的數據

*

* @var 字符串格式

*/

protected $body;

/**

* 需要獲取的遠程URL

*

* @var 字符串格式

*/

protected $link;

/**

* An array that containing any of the various components of the URL.

*

* @var array

*/

protected $components;

/**

* HTTP請求時HOST數據

*

* @var 字符串

*/

protected $host;

/**

* The path of required file.

* (e.g. '/verdana/abpic/item/mygirl.png')

*

* @var string

*/

protected $path;

/**

* The HTTP referer, extra it from original URL

*

* @var string

*/

protected $referer;

/**

* The HTTP method, 'GET' for default

*

* @var string

*/

protected $method = 'GET';

/**

* The HTTP port, 80 for default

*

* @var int

*/

protected $port = 80;

/**

* Timeout period on a stream

*

* @var int

*/

protected $timeout = 100;

/**

* The filename of image

*

* @var string

*/

protected $filename;

/**

* The ContentType of image file.

* image/jpeg, image/gif, image/png, image

*

* @var string

*/

protected $contentType;

/**

* Frivoller constructor

*

* @param string $link

*/

public function __construct($link,$referer='')

{

$this->referer = $referer;

// parse the http link

$this->parseLink($link);

// begin to fetch the image

$stream = pfsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);

if (!$stream){

header("Content-Type: $this->contentType;");

echo $this->CurlGet($link);

}else{

fwrite($stream, $this->buildHeaders());

$this->body = "";

$img_size = get_headers($link,true);

while (!feof($stream)) {

$this->body .= fgets($stream, $img_size['Content-Length']);

//fwrite($jpg,fread($stream, $img_size['Content-Length']));

}

$content = explode("/r/n/r/n", $this->body, 2);

$this->body = $content[1];

fclose($stream);

// send 'ContentType' header for saving this file correctly

// 如果不發送CT,則在試圖保存圖片時,IE7 會發生錯誤 (800700de)

// Flock, Firefox 則沒有這個問題,Opera 沒有測試

header("Content-Type: $this->contentType;");

header("Cache-Control: max-age=315360000");

echo $this->body;

//保存圖片

//file_put_contents('hello.jpg', $this->body);

}

}

/**

* Compose HTTP request header

*

* @return string

*/

private function buildHeaders()

{

$request = "$this->method $this->path HTTP/1.1/r/n";

$request .= "Host: $this->host/r/n";

$request .= "Accept-Encoding: gzip, deflate/r/n";

$request .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1/r/n";

$request .= "Content-Type: image/jpeg/r/n";

$request .= "Accept: */*/r/n";

$request .= "Keep-Alive: 300/r/n";

$request .= "Referer: $this->referer/r/n";

$request .= "Cache-Control: max-age=315360000/r/n";

$request .= "Connection: close/r/n/r/n";

return $request;

}

/**

* Strip initial header and filesize info

*/

private function extractBody(&$body)

{

// The status of link

if(strpos($body, '200 OK') > 0) {

// strip header

$endpos = strpos($body, "/r/n/r/n");

$body = substr($body, $endpos + 4);

// strip filesize at nextline

$body = substr($body, strpos($body, "/r/n") + 2);

}

}

/**

* Extra the http url

*

* @param $link

*/

private function parseLink($link)

{

$this->link = $link;

$this->components = parse_url($this->link);

$this->host = $this->components['host'];

$this->path = $this->components['path'];

if(empty($this->referer)){

$this->referer = $this->components['scheme'] . '://' . $this->components['host'];

}elseif($this->referer == '1'){

$this->referer = '';

}

$this->filename = basename($this->path);

// extract the content type

$ext = substr(strrchr($this->path, '.'), 1);

if ($ext == 'jpg' or $ext == 'jpeg') {

$this->contentType = 'image/pjpeg';

}

elseif ($ext == 'gif') {

$this->contentType = 'image/gif';

}

elseif ($ext == 'png') {

$this->contentType = 'image/x-png';

}

elseif ($ext == 'bmp') {

$this->contentType = 'image/bmp';

}

else {

$this->contentType = 'application/octet-stream';

}

}

//抓取網頁內容

function CurlGet($url){

$url = str_replace('&','&',$url);

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HEADER, false);

curl_setopt($curl, CURLOPT_REFERER,$url);

curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; SeaPort/1.2; Windows NT 5.1; SV1; InfoPath.2)");

curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');

curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);

$values = curl_exec($curl);

curl_close($curl);

return $values;

}

}

/**

* 取得根域名

*

* @author lonely

* @create 2011-3-11

* @version 0.11

* @lastupdate lonely

* @package Sl

*/

class RootDomain{

private static $self;

private $domain=null;

private $host=null;

private $state_domain;

private $top_domain;

/**

* 取得域名分析實例

* Enter description here ...

*/

public static function instace(){

if(!self::$self)

self::$self=new self();

return self::$self;

}

public function __construct(){

$this->state_domain=array(

'al','dz','af','ar','ae','aw','om','az','eg','et','ie','ee','ad','ao','ai','ag','at','au','mo','bb','pg','bs','pk','py','ps','bh','pa','br','by','bm','bg','mp','bj','be','is','pr','ba','pl','bo','bz','bw','bt','bf','bi','bv','kp','gq','dk','de','tl','tp','tg','dm','do','ru','ec','er','fr','fo','pf','gf','tf','va','ph','fj','fi','cv','fk','gm','cg','cd','co','cr','gg','gd','gl','ge','cu','gp','gu','gy','kz','ht','kr','nl','an','hm','hn','ki','dj','kg','gn','gw','ca','gh','ga','kh','cz','zw','cm','qa','ky','km','ci','kw','cc','hr','ke','ck','lv','ls','la','lb','lt','lr','ly','li','re','lu','rw','ro','mg','im','mv','mt','mw','my','ml','mk','mh','mq','yt','mu','mr','us','um','as','vi','mn','ms','bd','pe','fm','mm','md','ma','mc','mz','mx','nr','np','ni','ne','ng','nu','no','nf','na','za','aq','gs','eu','pw','pn','pt','jp','se','ch','sv','ws','yu','sl','sn','cy','sc','sa','cx','st','sh','kn','lc','sm','pm','vc','lk','sk','si','sj','sz','sd','sr','sb','so','tj','tw','th','tz','to','tc','tt','tn','tv','tr','tm','tk','wf','vu','gt','ve','bn','ug','ua','uy','uz','es','eh','gr','hk','sg','nc','nz','hu','sy','jm','am','ac','ye','iq','ir','il','it','in','id','uk','vg','io','jo','vn','zm','je','td','gi','cl','cf','cn','yr'

);

$this->top_domain=array('com','arpa','edu','gov','int','mil','net','org','biz','info','pro','name','museum','coop','aero','xxx','idv','me','mobi');

$this->url=$_SERVER['HTTP_HOST'];

}

/**

* 設置URL

* Enter description here ...

* @param string $url

*/

public function setUrl($url=null){

$url=$url?$url:$this->url;

if(empty($url))return $this;

if(!preg_match("/^http:/is", $url))

$url="http://".$url;

$url=parse_url(strtolower($url));

$urlarr=explode(".", $url['host']);

$count=count($urlarr);

if ($count<=2){

$this->domain=$url['host'];

}else if ($count>2){

$last=array_pop($urlarr);

$last_1=array_pop($urlarr);

if(in_array($last, $this->top_domain)){

$this->domain=$last_1.'.'.$last;
$this->host=implode('.', $urlarr);

}else if (in_array($last, $this->state_domain)){

$last_2=array_pop($urlarr);

if(in_array($last_1, $this->top_domain)){

$this->domain=$last_2.'.'.$last_1.'.'.$last;

$this->host=implode('.', $urlarr);

}else{

$this->host=implode('.', $urlarr).$last_2;

$this->domain=$last_1.'.'.$last;

}

}

}

return $this;

}

/**

* 取得域名

* Enter description here ...

*/

public function getDomain(){

return $this->domain;

}

/**

* 取得主機

* Enter description here ...

*/

public function getHost(){

return $this->host;

}

}

$referer = array('xuehuwang.com','zangbala.cn','qianzhebaikou.net','sinaapp.com','163.com','sina.com.cn','weibo.com','abc.com');

// Get the url, maybe you should check the given url

if (isset($_GET['url']) and $_GET['url'] != '') {

//獲取來路域名

$site = (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : '';

//匹配是否是一個圖片鏈接

if(preg_match('/(http|https|ftp|rtsp|mms):(////|////){1}((/w)+[.]){1,}([a-zA-Z]|[0-9]{1,3})(/S*//)((/S)+[.]{1}(gif|jpg|png|bmp))/i',$_GET['url'])){

if(!empty($site)){

$tempu = parse_url($site);

$host = $tempu['host'];

$root = new RootDomain();

$root->setUrl($site);

if(in_array($root->getDomain(),$referer)){

$img_referer = (isset($_GET['referer']) && !empty($_GET['referer']))? trim($_GET['referer']) : '';

new Frivoller($_GET['url'],$img_referer);

}

}else{

$img_referer = (isset($_GET['referer']) && !empty($_GET['referer']))? trim($_GET['referer']) : '';

new Frivoller($_GET['url'],$img_referer);

}

}

}

?>

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久成人网| 日韩在线观看你懂的| 日韩影视在线观看| 国产性猛交xxxx免费看久久| 国产一区在线播放| 亚洲va欧美va国产综合剧情| 欧美午夜片欧美片在线观看| 国产精品高潮呻吟久久av无限| 91亚洲一区精品| 午夜精品一区二区三区视频免费看| 成人写真视频福利网| 91久久精品美女| 精品国产一区二区三区久久久| 8x拔播拔播x8国产精品| 国产精品久久久久久久久久尿| 91欧美精品成人综合在线观看| 国产精品久久久久久久午夜| 国产午夜精品久久久| 奇米4444一区二区三区| 欧美激情一级精品国产| 久久精品电影一区二区| 国产偷国产偷亚洲清高网站| 91精品国产91久久久久久| 成人精品一区二区三区| 久久人人爽人人爽人人片av高请| 有码中文亚洲精品| 国产成人精品亚洲精品| 国产精品亚洲视频在线观看| 亚洲欧美一区二区三区情侣bbw| 欧美性视频在线| 国产丝袜一区二区三区| 秋霞午夜一区二区| 久久青草精品视频免费观看| 国产亚洲欧洲高清| 青草青草久热精品视频在线网站| 日韩欧美一区二区三区| 亚洲人永久免费| 国产精品毛片a∨一区二区三区|国| 国产精品久久久久久久久久免费| 久久久久成人精品| 97国产精品视频人人做人人爱| 深夜福利亚洲导航| 国产午夜一区二区| 欧美俄罗斯乱妇| 国产精品日韩在线观看| 国产精品人成电影| 午夜欧美大片免费观看| 日韩av一区二区在线| 欧美日韩国产精品专区| 亚洲人成电影网站色xx| 成人黄色免费网站在线观看| 精品视频在线观看日韩| 在线看福利67194| 亚洲国产精品成人va在线观看| 98精品国产自产在线观看| 国产中文欧美精品| 亚洲国产欧美一区二区丝袜黑人| 亚洲欧美中文另类| 亚洲精品在线91| 91精品国产91久久久久福利| 91手机视频在线观看| 日本高清视频精品| 亚洲综合视频1区| 在线免费看av不卡| 成人h视频在线观看播放| 中日韩美女免费视频网址在线观看| 亚洲夜晚福利在线观看| 亚洲电影成人av99爱色| 国产美女精品视频| 日韩免费电影在线观看| 亚洲国产高潮在线观看| 久久91亚洲人成电影网站| 91tv亚洲精品香蕉国产一区7ujn| 日韩视频免费大全中文字幕| 亚洲欧美制服综合另类| 亚洲色图13p| 91丝袜美腿美女视频网站| 高清一区二区三区四区五区| 精品久久久久久久久久| 欧美视频中文字幕在线| 欧美日韩中国免费专区在线看| 欧美日韩第一视频| 国产精品老牛影院在线观看| 日韩精品在线播放| 这里只有精品在线观看| 久久亚洲精品网站| 国产日本欧美一区二区三区| 欧美日韩午夜剧场| 久久精品99久久久久久久久| 精品久久久久久久久久国产| 日韩**中文字幕毛片| 日韩欧美在线国产| 欧美激情一区二区三级高清视频| 国产成人精品午夜| 亚洲综合在线播放| 亚洲欧美另类人妖| 久久精品国产96久久久香蕉| 国内精品一区二区三区四区| 热99精品只有里视频精品| 欧洲成人在线观看| 97视频在线观看视频免费视频| 日韩av在线网站| 91影视免费在线观看| 97视频免费在线看| 国产视频久久久久久久| 国产精品狼人色视频一区| 91精品国产高清久久久久久| 日韩一区二区精品视频| 国产精品久久二区| 国产精品嫩草影院久久久| 精品久久香蕉国产线看观看亚洲| 久久精品国产69国产精品亚洲| 亚洲美女视频网| 日本久久中文字幕| 亚洲精品videossex少妇| 51午夜精品视频| 欧美精品久久久久久久久久| 欧美xxxx综合视频| 欧美在线播放视频| 欧美精品成人在线| 亚洲欧美国产精品| 国产狼人综合免费视频| 在线看日韩av| 欧美专区福利在线| 高清在线视频日韩欧美| 一区二区在线视频播放| 不卡在线观看电视剧完整版| 欧美成人第一页| 最新中文字幕亚洲| 亚洲国产精品女人久久久| 欧美孕妇与黑人孕交| 成人欧美一区二区三区在线| 国产美女搞久久| 亚洲一区二区在线播放| 欧美日韩精品中文字幕| 成人国产精品免费视频| 欧美高清视频免费观看| 欧美性猛交xxxx偷拍洗澡| 亚洲高清福利视频| 久久亚洲成人精品| 久久精品国产91精品亚洲| 国产精品2018| 欧美激情亚洲综合一区| 亚洲成人网在线观看| 一区二区三区四区在线观看视频| 亚洲国产中文字幕久久网| 国产亚洲精品美女久久久| 亚洲欧美成人精品| 亚洲欧美另类在线观看| 欧美孕妇毛茸茸xxxx| 精品国偷自产在线| 91产国在线观看动作片喷水| 欧美日韩国产在线播放| 欧美高清在线播放| 精品久久久久久久久久久| 欧美主播福利视频| 日本国产精品视频| 欧美一级免费视频| 狠狠做深爱婷婷久久综合一区| 亚洲第一免费网站| 欧美久久精品一级黑人c片| 久久久人成影片一区二区三区| 性色av一区二区三区| 国产成人a亚洲精品|