PHP抓包之curl、file_get_contents 操作例項
阿新 • • 發佈:2019-01-31
1.概述
- file_get_contents函式多用來於來採集遠端伺服器上的內容,但使用file_get_contents函式之前我們在php.ini中是必須把allow_url_fopen開啟才行
- cURL 是一個利用URL語法規定來傳輸檔案和資料的工具,支援很多協議,如HTTP、FTP、TELNET等。
2、file_get_contents 和 curl 區別
1.curl 支援更多功能
curl 支援更多協議,有http、https、ftp、gopher、telnet、dict、file、ldap;模擬 Cookie 登入,爬取網頁;FTP 上傳下載。
fopen / file_get_contents 只能僅支援http協議獲取資料。
2.效能
curl 可以進行 DNS 快取,同一個域名下的圖片或其它資源只需要進行一次DNS查詢。
curl 相對來說更加快速穩定,訪問量高的時候首選 curl,缺點就是相對於 file_get_contents 配置繁瑣一點,file_get_contents 適用與處理小訪問的應用。
CURL 訪問方式
1.語法
curl_init; //初始化 cURL 會話。
curl_setopt; //設定 cURL 傳輸選項。
//curl_setopt 設定 CURLOPT_RETURNTRANSFER 為 TRUE 時將 curl_exec() 獲取的資訊以字串返回。
curl_exec; //返回 true / false,
curl_close; //關閉 cURL 會話。
2.get請求
//1.初始化Curl
$curl = curl_init();
//設定curl傳輸選項
curl_setopt($curl, CURLOPT_URL, 'www.baidu.com');//訪問ip地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//設定為FALSE 禁止 cURL 驗證對等證書
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//設定為1或true時,獲取的資訊以字串返回
$data = curl_exec($curl); //返回值
curl_close($curl);
return $data;
3.post請求
$post_data = ['username' => '123456','password' => '******'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'www.baidu.com/login');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, 1);//設定為1或true時,是post請求,
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//post請求引數
$output = curl_exec($ch);
curl_close($ch);
$out = json_decode($output);
return $out;
file_get_contents訪問方式
1.語法:
file_get_contents(path, include_path, context, start, max_length)
path:要讀取的路徑或連結。
include_path:是否在路徑中搜索檔案,搜尋則設為 1,預設為 false。
context:修改流的行為,如超時時間,GET / POST 等。
start:開始讀檔案的位置。
max_length:讀取檔案的位元組數。
2.get請求
$ret = file_get_contents("http://www.baidu.com");
3.post請求
$url = 'www.baidu.com/login';
$data = ['username' => '123456','password' => '******'];
$data = json_encode($data);
$opts = [
'http' => [
'method' => 'POST',
'header' => 'Content-type:application/json',
'content' => $data,
]
];
//stream_context_create()函式:建立並返回一個文字資料流並應用各種選項,
//可用於fopen(),file_get_contents()等過程的超時設定、代理伺服器、請求方式、頭資訊設定的特殊過程
$context = stream_context_create($opts);
$ret = file_get_contents($url,false,$context);
總結
file_get_contents處理頻繁小的時候,如果你的檔案被1k+人處理。那麼會佔用您的伺服器大量cpu。
curl 相對來說更加快速穩定,訪問量高的時候首選 curl,
根據本人習慣,更喜歡curl,因為他是PHP專業的抓包工具,能夠更好的支援資料協議,
本片部落格簡單的介紹一下curl、file_get_contents的介紹、使用、區別,為小夥伴更好的學習和工作中使用,能幫助小夥伴在工作中減少犯難是我的幸福,祝每一個程式設計師不再有bug,感覺對你有幫助的小夥伴請多多支援