如何在 Privoxy 中禁用错误 502 和 503 的显示?

问题描述 投票:0回答:1

我在不同站点的 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 错误模板.

php apache ubuntu privoxy
1个回答
0
投票

您可以在 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);
© www.soinside.com 2019 - 2024. All rights reserved.