2 回答

TA貢獻1874條經驗 獲得超12個贊
我成功了。訣竅是向登錄頁面發出初始 GET 請求,并獲取 cookie 以及"__VIEWSTATE"
, "__VIEWSTATEGENERATOR"
,"__EVENTVALIDATION"
動態字段。然后使用這些字段 POST 到相同的 URL。
之后,我不得不發出兩個 POST 請求,/dailyreport.aspx
同時從第一個獲取視圖狀態和其余變量,并將它們傳遞給第二個。只有這樣我才能檢索返回的 HTML 表。

TA貢獻1829條經驗 獲得超6個贊
你應該把你的POST數據放在里面CURLOPT_POSTFIELDS =>'',并且CURLOPT_URL應該指向登錄 URL。您這樣做的方式是使用 GET 請求請求站點。
$post = ['txtUserName'=>'myUserName','txtPassword'=>'myPassword123'];
curl_setopt_array($ch, array(
CURLOPT_URL => "https://partners.mrfavorit.com/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HEADER => true,
CURLOPT_POSTFIELDS =>http_build_query($post),
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"Cookie: ".$cookies2
),
));
$r2 = curl_exec($ch);
print_r($r2);
看到這個PHP + curl,HTTP POST 示例代碼了嗎?
[編輯] 添加http_build_query()
到$post
將生成一個application/x-www-form-urlencoded
HTTP 請求
- 2 回答
- 0 關注
- 126 瀏覽
添加回答
舉報