[請益] 使用 curl 登入 xuite
各位好
我想使用 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
PHP 近期熱門文章
PTT數位生活區 即時熱門文章