一个音乐网站,我看了下mp3文件都是明码的路径地址的,可以直接下载 ,但是需要进入页面获取文件地址需要通过页面的验证,不然页面只会出来“您还未购买服务”的js显示文本代码。我怎么在有服务帐号的情况下,批量获得这个网站资源的路径地址n呢? 谢谢

解决方案 »

  1.   

    用HttpWebRequest抓,不過要先post登錄的包過去,注意登錄與抓取地址要使用相同的CookieContainer
      

  2.   

    參考http://topic.csdn.net/t/20060318/11/4622842.html
      

  3.   

    你可以在网上找一下批量工具,比如flashget或其他一些信息抓取的工具
      

  4.   

    flashget 应该不能带验证信息过去的把,这些明码的文件虽然看的道,但是flashget还是搜索不出来的 
      

  5.   

    已经解决,忘了贴代码分享,网上一段代码修改后使用,调用登陆页面获取cookiecontainer,然后读取所需页面的脚本://获取验证后的html
    private string getpic(string url,string urlres)
    {
    string indata=""; 
    string outdata=""; 
    CookieContainer myCookieContainer=new CookieContainer(); 
    //新建一个CookieContainer来存放Cookie集合 
    HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url); 
    //新建一个HttpWebRequest 
    myHttpWebRequest.ContentType="application/x-www-form-urlencoded"; 
    myHttpWebRequest.ContentLength=indata.Length; 
    myHttpWebRequest.Method="POST"; 
    myHttpWebRequest.CookieContainer=myCookieContainer; 
    //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer 
    Stream myRequestStream=myHttpWebRequest.GetRequestStream(); 
    StreamWriter myStreamWriter=new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312"));                 
    myStreamWriter.Write(indata); 
    //把数据写入HttpWebRequest的Request流 
    myStreamWriter.Close(); 
    myRequestStream.Close(); 
    //关闭打开对象 
    HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse(); 
    //新建一个HttpWebResponse 
    myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri); 
    //获取一个包含url的Cookie集合的CookieCollection 
    Stream myResponseStream=myHttpWebResponse.GetResponseStream(); 
    StreamReader myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312")); 
    outdata=myStreamReader.ReadToEnd(); 
    //把数据从HttpWebResponse的Response流中读出 
    myStreamReader.Close(); 
    myResponseStream.Close(); 
    //textBox1.Text=outdata; 
    //显示"登录" 
     
    //string urlres="http://www.laabaa.com/lishigushi/sx5000/sj/1805.html";
    //拿到了Cookie,再进行请求就能直接读取到登录后的内容了 
    myHttpWebRequest=(HttpWebRequest)WebRequest.Create(urlres); 
    myHttpWebRequest.CookieContainer=myCookieContainer;//* 
    //刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证 
    myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse(); 
    myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);             
    myResponseStream=myHttpWebResponse.GetResponseStream(); 
    myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312")); 
    outdata=myStreamReader.ReadToEnd(); 
    myStreamReader.Close(); 
    myResponseStream.Close(); 
    return outdata;
    }