Heim  >  Artikel  >  Backend-Entwicklung  >  ,curl模拟登陆的有关问题

,curl模拟登陆的有关问题

WBOY
WBOYOriginal
2016-06-13 12:53:39992Durchsuche

高手请进,curl模拟登陆的问题
我想要做一个模拟登陆,可是一般网站有表单提交的都可以模拟登陆成功
就是另一些网站,比如速卖通(https://login.aliexpress.com/)

我的代码是这写的


function vlogin($url,$request){
        $cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
        $ch = curl_init(); //初始化curl模块
        curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
        curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//要提交的内容
        //把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中
        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); //get data after login        
        return $cookie_jar;
    }
    
//登录成功后通过cookies获取页面内容
    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;
    }

function clear_cookie($cookie_tmp_name){
        @unlink($cookie_tmp_name);
    }


    $list_url='http://cn.ae.alibaba.com/index.htm';
    $login_url='https://login.aliexpress.com/';
    $post_data='pd=aliexpress&xloginPassport=******&xloginPassword=******';
    $cookie_file=vlogin($login_url,$post_data);    
    $tmp_curl=get_content_by_cookie($list_url,$cookie_file);
echo $cookie_file;
echo $tmp_curl;

//clear_cookie($cookie_file);

?>


可是登陆不成功,感觉应该是 $login_url 错了,速卖通里既然是不通过form提交的,我JS基础不是很好,看不懂他的代码,求高手提点下!
感谢啊!


------解决方案--------------------
你可以改改你得vlogin函数,察看返回头+body
function vlogin($url,$request){<br>
  $cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件<br>
  $ch = curl_init(); //初始化curl模块 <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn