首先确认 SimplePie 使用的是默认 cURL 抓取器:PHP 的 cURL 扩展必须可用,且应用不得强制使用 fsockopen。套接字回退路径不会读取 cURL 选项。

对于这条默认路径,请在 init 之前配置:

$feed = new \SimplePie\SimplePie();
$feed->set_feed_url('https://feeds.example/news.xml');
$feed->set_curl_options([
    CURLOPT_PROXY => 'http://proxy.example:8080',
]);
$feed->init();

set_curl_options 会把这些值传给抓取器,因此无需修改已安装的 File.php。当该路线被允许且未配置代理凭据时,HTTP 代理列表中的一条 HTTP 记录可以为公开订阅源提供示例代理 URL。认证方面,请选择可接受的 CURLOPT_PROXYAUTH 方法,并提供 CURLOPT_PROXYUSERNAME/CURLOPT_PROXYPASSWORD。CURLOPT_HTTPAUTH 则用于目标服务器。

对于用 set_http_client 注入的 HTTP 客户端,请通过其自身的接口设置代理。默认抓取器的选项无法配置其他传输方式。默认 cURL 认证路径请参见 PHP cURL 的代理账户选项。

验证路线时,要区分全新抓取和已缓存的订阅源。显示已有条目并不能证明任何新的下载使用了更改后的代理。

相关文章