我正在尝试使用fopen从其他网站读取远程文件。我想使用代理执行此操作,据我所知,我可以这样做:
$context = stream_context_create(array(
'http' => array(
'proxy' => 'tcp://192.168.10.10:80' // The proxy server address and port
),
));
$file = fopen($url, 'r', false, $context)
但有没有办法使用该代理的用户名和密码进行身份验证?或者我是否仅限于使用公共代理?
此外,代理定义为tcp://192.168.10.10:80
。如果我想使用HTTP代理,我可以自由地将其更改为http://192.168.10.10:80
吗?
感谢。
答案 0 :(得分:2)
如果代理需要身份验证,您可以使用$context
中的Proxy-Authorization。示例来自PHP.Net:
$opts= array(
'http' => array(
'proxy' => 'tcp://proxyip:8080',
'header' => array(
"Proxy-Authorization: Basic $auth"
)
)
);
$context = stream_context_create($opts);
另外,我认为你无法在tcp://192.168.10.10:80
中将tcp更改为http,因为代理所做的是代表客户端与另一台服务器建立TCP连接,然后在客户端和客户端之间来回路由所有流量显然,它涉及TCP(有时是UDP)而不是HTTP.Http代理只是“理解”HTTP协议传递的流量。