使用带有 fopen 的代理服务器

Jam*_*son 5 php proxy fopen stream

我正在尝试使用 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)
Run Code Online (Sandbox Code Playgroud)

但是有没有办法使用该代理的用户名和密码进行身份验证?或者我仅限于必须使用公共代理?

此外,代理定义是tcp://192.168.10.10:80. 如果我想使用 HTTP 代理,我可以随意将其更改为http://192.168.10.10:80吗?

谢谢。

You*_*ung 3

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

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

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