在 PHP 中设置 HTTP 代理设置可以通过修改 stream_context
的参数来实现。下面是一个示例代码:
$proxy = 'tcp://proxy.example.com:8080'; // 代理地址
$proxyAuth = 'username:password'; // 代理认证信息
$context = stream_context_create([
'http' => [
'proxy' => $proxy,
'request_fulluri' => true,
'header' => "Proxy-Authorization: Basic " . base64_encode($proxyAuth)
]
]);
$url = 'http://www.example.com'; // 要访问的 URL
$response = file_get_contents($url, false, $context); // 使用代理访问 URL
var_dump($response);
在上述代码中,首先定义了代理地址和认证信息。然后创建了一个 stream_context
上下文对象,并将代理地址、请求完整的 URI 和代理认证信息设置到 http
参数中。最后,使用 file_get_contents()
函数访问指定的 URL,并传入上下文对象作为第三个参数。
请注意,如果要使用代理认证信息,则需要提供正确的用户名和密码,并使用 Base64 编码格式进行认证。另外,request_fulluri
参数设置为 true
是为了让 PHP 使用完整的 URI,而不只是路径部分。
如果你使用的是 cURL 扩展,也可以使用 curl_setopt()
函数来设置代理,如下所示:
$proxy = 'proxy.example.com';
$port = 8080;
$username = 'username';
$password = 'password';
$ch = curl_init();
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYPORT, $port);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "$username:$password");
$url = 'http://www.example.com'; // 要访问的 URL
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
上述代码中,首先设置代理地址和端口,然后设置代理的用户名和密码。接着使用 curl_setopt()
函数设置相应的 cURL 选项,包括代理地址、代理端口和代理认证信息。最后,使用 curl_exec()
函数执行请求并获取响应。
这两种方法都可以设置 HTTP 代理,你可以根据自己的需求选择适合的方法。