php curl登陸和擷取內容類別,請各位高手看怎麼使用呢

來源:互聯網
上載者:User
php 自動登入 類比登陸 擷取源碼

業務需求:
能夠通過php指令碼實現網頁自動登入,擷取登陸後頁面的內容。

現在在網上找到以下這個程式,可是在驗證的過程中發現未能成功,請各位高手給看看,謝謝。

class CURL
{
var $cookie_file; // 設定Cookie檔案儲存路徑及檔案名稱
var $loginurl;//登陸地地址
var $actionstr;//登陸參數
function __construct()
{
$this->cookie_file=dirname(__FILE__)."/cookie_".md5(basename(__FILE__)).".txt";
if(!file_exists($this->cookie_file))
{ // 檢測Cookie是否存在
$str = $this->vget('jroam'); // 擷取登入隨機值
preg_match("/name=\"formhash\" value=\"(.*?)\"/is",$str,$hash); // 提取登入隨機值
$this->vlogin($this->loginurl,$this->actionstr); // 登入擷取Cookie
}
}

function vlogin($url,$data){ // 類比登入擷取Cookie函數
$curl = curl_init(); // 啟動一個CURL會話
curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證認證來源的檢查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從認證中檢查SSL密碼編譯演算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 類比使用者使用的瀏覽器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動化佈建Referer
curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的資料包
curl_setopt($curl, CURLOPT_COOKIEJAR, $this->cookie_file); // 存放Cookie資訊的檔案名稱
curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie_file); // 讀取上面所儲存的Cookie資訊
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定逾時限制防止死迴圈
curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header地區內容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 擷取的資訊以檔案流的形式返回
$tmpInfo = curl_exec($curl); // 執行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); // 關閉CURL會話
return $tmpInfo; // 返回資料
}

function vget($url){ // 類比擷取內容函數
$curl = curl_init(); // 啟動一個CURL會話
curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證認證來源的檢查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從認證中檢查SSL密碼編譯演算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 類比使用者使用的瀏覽器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動化佈建Referer
curl_setopt($curl, CURLOPT_HTTPGET, 1); // 發送一個常規的Post請求
curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie_file); // 讀取上面所儲存的Cookie資訊
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定逾時限制防止死迴圈
curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header地區內容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 擷取的資訊以檔案流的形式返回
$tmpInfo = curl_exec($curl); // 執行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); // 關閉CURL會話
return $tmpInfo; // 返回資料
}

function vpost($url,$data){ // 類比提交資料函數
$curl = curl_init(); // 啟動一個CURL會話
curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證認證來源的檢查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從認證中檢查SSL密碼編譯演算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 類比使用者使用的瀏覽器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動化佈建Referer
curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的資料包
curl_setopt($curl, CURLOPT_COOKIEFILE, $this->cookie_file); // 讀取上面所儲存的Cookie資訊
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定逾時限制防止死迴圈
curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header地區內容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 擷取的資訊以檔案流的形式返回
$tmpInfo = curl_exec($curl); // 執行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); // 關鍵CURL會話
return $tmpInfo; // 返回資料
}
function delcookie($cookie_file){ // 刪除Cookie函數
@unlink($cookie_file); // 執行刪除
}
}

//應用執行個體
$mycurl=new CURL();
$mycurl->loginurl="http://192.168.0.2/login.php";//登陸地址
$mycurl->actionstr="user_name=111&uspassword=1234";//參數串;

$url1='http://192.168.0.2/userlist.php";
$htmlcontent= $mycurl->vget($url1); //輸出目標地址源碼
echo $htmlcontent;
?>


回複討論(解決方案)

補充說明下,是在linux平台環境中。

請確認你傳遞了正確的參數

$url1='http://192.168.0.2/userlist.php ";

ErrnoCould not resolve host: jroam;[color=#FF0000] Host not foundErrno malformedErrnocouldn't connect to host[/color]

自己已經解決了,還是要謝謝大家。

怎麼解決的呀?

我去,你解決了 也不丟個解決辦法!鄙視你!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.