5

我正在尝试使用 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吗?

谢谢。

4

2 回答 2

2

如果代理需要身份验证,您可以使用Proxy-Authorization。来自PHP.Net的示例:$context

$opts= array(
                 'http' => array( 
                 'proxy' => 'tcp://proxyip:8080', 
                 'header' => array( 
                                     "Proxy-Authorization: Basic $auth" 
                                  ) 
                ) 
); 
$context = stream_context_create($opts); 

另外,我认为您不能将 tcp 更改为 http in,tcp://192.168.10.10:80因为代理所做的是代表客户端建立与另一台服务器的 TCP 连接,然后在客户端和服务器之间来回路由所有流量。显然它与 TCP(有时 UDP)而不是 HTTP.Http 代理只是“理解”由 HTTP 协议传递的流量。

于 2013-03-08T04:06:28.787 回答
0

如果你不明白是什么$auth

例如,我有这个代理http://myproxyuser:myprxypassword@domain:port

然后

$auth = base64_encode("myproxyuser:myprxypassword");
于 2022-01-25T11:51:28.607 回答