[請益] 使用 curl 登入 xuite

看板PHP作者 (小鹿)時間13年前 (2012/07/24 16:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位好 我想使用 curl 來登入 xuite 可是一直失敗>_< 我有去研究過 xuite 的登入過程了 打完帳密登入後,會經過 5個 setCookies 的(檔案??) 似乎是由打完帳密後,會有 Response Request header,再去抓裡頭的 Location 不過,我這樣寫,似乎都沒辦法得到正確的 Response Request header = =" WHY......~? <?php $url = "http://xuite.net/members/miniLogin.php?final=http://xuite.net"; $login_url = "https://member.xuite.net/HiReg/multiauthentication"; $uid = "uid"; $pw = "pw"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); $content = curl_exec($ch); $start=strpos($content,"src")+5; $end=strpos($content,"'",$start); $url = substr($content,$start,$end-$start); curl_setopt($ch, CURLOPT_URL, $url); $content = curl_exec($ch); curl_close ($ch); // get data $version = find_input_value("version",$content); $curl = find_input_value("curl",$content); $siteid = find_input_value("siteid",$content); $sessionid = find_input_value("sessionid",$content); $channelurl = find_input_value("channelurl",$content); $others = find_input_value("others",$content); $checksum = find_input_value("checksum",$content); $service_type = find_input_value("service_type",$content); $cp_reg_info = find_input_value("cp_reg_info",$content); $reg_url = find_input_value("reg_url",$content); $finish_channelurl = find_input_value("finish_channelurl",$content); $formtype = find_input_value("formtype",$content); $sso = find_input_value("sso",$content); $cssurl = find_input_value("cssurl",$content); // set data $post_data = array( "uid"=>$uid, "pw"=>$pw, "version"=>$version, "curl"=>$curl, "siteid"=>$siteid, "sessionid"=>$sessionid, "channelurl"=>$channelurl, "others"=>$others, "checksum"=>$checksum, "service_type"=>$service_type, "cp_reg_info"=>$cp_reg_info, "reg_url"=>$reg_url, "finish_channelurl"=>$finish_channelurl, "formtype"=>$formtype, "sso"=>$sso, "cssurl"=>$cssurl, ); // var_dump($post_data); // function cURL($url, $header=NULL, $p=NULL) $a= cURL ($login_url,null,$post_data); // post data 後, 已有 cookie echo cURL("http://xuite.net", null, null); // 進入 xuite.net function find_input_value($name,$content){ $start = strpos($content, "name=\"$name"); $start=strpos($content,"value",$start)+7; // +7 是因為 value=" 長度為7 $end=strpos($content,"\"",$start); $value = substr($content,$start,$end-$start); return $value; } function cURL($url, $header=NULL, $p=NULL) { $ch = curl_init(); $cookie_jar = './cookie.txt'; // curl_setopt($ch, CURLOPT_HEADER, $header); // curl_setopt($ch, CURLOPT_NOBODY, $header); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $p); $result = curl_exec($ch); if ($result) { return $result; } else { return curl_error($ch); } curl_close($ch); } ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.210.77.126
文章代碼(AID): #1G3bZo-m (PHP)
文章代碼(AID): #1G3bZo-m (PHP)