搜尋
首頁php教程PHP源码PHP模擬登入並取得數據

cURL 是一個功能強大的PHP庫,使用PHP的cURL庫可以簡單和有效地抓取網頁並採集內容,設定cookie完成模擬登入網頁,curl提供了豐富的函數,開發者可以從PHP手冊中獲取更多關於cURL資訊。本文以模擬登入開源中國(oschina)為例,和大家分享cURL的使用。

PHP的curl()在抓取網頁的效率方面是比較高的,而且支援多線程,而file_get_contents()效率就要稍低些,當然,使用curl時需要開啟下curl擴充。

程式碼實戰


先來看登入部分的程式碼:

//模拟登录  function login_post($url, $cookie, $post) { 
    $curl = curl_init();//初始化curl模块 
    curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址 
    curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息 
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中 
    curl_setopt($curl, CURLOPT_POST, 1);//post方式提交 
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息 
    curl_exec($curl);//执行cURL 
    curl_close($curl);//关闭cURL资源,并且释放系统资源 
}

函數login_post()先初始化curl_init(),然後使用curl_setopt()設定相關選項訊息,包括要提交的urlookie文件,post的資料(使用者名稱和密碼等資訊),是否回傳資訊等等,然後curl_exec執行curl,最後curl_close()釋放資源。注意PHP自帶的http_build_query()可以將陣列轉換成相連的字串。

接下來如果登入成功後,我們要取得登入成功後的頁面資訊。

//登录成功后获取数据  function get_content($url, $cookie) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie 
    $rs = curl_exec($ch); //执行cURL抓取页面内容 
    curl_close($ch); 
    return $rs; 
}

函數get_content()中也是先初始化curl,然後設定相關選項,執行curl,釋放資源。其中我們設定CURLOPT_RETURNTRANSFER為1即自動回傳訊息,而CURLOPT_COOKIEFILE可以讀取到登入時儲存的cookie訊息,最後將頁面內容回傳。

我們的最終目的是要獲取到模擬登入後的信息,也就是只有正常登入成功後才能獲取的有用資訊。接下來我們以登入開源中國的行動版為例,看看如何抓取到登入成功後的資訊。

//设置post的数据  $post = array ( 
    'email' => 'oschina账户', 
    'pwd' => 'oschina密码', 
    'goto_page' => '/my', 
    'error_page' => '/login', 
    'save_login' => '1', 
    'submit' => '现在登录' 
); 
  //登录地址  $url = "http://m.oschina.net/action/user/login";  //设置cookie保存路径  $cookie = dirname(__FILE__) . '/cookie_oschina.txt';  //登录后要获取信息的地址  $url2 = "http://m.oschina.net/my";  //模拟登录 
login_post($url, $cookie, $post);  //获取登录页的信息  $content = get_content($url2, $cookie);  //删除cookie文件 
@ unlink($cookie);  //匹配页面信息  $preg = "/<td class=&#39;portrait&#39;>(.*)<\/td>/i"; 
preg_match_all($preg, $content, $arr);  $str = $arr[1][0];  //输出内容  echo $str;

運行上述程式碼後,我們會看到最終獲取到登入使用者的頭像圖片。

PHP模擬登入並取得數據

使用總結

1、初始化curl;

2、使用curl_setopt設定目標url,和其他選項;

3、curl_exec,執行curl;

5

、輸出數據。

參考文獻

《curl簡介及php中的curl》,作者不詳,http://www.2cto.com/kf/201208/147091.html

《使用PHP CURL的POST資料》,作者:Veda ,http://www.nowamagic.net/librarys/veda/detail/124

《php 使用curl模擬登入discuz以及模擬發文》,作者:tianxin,http://www.cnblogs.com/tianxin2001x/archive/ 2009/10/28/1591311.html

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具