什麼是CURL?
利用URL文法愛命令列方式下工作的檔案傳輸工具。它支援很多協議。它支援認證功能。php中常用都實現更複雜的傳輸功能。
實現的功能:
1、實現遠程擷取和採集內容
2、實現PHP 網頁版的FTP上傳下載
3、實現類比登陸:去一個郵件系統,curl可以類比cookies
4、實現介面對接(API),資料轉送等:通過一個平台傳送簡訊啊,抓取和傳遞所傳輸的資訊。
5、實現類比Cookie等:登陸的狀態下才可以操作一些屬性。
如何使用CURL功能:
預設情況加PHP是不支援CURL的,需要在php.ini中開啟該功能
;extension=php_curl.dll前面的分號去掉
1 整個操作過程中第一步是用cur_init()函數進行初始化
$curl = curl_init(‘www.php100.com’)
2.用curl_setopt()函數進行設定選項。
3.設定後,進行執行事務 curl_exec($curl);
4 最後關閉curl_close();
使用PHP CURL實現傳輸和擷取功能(post傳輸方式):擷取遠程網頁資料
$user = "admin";
$pass = "admin100";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init(); //初始化一個CURL對象
curl_setopt($ch, CURLOPT_URL, "http://localhost/edu/login.php");
//設定你所需要抓取的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
//設定curl參數,要求結果是否輸出到螢幕上,為true的時候是不返回到網頁中
假設上面的0換成1的話,那麼接下來的$data就需要echo一下。
curl_setopt($ch, CURLOPT_POST, 1);
//post提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
//運行curl,請求網頁。
curl_close($ch);
實現遠程類比登陸最基礎部分。
curl也還是需要配置使用者名稱和密碼的,只不過是被瀏覽器隱藏了。
============================================================================
curl類比登陸
類比登陸:就是不登陸到php100的論壇,也能查看到相應的資訊。
分析登陸欄位--->登陸後保留cookie狀-->讀取cookie並跳轉到相關頁-->抓取數
1、類比登陸後建立一個檔案儲存cookie內容
2、通過讀取產生的cookie內容類比使用者登陸狀態
3、到相關頁面擷取所需內容
tempname建立一個臨時檔案
tempnam() 函數建立一個具有唯一檔案名的臨時檔案。若成功,則該函數返回新的臨時檔案名稱。若失敗,則返回 false。
tempnam(dir,prefix)
參數 描述
dir 必需。規定建立臨時檔案的目錄。
prefix 必需。規定檔案名稱的開頭。
相當於,fopen fwirte fclose
它可以返回一個布爾值。使用第三方來登陸你的QQ、msn是很危險的,因為它可以記錄你的登入狀態,抓取你的使用者名稱和密碼。
使用CURL類比登陸到PHP100論壇
1、分析登陸所需input框欄位名和所需欄位數量
2、儲存cookie 類比登陸後擷取會員金幣數量
code:
//初始化一個 cURL 對象
$curl = curl_init();
//設定你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com");
//設定cURL 參數,要求結果儲存到字串中還是輸出到螢幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);
//運行cURL,請求網頁
$data = curl_exec($curl);
//關閉URL請求
curl_close($curl);
$user = "admin";
$pass = "admin100";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/curl/login.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
curl_close($ch);
?>
if($_POST['user']=="admin"){
echo "";
}else{
echo "";
}
//print_r($_POST);
?>
=====
類比登陸代碼
pw_php100.php
$cookie_file=tempnam('./temp','cookie');
$login_url="http://bbs.php100.com/login.php";
$post_fields="cktime=3600&step=2&pwuser=php100&pwpwd=11111";
$ch=curl_init($login_url);
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com";
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$data = curl_exec($ch);
curl_close($ch);
$url="http://bbs.php100.com/userpay.php";
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch);
preg_match("/
金錢:<\/li>/",$contents,$arr);
echo $arr[1];
curl_close($ch);?>
======
login.php
print_r($_POST);
?>
====================
curl.php
$curlPost = "user=$user&pass=$pass";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/edu/login.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
curl_close($ch);
?>
http://www.bkjia.com/PHPjc/815971.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/815971.htmlTechArticle什麼是CURL? 利用URL文法愛命令列方式下工作的檔案傳輸工具。它支援很多協議。它支援認證功能。php中常用都實現更複雜的傳輸功能...