我在不同站点的 CURL 查询中使用 Privoxy。
$ch = curl_init($url);
...
curl_setopt($ch, CURLOPT_PROXY, "localhost:8118");
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
...
$result = curl_exec($ch);
有时,如果该站点不可用,我会在浏览器中显示 Privoxy html 模板之一,通常是 /privoxy/templates/forwarding-failed 出现 503 错误或 /privoxy/templates/no-server-数据 为 502。
我希望能够在收到
$result = curl_exec($ch);
后像正常的 CURL 请求一样自行处理这些错误,而不使用 Privoxy。
但我不知道如何在 Privoxy 的设置中禁用这些错误模板的连接和显示。请告诉我如何解决这个问题。
我曾经能够使用 default.action 和 user.action 文件中的编辑来禁用 /privoxy/templates/blocked 模板的输出,但我没有找到这样的设置来禁用 502 或 503 错误模板.
您可以在 CURL 请求中添加 CURLOPT_FAILONERROR 选项,以防止 CURL 返回 HTTP 错误状态代码(例如 502、503)的响应内容,并自行处理。
如果 HTTP 服务器返回 400 或更大的错误代码。这意味着,如果服务器返回 401(未经授权)、403(禁止)、404(未找到)或 400 范围内的任何其他状态代码,请求将被中止,curl_exec() 函数将返回 FALSE。
$ch = curl_init($url);
// Set other CURL options as needed
// Set the CURLOPT_PROXY and CURLOPT_PROXYTYPE options as you were doing
// Add the following option to handle errors manually
curl_setopt($ch, CURLOPT_FAILONERROR, true);
// Execute the request
$result = curl_exec($ch);
// Check if the request was successful or not
if ($result === false) {
// Handle the error here
$error = curl_error($ch);
// You can log the error, retry the request, or take appropriate action
} else {
// Request was successful, process the response
}
// Close the CURL session
curl_close($ch);