php保存远程图片

,我们欺骗主机的方法来做,就是用fsockopen向主机发送一个用户包

function get_remote($body){
 set_time_limit(0);
 $img_array = array();
 $img_path = "get_pic/";
 preg_match_all("/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|png))/isU",$body,$img_array);
 $img_array = array_unique($img_array[2]);
 foreach ($img_array as $key => $value) {
  $get_file = @file_get_contents($value);
  $filetime = time();   
  !is_dir($img_path) ? mkdir($img_path) : null; 
  $filename = date("YmdHis",$filetime).rand(1,999).'.'.substr($value,-3,3);
  if(empty($get_file)){
   sleep(3);
   $get_file = @file_get_contents($value);
   if(empty($get_file)){
    $body = preg_replace("/".addcslashes($value,"/")."/isU", 'yun_qi_img/notfound.jpg', $body);
    continue;
    }
  }
  if(!empty($get_file) ){
   $fp = fopen($img_path.$filename,"w");
   if(fwrite($fp,$get_file)){         
    $body = preg_replace("/".addcslashes($value,"/")."/isU", $img_path.$filename, $body);
   }
  }
  fclose($fp);
  sleep(1);
 }
 
 //$body =str_replace('<img','<input class="" type="image" ',$body); 
 //$body =str_replace('<IMG','<input class="" type="image" ',$body);
 return $body;
 
}

下面我们来看看fsockopen的方法喽.

if($gcookie=="" && !empty($rfurl)) $gcookie = RefurlCookie($rfurl);
   $sessionQuery = "GET $gquery HTTP/1.1rn";
   $sessionQuery .= "Host: $ghostrn";
   $sessionQuery .= "Referer: $rfurlrn";
   $sessionQuery .= "Accept: */*rn";
   $sessionQuery .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)rn";
   if($gcookie!=""&&!ereg("[rn]",$gcookie)) $sessionQuery .= $gcookie."rn";
   $sessionQuery .= "Connection: Keep-Alivernrn";
   $errno = "";
   $errstr = "";
$url ='http://www.moko.cc';
$m_fp = fsockopen($url,80,$errno,$errstr,10);
fwrite($m_fp,$sessionQuery);

function RefurlCookie($gurl){
 global $gcookie,$lastRfurl;
 $gurl = trim($gurl);
 if(!empty($gcookie) && $lastRfurl==$gurl) return $gcookie;
 else $lastRfurl=$gurl;
 if(trim($gurl)=='') return '';
 $urlinfos = GetHostInfo($gurl);
  $ghost = $urlinfos['host'];
  $gquery = $urlinfos['query'];
  $sessionQuery = "GET $gquery HTTP/1.1rn";
  $sessionQuery .= "Host: $ghostrn";
  $sessionQuery .= "Accept: */*rn";
  $sessionQuery .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)rn";
  $sessionQuery .= "Connection: Closernrn";
  $errno = "";
  $errstr = "";
  $m_fp = fsockopen($ghost, 80, $errno, $errstr,10) or die($ghost.'<br />');
  fwrite($m_fp,$sessionQuery);
  $lnum = 0;
  //获取详细应答头
  $gcookie = "";
 while(!feof($m_fp)){
   $line = trim(fgets($m_fp,256));
   if($line == "" || $lnum>100) break;
   else{
    if(eregi("^cookie",$line)){
     $gcookie = $line;
     break;
    }
   }
  }
   fclose($m_fp);
   }
  哈这样的话就可以保存远程有图片防盗的主机的图片了喽.

时间: 2024-07-29 15:16:24

php保存远程图片的相关文章

保存远程图片函数修改正版

函数 趁今天有空,修正了一下这个函数,经测试,在本地服务器通过,在空间商服务器也可正常使用,没发现错误.我的卡巴斯基不报毒了.^_^ 只要修改一下,这个函数是放在哪个网站都适用的.在此只与添加图片为例说明一下调用方法,其它位置方法类似. 在我本机测试成功,由于现在连不上空间的FTP,所以无办在空间上测试,发现问题请到群中提出. 一.把下面函数放到Ft_admin_conn.asp的最后 '=================================='=函 数 名:saveimgfile'

ASP保存远程图片

记得很多的编辑器.自动采集系统都一个自动保存远程图片的功能,大概原理就是利用xmlhttp对象获取图片,然后用流对象写入保存,参照网上的代码,自己写了一个,与流传的代码没什么区别!代码如下,就一个函数: <% Function SaveRemoteFile(sSavePath,sRemoteFileUrl) On Error Resume Next SaveRemoteFile = False Dim oXML : Set oXML = Server.CreateObject("Micro

ASP保存远程图片到本地 同时取得第一张图片并创建缩略图的代码_应用技巧

采集中 或者 在线添加文章中 都可以用到此功能 俺自己在baidu上搜索的保存远程图片到本地的代码 感觉比较难用点 而且没有现成的比较全的代码 俺也看不懂 俺从 SNA新闻采集系统 For 3.62 (程序制作:ansir)里提取了点函数 用下 比较简单好用 以下是函数 程序代码  复制代码 代码如下: <% '================================================== '函数名:CheckDir2 '作 用:检查文件夹是否存在 '参 数:FolderP

ASP替换、保存远程图片实现代码_应用技巧

ASP通过函数来实现替换.保存远程图片,完成自动采集图片.提取图片的功能,函数中自动判断重复图片,智能分析链接路径,并转成成相对的图片地址保存在你指定的网站目录中,我们可将此函数用在后台的编辑器中,当你复制了含有图片的内容后,本代码会自动帮你上传图片.同时本代码也是采集程序中的重要处理函数,函数代码如下: Function ReplaceSaveRemoteFile(ConStr,strInstallDir,strChannelDir,SaveTf,TistUrl) If ConStr="$Fa

保存远程图片到本地服务器几种方法[php,asp]

function get_file($url,$folder){    set_time_limit (24 * 60 * 60);       $destination_folder = $folder?$folder.'/':'';//文件下载保存目录            $newfname = $destination_folder . basename($url);    $file = fopen ($url, "rb");    if ($file) {    $newf

保存远程图片函数修改正版_小偷/采集

趁今天有空,修正了一下这个函数,经测试,在本地服务器通过,在空间商服务器也可正常使用,没发现错误.我的卡巴斯基不报毒了.^_^ 只要修改一下,这个函数是放在哪个网站都适用的.在此只与添加图片为例说明一下调用方法,其它位置方法类似. 在我本机测试成功,由于现在连不上空间的FTP,所以无办在空间上测试,发现问题请到群中提出. 一.把下面函数放到Ft_admin_conn.asp的最后 '================================== '=函 数 名:saveimgfile '=

ASP替换、保存远程图片实现代码

ASP通过函数来实现替换.保存远程图片,完成自动采集图片.提取图片的功能,函数中自动判断重复图片,智能分析链接路径,并转成成相对的图片地址保存在你指定的网站目录中,我们可将此函数用在后台的编辑器中,当你复制了含有图片的内容后,本代码会自动帮你上传图片.同时本代码也是采集程序中的重要处理函数,函数代码如下: Function ReplaceSaveRemoteFile(ConStr,strInstallDir,strChannelDir,SaveTf,TistUrl) If ConStr="$Fa

ReplaceSaveRemoteFile 替换、保存远程图片 的代码

'================================================== '函数名:ReplaceSaveRemoteFile '作  用:替换.保存远程图片 '参  数:ConStr ------ 要替换的字符串 '参  数:SaveTf ------ 是否保存文件,False不保存,True保存 '参  数: TistUrl------ 当前网页地址 '================================================== Func

ASP保存远程图片到本地,并生成缩略图

ASP通过XMLHTTP获取远程图片流数据,并保存到本地,把第一张采集到的图片生成缩略图. 具体代码如下: <% '================================================== '函数名:CheckDir2 '作 用:检查文件夹是否存在 '参 数:FolderPath ------文件夹地址 '================================================== Function CheckDir2(byval Folder

ASP保存远程图片到本地 同时取得第一张图片

这是本人在SNA新闻采集系统 For 动力3.62 里使用的几个函数可以普遍的使用在采集 或者 在线添加文章中以下是函数程序代码<%'=================================================='函数名:DefiniteUrl'作 用:将相对地址转换为绝对地址'参 数:PrimitiveUrl ------要转换的相对地址'参 数:ConsultUrl ------当前网页地址'=======================================