php curl

curl是模擬瀏覽器抓取網站信息

 

官方解釋

 

curl是一個利用URL語法在命令行方式下工作的文件傳輸工具。curl是一個利用URL語法在命令行方式下工作的文件傳輸工具。

它支持很多協議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同樣支持HTTPS認證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認證, HTTP上傳, 代理伺服器, cookies, 用戶名/密碼認證, 下載文件斷點續傳,

上載文件斷點續傳, http代理伺服器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理伺服器, 通過http代理伺服器上傳文件到FTP伺服器等等,功能十分強大。

 

 

 

curl講解一

 

PHP中curl函數應用

簡單的來說一共四步

curl_init();

curl_setopt();

curl_exec();

curl_close();

 

最重要的命令就是 curl_setopt();

 

一個簡單的post請求例子

index.php

<?php

$url = "http://www.mytest.com/curl/login.php";  //請求的url地址

$user = "zkg111"; //用戶名

$pass = "123456"; 

$postdata = "user_name=".$user."&password=".$pass;  //請求的數據,以 & 符號分割

$curl = curl_init(); //開啟curl

curl_setopt($curl, CURLOPT_URL, $url); //設置請求地址

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  //是否輸出 1 or true 是不輸出 0  or false輸出

curl_setopt($curl, CURLOPT_POST, 1); //是否使用post方法請求

curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);  //post數據

 

 

echo $data = curl_exec($curl); //執行curl操作

curl_close($curl);

?>

 

login.hp

print_r($_POST);

 

下面一個簡單的例子,我隨便打開瞭兄弟連的論壇,接著就模擬瞭一下兄弟連論壇的登陸,如果需要發帖的話原理都是一樣的,轉接頁面,提交數據

特別註意的是cookie的保存目錄 windows7下面必須是在./temp目錄下,開始我自己創建瞭一個新文件夾,發現存是對的,但是cookie讀取的時候不對,為此還在好多地方

提問,但是沒有回答對的,折騰瞭好幾天該瞭保存文件為./temp目錄下才可以的,提醒別的朋友別和我一樣瞎轉

 

<?php

$url = "http://bbs.lampbrother.net/login.php";

$urls = "http://bbs.lampbrother.net";

$lgt = 0;

$user = "XXXX";

$pass = "XXXX";

$question = 0;

$hideid = 1;

 

 

$cookie_file    =    tempnam('./temp','cookie');

 

 

$postdata = "forward=&jumpurl=".$urls."&step=2&lgt=".$lgt."&pwuser=".$user."&pwpwd=".$pass."&question=".$question."&answer=&hideid=".$hideid;

$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_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

 

 

 

 

$data = curl_exec($ch);

curl_close($ch);

 

 

//echo $data;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://bbs.lampbrother.net/');

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

 

 

curl_exec($ch);

curl_close($ch);

?>

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *