帝国论坛帝国网站管理系统交流区采集使用交流教大家个方法,采集防盗链的站的图片 【本版专题贴子】  
 2/6    |‹ ‹‹ 1 2 3 4 5 6 ›› ›|
主题:教大家个方法,采集防盗链的站的图片 [加入收藏夹]   

falchion
用户头衔:举人

精华贴   :0
发贴数   :189
经验值   :702
注册时间:2008-02-24
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 11 楼]

<?php
@set_time_limit(60);
$allowgz = true;
$action = $_GET['action'] ? $_GET['action'] : $_POST['action'];
$self = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1,strlen($_SERVER['PHP_SELF']));

$refer = $_SERVER['HTTP_REFERER'];
$rarray = parse_url($refer);
$rhost = strtolower($rarray['host']);
$lhost = strtolower($_SERVER['HTTP_HOST']);

$url = $_POST['url'] ? $_POST['url'] : $_GET['url'];
$url = $url ? $url : ($_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'] : NULL);
$url = trim($url);
if (!$url) exit;
$url_d = urldecode($url);

$arrUrl = @parse_url($url_d);
if ($arrUrl['scheme'] != 'http' || $arrUrl['host'] == $lhost){
        header("Location: $url");
        exit;
}

$ext = strtolower(substr($url,strrpos($url,'.')+1));
if (!strstr(',jpg,bmp,gif,png,',','.$ext.',')) {
        header("Location: $url");
        exit;
}

$url = urldecode($url);

$ret = fetchImg($url);
if ($ret['success']){
        echo $ret['content'];
        flush();
} else {
        header($url);
}
exit;

function unTomChunked($content){
        $pos = strpos($content,"\x0d\x0a");
        if($pos > 0 && $pos < 20){
                $content = substr($content,$pos+2);
        }
        $content = preg_replace("/\x0d\x0a[0-9a-z]+?\x0d\x0a/is",'',$content);
        if(substr($content,-2) == "\r\n") $content = substr($content,0,strlen($content)-2);
        $content = str_replace("\r\n2000\r\n",'',$content);
        return $content;
}

function unGzip($content){
        $singal = "\x1F\x8B\x08";
        $slen = strlen($singal);
        if(substr($content,0,$slen) == $singal){
                $content = substr($content,10);
                $content = gzinflate($content);
        }
        return $content;
}

function unChunked($content){
        $pos = strpos($content,"\x0d\x0a");
        if($pos > 0 && $pos < 20){
                $content = substr($content,$pos+2);
        }
        $content = preg_replace("/\x0d\x0a[0-9a-f]+?\x0d\x0a/is",'',$content);
        if(substr($content,-2) == "\r\n") $content = substr($content,0,strlen($content)-2);
        $content = str_replace("\r\n2000\r\n",'',$content);
        return $content;
}

function fetchImg($url,$nesting=false,$skipextchk=false){
        global $allowgz,$allowexts,$timeout;
        $allowexts = $allowexts ? ','.$allowexts.',' : ',jpg,bmp,gif,png,';
        $timeout = intval($timeout);
        $timeout = $timeout ? $timeout : 7;
        @$arrUrl = parse_url($url);
        $disallowedext = false;
        $status = false;
        $ext = strtolower(substr($url,strrpos($url,'.')+1));
        if ($skipextchk){
                $ext = 'jpg';
        }
        if (!strstr($allowexts,','.$ext.',')) {
                $disallowedext = true;
        }
        if(!$disallowedext && $arrUrl['scheme'] == 'http') {
                if(strstr(strtolower($arrUrl['host']),'.163.com') || strstr(strtolower($arrUrl['host']),'.piclib.net')){
                        $strRef = '';
                }else{
                        $strRef = 'http://'.$arrUrl['host'].'/';
                }
                $arrUrl['uri']  = ($arrUrl['path'] ? $arrUrl['path']:'') . ($arrUrl['query'] ? '?'.$arrUrl['query']:'') . ($arrUrl['fragment'] ? '#'.$arrUrl['fragment']:'');
                $arrUrl['port'] = $arrUrl['port'] ? $arrUrl['port'] : '80';
                $strRequest  = "GET ".$arrUrl['uri']." HTTP/1.0\r\n";
                $strRequest .= "Host: ".$arrUrl['host']."\r\n";
                $strRequest .= "Accept: */*\r\n";
                if ($allowgz){
                        $strRequest .= "Accept-Encoding: gzip, deflate\r\n";
                }
                if($strRef!='') {      
                        $strRequest .= "Referer:$strRef\r\n";
                }
                $strRequest .= "User-Agent: Mozilla/4.0 (compatible; MSIE 4.00; Windows 2000)\r\n";
                $strRequest .= "Pragma: no-cache\r\n";
                $strRequest .= "Cache-Control: no-cache\r\n";
                $strRequest .= "Connection: close\r\n\r\n";

                @$fp = fsockopen($arrUrl['host'],$arrUrl['port'],$intError, $strError, $timeout);
                if (!$fp){
                        return false;
                }
                @fwrite($fp,$strRequest);

                $bolHeader = true;
                $removed = false;
                while($block = fgets($fp,1024)){
                        if($bolHeader){
                                if($block=="\r\n"){
                                        $bolHeader = false;
                                }
                                $headers .= $block;
                                if (!$removed && preg_match("/HTTP\/1\.\d?\s+?302\s+?.*?/is",$block)){
                                        $removed = true;
                                }
                        } else {
                                break;
                        }
                }
                $content = $block;
                if (!$removed){
                        while ($block = fread($fp,10240)) {
                                $content .= $block;
                        }
                }
                fclose($fp);
                $status = true;
        }
        if((strstr($arrUrl['host'],'.tom.com') || strstr($arrUrl['host'],'.52vcd.com')) && !empty($content)){
                unTomChunked($content);
                $unced = true;
        }
        $header_t = strtolower($headers);
        if((strstr($header_t,' chunked') || strstr($header_t,':chunked')) && !$unced){
                $content = unChunked($content);
        }
        if(strstr($header_t,' gzip') || strstr($header_t,':gzip') || substr($content,0,3) == "\x1f\x8b\x08"){
                $content = unGzip($content);
        }
        if (!$nesting && $removed){
                if(preg_match("/Location:\s+?(.*?)(?=\r|\n|\s)/is",$headers,$match)){
                        $url = $match[1];
                        return fetchImg($url,true,$skipextchk);
                } else {
                        return false;
                }
        }
        if ($nesting){
                return array('url'=>$url,'success'=>$status,'headers'=>$headers,'content'=>$content);
        } else {
                return array('success'=>$status,'headers'=>$headers,'content'=>$content);
        }
}
?>




这个是代码



www.idaog.com
联系QQ:465609508 QQ群号46351970 http://blog.130311.com 承接网站建设 模板制作 网站推广 seo
2008-03-15 17:29:39 已设置保密 顶部 回复 引用 报告 编辑 删除

shwzhs
用户头衔:书生

精华贴   :0
发贴数   :36
经验值   :73
注册时间:2008-03-21
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 12 楼]





2008-03-21 15:36:28 已设置保密 顶部 回复 引用 报告 编辑 删除

niliudeyu
用户头衔:进士

精华贴   :0
发贴数   :697
经验值   :2704
注册时间:2008-02-13
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 13 楼]

我当地是PHP5 运行就出错了,是不是这个不支持PHP5啊


Warning: Header may not contain more than a single header, new line detected. in D:\web site\ecms\getimg.php on line 34
GIF89ax|



帝国超级QQ群:3147325 承接网站开发
插件发布:www.bnxf.net
2008-10-02 09:49:44 已设置保密 顶部 回复 引用 报告 编辑 删除

lucky168
用户头衔:书生

精华贴   :0
发贴数   :7
经验值   :48
注册时间:2008-10-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 14 楼]

建议老大在采集文件中加个破盗链




2008-10-02 21:47:36 已设置保密 顶部 回复 引用 报告 编辑 删除

91cms
用户头衔:举人

精华贴   :0
发贴数   :440
经验值   :1194
注册时间:2008-10-10
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 15 楼]





2008-10-11 09:06:49 已设置保密 顶部 回复 引用 报告 编辑 删除

jyshnet
用户头衔:书生

精华贴   :0
发贴数   :17
经验值   :167
注册时间:2008-10-04
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 16 楼]

-----------------------------------



趣猴网
2008-10-15 12:22:46 已设置保密 顶部 回复 引用 报告 编辑 删除

noble
用户头衔:举人

精华贴   :0
发贴数   :177
经验值   :925
注册时间:2007-04-14
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 17 楼]

不错的方法,实用.




2010-04-24 18:03:29 已设置保密 顶部 回复 引用 报告 编辑 删除

yanggxu200
用户头衔:进士 *

精华贴   :1
发贴数   :681
经验值   :3157
注册时间:2006-11-07
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 18 楼]

http://sc.68design.net/photofiles/201106/eDskmH5T2K.jpg 这个图片能搞定不!!!



爱帝国
2011-06-07 14:11:52 已设置保密 顶部 回复 引用 报告 编辑 删除

liqiang239
用户头衔:秀才

精华贴   :0
发贴数   :197
经验值   :430
注册时间:2011-06-01
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 19 楼]

恩,看了看,感觉挺有意思的。



www.jinbangqm.com
hi.baidu.com/etgqc160/blog
blog.sina.com.cn/u/2151062564
yhseq744.blog.163.com
2011-08-10 19:04:46 已设置保密 顶部 回复 引用 报告 编辑 删除

helly
用户头衔:秀才

精华贴   :0
发贴数   :78
经验值   :342
注册时间:2010-06-24
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 20 楼]

这个显示是可以显示了 但是还是保存不到本地



耐磨地坪材料www.formaking.cn停车场地坪www.formaking.cn 地坪公司www.formaking.cn 篮球场地坪www.formaking.cn 中国保健品商贸网www.bjpb2b.com
2012-04-07 14:05:08 已设置保密 顶部 回复 引用 报告 编辑 删除
 2/6    |‹ ‹‹ 1 2 3 4 5 6 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1