將 PHP 的 cURL 加上自定義的 User-Agent

前言

在 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 的值囉。