首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

PHP cURL 抓取遠端頁面內容:基本操作與偽裝 Header 範例

     編輯:更多程式設計知識

最基本流程

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 回傳字串而非直接輸出
curl_setopt($ch, CURLOPT_TIMEOUT, 30);       // 逾時秒數
$content = curl_exec($ch);
curl_close($ch);

進階:POST 資料、偽裝 Referer/User-Agent/IP

$postData = 'a=1&b=2';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.example.com');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-FORWARDED-FOR: 0.0.0.0',
    'CLIENT-IP: 0.0.0.0'
]); // 偽裝來源 IP (視伺服器是否信任)
curl_setopt($ch, CURLOPT_REFERER, 'https://www.referrer.com/'); // 偽裝來路
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'); // 偽裝 UA
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 支援 3xx 重導向
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 開發環境忽略 SSL 驗證 (生產請勿用)
$content = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'cURL Error: ' . curl_error($ch);
}
curl_close($ch);

常用 CURLOPT 選項速查

選項用途
CURLOPT_URL目標網址
CURLOPT_RETURNTRANSFER1=回傳字串, 0=直接輸出
CURLOPT_POST1=啟用 POST
CURLOPT_POSTFIELDSPOST 資料 (字串或陣列)
CURLOPT_HTTPHEADER自訂 Header 陣列
CURLOPT_REFERERReferer 標頭
CURLOPT_USERAGENTUser-Agent 標頭
CURLOPT_TIMEOUT連線逾時 (秒)
CURLOPT_CONNECTTIMEOUT建立連線逾時 (秒)
CURLOPT_FOLLOWLOCATION1=自動追蹤重導向
CURLOPT_MAXREDIRS最大重導向次數
CURLOPT_COOKIEJAR/COOKIEFILECookie 儲存/讀取檔案
CURLOPT_SSL_VERIFYPEER0=不驗證 SSL 憑證

錯誤處理模式

$content = curl_exec($ch);
if ($content === false) {
    $errno = curl_errno($ch);
    $error = curl_error($ch);
    // 記錄日誌、重試、拋出例外
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved