亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php CURL以編程方式登錄站點

php CURL以編程方式登錄站點

PHP
寶慕林4294392 2023-03-04 11:18:09
我正在嘗試使用 PHP CURL 編寫登錄函數以在以下站點中執行登錄: https: //partners.mrfavorit.com/。當我查看網絡請求時,平臺似乎在 .NET 上。首先,我發出一個 GET 請求來收集 cookie:$ch = curl_init();curl_setopt_array( $ch, array(  CURLOPT_URL => 'https://partners.mrfavorit.com/',  CURLOPT_RETURNTRANSFER => true,  CURLOPT_ENCODING => "",  CURLOPT_MAXREDIRS => 10,  CURLOPT_TIMEOUT => 30,  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,  CURLOPT_CUSTOMREQUEST => 'GET',  CURLOPT_HEADER => true,));$a = curl_exec($ch);preg_match_all('|Set-Cookie: (.*);|U', $a, $results);$cookies2 = implode(';', $results[1]);然后我將帶有登錄憑據的 POST 發送到相同的 URL,但它不起作用,請求返回 200 和登錄頁面 html 代碼。curl_setopt_array($ch, array(  CURLOPT_URL => "https://partners.mrfavorit.com/?&txtUserName=myusername&txtPassword=mypassword123",  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 =>'',  CURLOPT_HTTPHEADER => array(    "Content-Type: application/json",    "Cookie: ".$cookies2  ),));$r2 = curl_exec($ch);print_r($r2);失敗的原因可能是什么?這樣做的最終目的是從系統內部的報表中收集數據。
查看完整描述

2 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

我成功了。訣竅是向登錄頁面發出初始 GET 請求,并獲取 cookie 以及"__VIEWSTATE""__VIEWSTATEGENERATOR","__EVENTVALIDATION"動態字段。然后使用這些字段 POST 到相同的 URL。

之后,我不得不發出兩個 POST 請求,/dailyreport.aspx同時從第一個獲取視圖狀態和其余變量,并將它們傳遞給第二個。只有這樣我才能檢索返回的 HTML 表。


查看完整回答
反對 回復 2023-03-04
?
肥皂起泡泡

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-urlencodedHTTP 請求

請參閱有關使用 curl_setopt 發布數組的評論


查看完整回答
反對 回復 2023-03-04
  • 2 回答
  • 0 關注
  • 126 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號