php使用curl帶cookie訪問一直失敗求助


最近需要批量向織夢后台導入一些數據,但是遇到了一個頭疼的問題。

環境:xampp + 別人的dede后台。

首先,利用curl發送post請求登錄login.php,成功,並且保存了cookie文件。

第二步,post發送數據包到co_get_corule.php,失敗,得到登錄頁面的源碼。

於是,嘗試簡單的get請求,get獲取index.php,同上,依舊是cookie沒帶上的效果。

第三步,檢查cookie文件,確實存在,且內容也是正確的。

經過多次重復試驗,依舊失敗,於是發帖求助。

 

<?php 
    header("Content-type: text/html; charset=utf-8");
    !extension_loaded('curl') && die('The curl extension is not loaded.');
    $cookie_jar = tempnam('./cookies','cookie');//存放COOKIE的文件
    
    //登陸認證
    $url = 'http://localhost/dede/login.php';
    

    //本來封裝了函數,后來一直不成功,於是還原成了最原始的代碼積木
    
    $post_data='gotopage=index.php&dopost=login&adminstyle=newdedecms&userid=admin&pwd=admin';    
    
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);    
    curl_setopt($ch, CURLOPT_HEADER, 0);      
    curl_setopt($ch, CURLOPT_POST, 1);     //設置post方式    
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // 1相當於return,0相當於echo    
    
    curl_setopt($ch,CURLOPT_COOKIESESSION,true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //設置需要post的數據    
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);  //保存cookie信息    
    
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); //是否抓取跳轉后的頁面,1是自動跳轉        
    //curl_setopt($ch, CURLOPT_NOBODY,1); //輸出的不包含body部分    
    
    $output1 = curl_exec($ch);    
    
    //寫入結果到文件
    file_put_contents('login.txt', $output1);
    
    curl_close($ch);
    
    
    
    //這里本來封裝了函數,后來一直不成功,於是還原成了最原始的代碼積木
    
    $url2 = "http://localhost/dede/index.php";
    $ch2 = curl_init();
    
    curl_setopt($ch2, CURLOPT_URL, $url2);
    curl_setopt($ch2, CURLOPT_HEADER, 0);  
    
    curl_setopt ( $ch2, CURLOPT_RETURNTRANSFER, 1 ); // 1相當於return,0相當於echo
    curl_setopt($ch2, CURLOPT_BINARYTRANSFER, true);   
    
    curl_setopt($ch2, CURLOPT_TIMEOUT, 30);    //超時時間30s    
    curl_setopt($ch2,CURLOPT_COOKIESESSION,true);
    curl_setopt($ch2, CURLOPT_HTTPGET, 1); // 發送一個常規的get請求
    curl_setopt($ch2, CURLOPT_AUTOREFERER, 1); // 自動設置Referer   
    curl_setopt($ch2,CURLOPT_COOKIEFILE,$cookie_jar);//發送cookie文件
    curl_setopt($ch2, CURLOPT_COOKIEJAR, $cookie_jar);  //保存cookie信息
    
    curl_setopt($ch2, CURLOPT_FOLLOWLOCATION,1); //是否抓取跳轉后的頁面,1是自動跳轉
    //curl_setopt($ch, CURLOPT_NOBODY,1); //輸出的不包含body部分
    
    $output = curl_exec($ch2);
    file_put_contents('index.txt', $output);
    curl_close($ch2);
    
    
    unlink($cookie_jar);
?>     


以上是拆掉函數后的原始代碼,不具可讀性,只求能解決這個坎兒,期待大家的幫忙,謝謝!

【PS:實在不知道如何驗證cookie是否起作用了】

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM