前言
在 PHP 發送 cURL 要求時,如果你不特別設定 User-Agent 時,這個欄位就會保持空值。但是這樣在別人眼中就能很直覺的認為你是機器人,而且也有部分服務供應商會要求你必須設定 User-Agent,這時候你就可以接著看下去囉!
User-Agent 是什麼
User-Agent 中文叫做使用者代理,他可以讓伺服器知道使用者正透過什麼樣的操作系統訪問這個網站,像筆者撰寫這篇文章的當下,主流瀏覽器的 User-Agent 長這樣:
# Firefox
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0
# Chrome
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
有些 cURL 預設也會有自己的 User-Agent,例如 Python 的 Requests,預設就會設定為 python-requests/2.28.2
(依照版本可能有所不同),但你也可以自己自定義來偽造成一般瀏覽器的 User-Agent,讓伺服器以為這是個正常使用者透過瀏覽器的要求。
本篇文章將講解 PHP 的 cURL 設定方法。
操作方法
你可以使用這個參數來使 cURL 使用你指定的 User-Agent:
<?php
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0");
?>
在上面的設定中,最後面的值就是你希望設定的 User-Agent 內容。
放在一個 cURL 陣列可能是長這樣的:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://www.google.com',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_NONE,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(),
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0"
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
這樣你就可以使你的 cURL 要求帶有 User-Agent 的值囉。