使用 cURL 后端通过代理抓取 SimplePie 订阅源
在初始化订阅源之前,通过 SimplePie 的公开 cURL 选项传入代理设置,并为中间代理配置认证。
首先确认 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 的代理账户选项。
验证路线时,要区分全新抓取和已缓存的订阅源。显示已有条目并不能证明任何新的下载使用了更改后的代理。