📜  用户代理 cURL php (1)

📅  最后修改于: 2023-12-03 15:40:55.508000             🧑  作者: Mango

用户代理 cURL php

什么是 cURL?

cURL 是一个免费的、支持各种协议的库和命令行工具,用于在网络上传输数据,支持 HTTP、HTTPS、FTP、FTPS、POP3、IMAP、SMTP、LDAP 等协议。 cURL 是 Client URL 的缩写,有点像是一个万能的网络请求器。

cUrl 的基本用法

在 PHP 中使用 cURL,需要先通过 curl_init() 函数初始化一个新的 cURL 会话,并通过 curl_setopt() 设置会话选项。然后使用 curl_exec() 函数执行会话。 下面这个示例展示了如何向指定的 URL 发起 GET 请求:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://example.com/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
curl_close($curl);
echo $result;

上面的代码中,curl_setopt() 设置了两个选项:

  • CURLOPT_URL:请求的 URL。
  • CURLOPT_RETURNTRANSFER:将 cURL 请求的结果保存到变量中。

最后,通过 curl_close() 函数关闭会话。

使用 cURL 模拟浏览器行为

许多网站会根据不同的 User-Agent 显示不同的内容,所以我们可以使用 cURL 模拟浏览器行为来获取不同的内容。 例如,我们可以设置 User-Agent 为 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0 来模拟 Firefox 浏览器:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://example.com/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0');
$result = curl_exec($curl);
curl_close($curl);
echo $result;
使用 cURL 发送 POST 请求

除了 GET 请求,我们还可以使用 cURL 发送 POST 请求。下面这个示例展示了如何向指定的 URL 发送 POST 请求:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://example.com/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'foo=bar&baz=qux');
$result = curl_exec($curl);
curl_close($curl);
echo $result;

上面的代码中,curl_setopt() 设置了一些选项:

  • CURLOPT_URL:请求的 URL。
  • CURLOPT_RETURNTRANSFER:将 cURL 请求的结果保存到变量中。
  • CURLOPT_POST:设置为 true,表示发送 POST 请求。
  • CURLOPT_POSTFIELDS:POST 请求的参数。
使用 cURL 发送 JSON 请求

如果要发送 JSON 请求,需要设置 Content-Type 为 application/json,然后将 JSON 发送到服务器。下面这个示例展示了如何向指定的 URL 发送 JSON 请求:

$data = ['foo' => 'bar', 'baz' => 'qux'];
$jsonData = json_encode($data);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://example.com/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($jsonData)
]);
$result = curl_exec($curl);
curl_close($curl);
echo $result;

上面的代码中,先将要发送的数据转成 JSON 格式,然后设置选项:

  • CURLOPT_URL:请求的 URL。
  • CURLOPT_RETURNTRANSFER:将 cURL 请求的结果保存到变量中。
  • CURLOPT_POST:设置为 true,表示发送 POST 请求。
  • CURLOPT_POSTFIELDS:POST 请求的参数(JSON 格式)。
  • CURLOPT_HTTPHEADER:设置 Content-Type 为 application/json,并指定请求的长度。