使用 PHP file_get_contents 通过代理获取 HTTP URL
为正向代理配置 PHP 的 HTTP 流包装器,包括请求格式化和流上下文的限制。
对于不使用 PHP cURL 的普通 HTTP 请求,请向 HTTP 流包装器传递代理上下文:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://203.0.113.10:8080',
'request_fulluri' => true,
'timeout' => 10,
],
]);
$body = file_get_contents('http://example.com/', false, $context);将文档中的端点替换为你的 HTTP 代理,或来自 HTTP 代理列表 的候选地址。HTTP 上下文接口要求为 proxy 提供 TCP 地址。request_fulluri=true 将完整的目标 URI 放入请求行,许多正向代理都要求这样做。超时会按该包装器的规则限制流操作。
在解析正文之前检查返回值和警告;读取失败与成功的空响应需要不同的处理方式。请从这个单一 HTTP 目标和有界请求开始诊断。HTTPS 会增加隧道和 TLS 行为,必须针对实际的包装器/PHP 版本进行检查;本示例并不确立这些能力。
在此调用中传入上下文可让路由保持可见,并避免更改无关的 URL 读取。只有在应用程序有意采用该策略时,共享默认上下文才合适;库应考虑其更广泛的作用范围。
这配置的是 PHP 流,而不是 单独创建的 cURL 句柄、浏览器或其他进程。在期望某个包使用此上下文之前,请确认其实际的 HTTP 传输方式。