比方说:我想用curl来采集http://www.qq.com/a.asp页面的信息,但它有会员登陆验证(假如是cookies来验证的),只有登陆后才能看到,如果我的
帐号是 user123
密码是 456789而他的登陆验证页是http://www.qq.com/logincheck.asp原理是先登陆,再去采,可我怎么搞都是登陆不成功,真是没折,在百度里搜了一下,也试了,还是不成功,谁给我整个完整的代码,谢谢了,这几天都急得上火了...
汗.....

解决方案 »

  1.   

    我不认为这些网站会用cookie保存敏感信息,就是保存也是加密过的你想采集什么信息?登录后直接复制粘贴弄不到吗?说明白些
      

  2.   

    www.qq.com 有 a.asp 吗?
      

  3.   


    我这不是说了吗?比方说,汗,你没看清楚呀.....就是说,我采集的页面需要会员登陆后才能看到,这样的话,直接去采就没法实现,所以要先模拟登陆,再去采集,模拟登陆可以用curl来实现,以下是我的具体代码:
     function vlogin($url,$request){
            $cookie_jar = tempnam('./tmp','cookie');
            $ch = curl_init(); 
            curl_setopt($ch,CURLOPT_URL,$url);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
           
            curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_HEADER, false);         curl_setopt($ch, CURLOPT_NOBODY, false);
            curl_exec ($ch); 
            curl_close($ch); 
            return $cookie_jar;
        }
        
        function get_content_by_cookie($url,$cookie_jar){
            $ch2 = curl_init();        
            curl_setopt($ch2, CURLOPT_URL, $url);
            curl_setopt($ch2, CURLOPT_HEADER, false);
            curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
            $orders=curl_exec($ch2);        
            curl_close($ch2); 
            return $orders;
        }    $list_url='http://www.qq.com/a.asp ';
        $login_url='http://www.qq.com/logincheck.asp ';
        $post_data='username=1&password=2&questionid=0&answer=&submit=登录';
        $cookie_file=vlogin($login_url,$post_data);    
        $tmp_curl=get_content_by_cookie($list_url,$cookie_file); echo $tmp_curl;我用具体的网址做个测试,上面只是“假设”的网址及帐号密码,帮我看看,代码对不对!!
      

  4.   

    curl_setopt($ch, CURLOPT_REFERER, $queryURL);   
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);   
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
    最好要加上这几项
      

  5.   

    没有先后顺序之分,主要是为了伪造refer,header以及useragent