在 PHP 中使用代理

如何在 PHP 中使用代理(2025)

在本指南中,我将向您介绍如何使用 cURL 在 PHP 中设置代理。我还将介绍如何处理代理身份验证、轮换代理以提高安全性,以及使用可靠的高级代理,如 Bright Data.那么,让我们开始吧,让你的网络搜索更流畅、更匿名!

在 PHP 中设置代理

首先,我们来看看如何使用 PHP 的 cURL 库设置一个基本的代理。为此,你可以从公共代理列表中获取一个免费代理。请注意,免费代理的可靠性较低,随时可能停止工作。

步骤 1:创建一个抓取器函数

要开始使用,请创建一个 PHP 脚本,在其中设置 cURL 请求并配置代理。下面是一个示例:

function 刮刀() {
// 初始化 cURL
$curl = curl_init();
// 设置目标 URL
curl_setopt($curl, CURLOPT_URL、 "https://httpbin.org/ip");
// 设置代理地址
curl_setopt($curl, curlopt_proxy、 "http://50.223.246.237:80");
// 设置选项以接收字符串形式的响应
curl_setopt($curl, curlopt_returntransfer、 true);
// 跟踪重定向
curl_setopt($curl, curlopt_followlocation、 true);
// 执行 cURL 请求
$html = curl_exec($curl);
// 显示响应
echo $html;
// 如果有错误,捕捉错误
if (curl_errno($curl)) {
echo cURL 错误: ' . curl_error($curl);
}
// 关闭 cURL 会话
curl_close($curl);
}
// 运行函数
刮刀();
?>

输出

输出结果将显示发出请求时使用的代理 IP:

{
"origin": "50.223.246.237"
}

如果出现类似 "CONNECT tunnel failed"(连接隧道失败)的错误,这是因为免费代理可能不可靠。在这种情况下,只需使用列表中的另一个即可。

PHP 中的代理验证

许多 有偿代理服务在使用它们的代理之前,您需要进行身份验证。要进行身份验证,您需要在 cURL 请求中包含您的代理用户名和密码。

下面是一个如何在 PHP 中验证代理的示例:

function 刮刀() {
// 初始化 cURL
$curl = curl_init();
// 设置目标 URL
curl_setopt($curl, CURLOPT_URL、 "https://httpbin.org/ip");
// 设置代理地址
curl_setopt($curl, curlopt_proxy、 "http://54.37.214.253:8080");
// 提供代理证书
curl_setopt($curl, curlopt_proxyuserpwd、 "用户名:密码");
// 设置以字符串形式返回响应的选项
curl_setopt($curl, curlopt_returntransfer、 true);
// 跟踪重定向
curl_setopt($curl, curlopt_followlocation、 true);
// 执行 cURL 请求
$html = curl_exec($curl);
// 显示响应
echo $html;
// 如果有错误,捕捉错误
if (curl_errno($curl)) {
echo cURL 错误: ' . curl_error($curl);
}
// 关闭 cURL 会话
curl_close($curl);
}
// 运行函数
刮刀();
?>

如果您输入了错误的用户名或密码,会出现 407 错误。请仔细检查您的凭据,然后再试一次。

PHP 中的旋转代理

为避免检测和阻塞,轮换代理是一种很好的方法。这种技术使用多个代理,每次请求时轮流使用。这会让每个请求看起来来自不同的位置,从而帮助你避免 IP 禁止和速率限制。

下面介绍如何在 PHP 中实现代理轮换:

// 代理旋转功能
function 代理旋转器($proxy_list) {
// 从列表中随机选择一个代理
return $proxy_list[array_rand($proxy_list)];
}
function 刮刀() {
// 代理列表
$proxies = [
'http://203.115.101.51:82',
'http://50.207.199.82:80',
'http://188.68.52.244:80',
];
// 从列表中随机获取一个代理
$proxy = 代理旋转器($proxies);
// 初始化 cURL
$curl = curl_init();
// 设置目标 URL
curl_setopt($curl, CURLOPT_URL、 "https://httpbin.org/ip");
// 设置代理地址
curl_setopt($curl, curlopt_proxy、 $proxy);
// 设置以字符串形式返回响应的选项
curl_setopt($curl, curlopt_returntransfer、 true);
// 跟踪重定向
curl_setopt($curl, curlopt_followlocation、 true);
// 执行 cURL 请求
$html = curl_exec($curl);
// 显示响应
echo $html;
// 如果有错误,捕捉错误
if (curl_errno($curl)) {
echo cURL 错误: ' . curl_error($curl);
}
// 关闭 cURL 会话
curl_close($curl);
}
// 运行函数
刮刀();
?>

输出结果将显示每个请求的不同 IP 地址,从而确认代理轮换正常工作:

{
"origin": "188.68.52.244"
}

虽然免费代理非常适合测试,但它们的失败率很高,不适合大规模操作。要进行可靠的搜索,最好使用高级代理。

使用高级代理提高可靠性

高级代理,如 Bright DataSmartproxy这些代理服务器提供高度可靠的住宅 IP。这些代理不太可能被标记,因为它们与真实用户的设备绑定。Bright Data 和 Smartproxy 还提供地理位置和代理轮换等功能,帮助您绕过地理限制,避免被发现。

以下是如何集成 Bright Data 的 住宅代理 使用 PHP:

function 刮刀() {
// 初始化 cURL
$curl = curl_init();
// 设置目标 URL
curl_setopt($curl, CURLOPT_URL、 "https://httpbin.org/ip");
// 设置代理地址(亮数据)
curl_setopt($curl, curlopt_proxy、 "http://your_proxy_address");
// 提供您的 Bright Data 证书
curl_setopt($curl, curlopt_proxyuserpwd、 "您的用户名:您的密码");
// 设置以字符串形式返回响应的选项
curl_setopt($curl, curlopt_returntransfer、 true);
// 跟踪重定向
curl_setopt($curl, curlopt_followlocation、 true);
// 执行 cURL 请求
$html = curl_exec($curl);
// 显示响应
echo $html;
// 如果有错误,捕捉错误
if (curl_errno($curl)) {
echo cURL 错误: ' . curl_error($curl);
}
// 关闭 cURL 会话
curl_close($curl);
}
// 运行函数
刮刀();
?>

使用代理的最佳实践

为确保您的刮板有效工作并不被发现,请牢记以下最佳实践:

  • 轮换 IP:使用 旋转代理 以避免被发现。如果您要搜索大量数据,这一点至关重要。
  • 使用正确的标题:设置请求头,如 User-Agent 使请求看起来更像普通的网络流量。
  • 控制请求速度:过快发送过多请求可能会被检测到。在请求之间设置延时,或使用指数反向重试。
  • 讲道德:遵守网站 robots.txt 文件中的规则,并避免抓取违反网站服务条款的数据。

结论

在 PHP 中设置代理非常简单,可以帮助您在搜索数据时避免 IP 禁止。无论您是使用免费代理进行测试,还是使用 Bright Data 等高级代理提高可靠性,代理都是任何严肃的网络搜刮者所必须的。通过轮流使用代理、处理身份验证并遵循最佳实践,您就能安全高效地进行网站搜刮。

类似文章