因为对方已经关闭了allow_url_fopen等,用file_get_contents、fopen 和 curl 都不管用。请问还有没有别的办法
这是我尝试抓的一个网地址,是优酷的http://v.youku.com/v_show/id_XMjMyODQ3MDYw.html。有哪位成功了,麻烦告诉我一下。

解决方案 »

  1.   

    使用CURL,参考下文:PHP的cURL库功能简介:抓取网页,POST数据及其他
      

  2.   

    这是一年多以前写过的一个超简化的curl取网页的函数,你可以参照一下。function hgyCurlHTML($target_url){    if(empty($target_url)) die('target_url needed !');    $ch = curl_init();    curl_setopt($ch,CURLOPT_URL,$target_url);    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);    $str = curl_exec($ch);    curl_close($ch);    return $str;}echo hgyCurlHTML('http://v.youku.com/v_show/id_XMjMyODQ3MDYw.html');
      

  3.   


    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>小满第一视角:新英雄巨牙海民激情gank - 视频 - 优酷视频 - 在线观看</title>
    <meta name="title" content="小满第一视角:新英雄巨牙海民激情gank - 视频 - 优酷视频 - 在线观看"> 
    <meta name="keywords" content="小满第一视角:新英雄巨牙海民激情gank  - DOTA 第一视角 VS1房 小满 新英雄 巨牙海民 "> 
    <meta name="description" content="小满第一视角:新英雄巨牙海民激情gank 视频最后1分多钟转码转坏了。我传的源文件是能看的。结果自然大家都懂的啦^_^" />
    <link href="http://static.youku.com/v1.0.0633/index/css/global.css" type="text/css" rel="stylesheet" />
    <link href="http://static.youku.com/v1.0.0633/v/css/play.css" type="text/css" rel="stylesheet" />
    <script type="text/javascript" src="http://static.youku.com/v1.0.0633/js/prototype.js"></script>
    <script type="text/javascript" src="http://static.youku.com/v1.0.0633/js/nova.js"></script>
    <script type="text/javascript" src="http://static.youku.com/v1.0.0633/index/js/common.js"></script>
    <script type="text/javascript" src="http://static.youku.com/v1.0.0633/index/js/hovervp.js"></script>
    <script type="text/javascript" src="http://static.youku.com/v1.0.0633/v/js/v4/v4.js"></script>
    <script type="text/javascript">if (!window.Nova) Nova={};
    Nova.QVideo = {
    _name : 'QVideo',
     isNeedVerify : function(param, callback, id) { return nova_call('/QVideo/~ajax/isNeedVerify', param, callback, id); },
     getVideoPlayInfo : function(param, callback, id) { return nova_call('/QVideo/~ajax/getVideoPlayInfo', param, callback, id); },
     getLastVideoInfo : function(param, callback, id) { return nova_call('/QVideo/~ajax/getLastVideoInfo', param, callback, id); },
     usertags : function(param, callback, id) { return nova_call('/QVideo/~ajax/usertags', param, callback, id); },
     videoStatus : function(param, callback, id) { return nova_call('/QVideo/~ajax/videoStatus', param, callback, id); },
     logon : function(param, callback, id) { return nova_call('/QVideo/~ajax/logon', param, callback, id); },
     comment : function(param, callback, id) { return nova_call('/QVideo/~ajax/comment', param, callback, id); },
     addFav : function(param, callback, id) { return nova_call('/QVideo/~ajax/addFav', param, callback, id); },
     deleteComment : function(param, callback, id) { return nova_call('/QVideo/~ajax/deleteComment', param, callback, id); },
     updown : function(param, callback, id) { return nova_call('/QVideo/~ajax/updown', param, callback, id); }
    };</script>
    <script type="text/javascript">
    var un_ame='';
    var videoId = '58211765';
    var videoId2= 'XMjMyODQ3MDYw';
    var version="/v1.0.0633";
    var tags="DOTA|%E7%AC%AC%E4%B8%80%E8%A7%86%E8%A7%92|VS1%E6%88%BF|%E5%B0%8F%E6%BB%A1|%E6%96%B0%E8%8B%B1%E9%9B%84|%E5%B7%A8%E7%89%99%E6%B5%B7%E6%B0%91|";var aoutds = Array("video.baidu.com","www.soku.com","www.video.baidu.com","www.baidu.com","search.baidu.com");
    var adr = document.referrer;
    var aoutds_ua = navigator.userAgent.toLowerCase();
    var aoutds_isFF = aoutds_ua.indexOf('firefox') >= 0;
    var aoutds_isIE = (aoutds_ua.indexOf('msie') >= 0 && aoutds_ua.indexOf('opera') < 0);
    var aoutds_isSFR = aoutds_ua.indexOf('safari') >= 0;
    if(parent&&((aoutds_isIE&&parent!=document)||((aoutds_isFF||aoutds_isSFR)&&parent!=window))&&adr!=""&&adr!=self.location){
      var isAOUTD = false;var adrs = adr.match(/\:\/\/([\w\.\-\d]+)\//g); 
      for(var ai=0;ai<aoutds.length;ai++){
        if((typeof adrs == "string" && adrs == "://"+aoutds[ai]+"/") || 
         ((typeof adrs == "object" && adrs.length>0 && adrs[0] == "://"+aoutds[ai]+"/"))){
          isAOUTD = true;break;}}
      if(isAOUTD == false) parent.location=self.location;
    }</script>
    <script type="text/javascript">
    var ab_ad1=function(pip_pre){
    if(!pip_pre){
        Nova.addScript("http://html.atm.youku.com/html?p=187,569&k="+tags+"&t="+(new Date).getTime());
        if($('ab_pip_pre'))Element.hide("ab_pip_pre");
    Element.hide("ab_187"); Element.hide("ab_569");
    }
       setTimeout('ab_ad1(false)',10*60*1000);
    }
    var show_pip=function(){
    Element.show("ab_pip_pre"); Element.hide("ab_187"); Element.hide("ab_569");
    }
    </script>
    </head>linux下用curl捕获到的...
      

  4.   

    显然 楼上的这个没有用,浏览器里显示的跟curl抓取的不一样!
      

  5.   


    抓下来的html,IE显示是完整的,只不过发帖字符有限制,发不全!!
      

  6.   


    你的会转到404因为JS代码跳转 YOUKU的网站小偷根本没任何难度 他们也没做什么防盗
      

  7.   


    $url = "http://v.youku.com/v_show/id_XMjMyODQ3MDYw.html";
    $surl = "http://www.youku.com/";
    $cookie_file = dirname(__FILE__)."/temp/youku.txt";
    $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_REFERER, $surl);
      curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
      curl_setopt($ch, CURLOPT_HEADER, 1);
      curl_setopt($ch, CURLOPT_NOBODY, 0);
      curl_setopt($ch, CURLOPT_TIMEOUT, 10);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); // 允许自动跳转
      curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
      //curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
      $contents = curl_exec($ch);
      curl_close($ch);
      if(preg_match("/videoId2= '(.*?)';/is",$contents,$match)){
      $cont = $match[1];
      $out = "<a href=\"http://player.youku.com/player.php/sid/".$cont."/v.swf\" target=\"_blank\">http://player.youku.com/player.php/sid/".$cont."/v.swf</a>";
      echo $cont ."<br>".$out;
      exit ;
    }
    其实也不需要采集,
    http://v.youku.com/v_show/id_XMjMyODQ3MDYw.html这个地址少做改动就能达到目的