I'm trying to create a proxy in PHP. When I visit the page http://example.com everything is OK, but using cURL, I always get a 401 Unauthorized Error.
My code:
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, getallheaders());
curl_setopt($ch, CURLOPT_URL, 'http://example.com');
print_r(curl_exec($ch));
The response:
HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/7.5
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Thu, 20 Oct 2016 01:30:11 GMT
Content-Length: 1293
在PHP中创建代理,可以使用cURL库。以下是一个简单的示例代码:
php
复制
插入
$proxy = 'http://proxy.example.com:8080'; // 代理服务器地址和端口
$url = 'http://www.example.com'; // 需要访问的URL
$ch = curl_init();
// 设置代理
curl_setopt($ch, CURLOPT_PROXY, $proxy);
// 设置URL
curl_setopt($ch, CURLOPT_URL, $url);
// 执行cURL请求
$response = curl_exec($ch);
// 关闭cURL会话
curl_close($ch);
// 输出响应内容
echo $response;
复制
插入
以上代码中,使用curl_init()函数初始化一个cURL会话,使用curl_setopt()函数设置代理和URL,使用curl_exec()函数执行请求,使用curl_close()函数关闭会话。最后可以使用echo语句输出响应内容。需要注意的是,如果代理需要身份验证,还需设置CURLOPT_PROXYUSERPWD选项。