当前位置: 首页> 最新文章列表> curl_init 如何设置 User-Agent?模拟浏览器请求这样做

curl_init 如何设置 User-Agent?模拟浏览器请求这样做

gitbox 2025-07-17

文章正文

1. 简介

在 web 开发中,cURL 是一个非常常用的工具,可以用来通过各种协议(如 HTTP, FTP)与服务器进行通信。在 PHP 中,cURL 扩展被广泛应用于获取远程页面内容、提交表单数据等操作。通常情况下,cURL 会默认使用 PHP 本身的 User-Agent,但在模拟浏览器请求时,我们需要伪装成浏览器发送请求,其中一个最常见的方式就是设置自定义的 User-Agent

2. 什么是 User-Agent?

User-Agent 是客户端(通常是浏览器)在向服务器发送请求时携带的一个 HTTP 头部。它通常用于标识请求的来源和客户端的详细信息,包括浏览器类型、操作系统版本等。通过 User-Agent,服务器可以根据不同的客户端设备和浏览器返回不同的内容。

例如,当浏览器访问网页时,HTTP 请求头会包含类似以下内容的 User-Agent 字段:

<span><span><span class="hljs-keyword">User</span></span><span><span class="hljs-operator">-</span></span><span>Agent: Mozilla</span><span><span class="hljs-operator">/</span></span><span><span class="hljs-number">5.0</span></span><span> (Windows NT </span><span><span class="hljs-number">10.0</span></span><span>; Win64; x64) AppleWebKit</span><span><span class="hljs-operator">/</span></span><span><span class="hljs-number">537.36</span></span><span> (KHTML, </span><span><span class="hljs-keyword">like</span></span><span> Gecko) Chrome</span><span><span class="hljs-operator">/</span></span><span><span class="hljs-number">91.0</span></span><span><span class="hljs-number">.4472</span></span><span><span class="hljs-number">.124</span></span><span> Safari</span><span><span class="hljs-operator">/</span></span><span><span class="hljs-number">537.36</span></span><span>
</span></span>

3. 如何通过 PHP 设置 User-Agent

使用 cURL 扩展模拟浏览器请求时,可以通过 curl_setopt() 函数的 CURLOPT_USERAGENT 选项来设置自定义的 User-Agent

在以下示例中,我们通过 curl_setopt() 来设置 User-Agent,以模拟 Chrome 浏览器的请求:

<span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, CURLOPT_USERAGENT, </span><span><span class="hljs-string">"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"</span></span><span>);
</span></span>

上述代码中的 User-Agent 字符串模拟了在 Windows 操作系统下,使用 Chrome 浏览器访问网页的请求。

4. 设置 User-Agent 示例

通过下面的 PHP 代码,我们演示了如何在 cURL 请求中设置 User-Agent 来模拟浏览器请求:

<span><span><span class="hljs-variable">$ch</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, CURLOPT_URL, </span><span><span class="hljs-string">"https://www.example.com"</span></span><span>);  </span><span><span class="hljs-comment">// 目标网址</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, CURLOPT_USERAGENT, </span><span><span class="hljs-string">"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"</span></span><span>);  </span><span><span class="hljs-comment">// 模拟浏览器的 User-Agent</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);  </span><span><span class="hljs-comment">// 返回响应内容而非直接输出</span></span><span>

</span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_exec</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>);  </span><span><span class="hljs-comment">// 执行请求</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>);  </span><span><span class="hljs-comment">// 关闭 cURL 会话</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$response</span></span><span>;  </span><span><span class="hljs-comment">// 输出响应内容</span></span><span>
</span></span>

5. 其他常见的 User-Agent 设置

为了提高爬虫的模拟效果,你可能还需要设置更为复杂的 User-Agent,或甚至是多个 User-Agent 之间的随机切换。以下是几个常见的浏览器的 User-Agent 示例:

  • Google Chrome:

    <span><span><span class="hljs-type">Mozilla</span></span><span><span class="hljs-regexp">/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/</span></span><span><span class="hljs-number">537.36</span></span><span> (</span><span><span class="hljs-type">KHTML</span></span><span>, like </span><span><span class="hljs-type">Gecko</span></span><span>) </span><span><span class="hljs-type">Chrome</span></span><span><span class="hljs-regexp">/91.0.4472.124 Safari/</span></span><span><span class="hljs-number">537.36</span></span><span>
    </span></span>
  • Mozilla Firefox:

    <span><span><span class="hljs-type">Mozilla</span></span><span><span class="hljs-regexp">/5.0 (Windows NT 10.0; Win64; x64) Gecko/</span></span><span><span class="hljs-number">20100101</span></span><span> </span><span><span class="hljs-type">Firefox</span></span><span><span class="hljs-operator">/</span></span><span><span class="hljs-number">89.0</span></span><span>
    </span></span>
  • Safari (Mac):

    <span><span><span class="hljs-type">Mozilla</span></span><span><span class="hljs-regexp">/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/</span></span><span><span class="hljs-number">537.36</span></span><span> (</span><span><span class="hljs-type">KHTML</span></span><span>, like </span><span><span class="hljs-type">Gecko</span></span><span>) </span><span><span class="hljs-type">Version</span></span><span><span class="hljs-regexp">/13.1 Safari/</span></span><span><span class="hljs-number">537.36</span></span><span>
    </span></span>

你可以根据需求更改 User-Agent 字符串,以使请求看起来像是来自不同的设备或浏览器。

6. 总结

通过 PHP 的 cURL 扩展,我们可以轻松地模拟浏览器请求,设置自定义的 User-Agent 来伪装请求来源。这在进行网络爬虫、API 请求等操作时非常有用,能够绕过一些简单的反爬机制,避免因使用默认的 User-Agent 被识别为机器人。

通过上述方法,你可以灵活地设置并调整 User-Agent,模拟各种不同的浏览器或设备来获取网页内容。