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

How can I disable the display of errors 502 and 503 in Privoxy? [duplicate]

提问人:Anan 提问时间:7/29/2023 更新时间:7/29/2023 访问量:34

问:

我在不同站点的 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 at 503 错误或 /privoxy/templates/no-server-data 在 502 错误。

我希望能够在收到正常的 CURL 请求后自行处理这些错误,而无需使用 Privoxy。 但我不知道如何在 Privoxy 的设置中禁用这些错误模板的连接和显示。请告诉我如何解决这个问题。$result = curl_exec($ch);

我曾经能够使用 default.action 和 user.action 文件中的编辑来禁用 /privoxy/templates/blocked 模板的输出,但我没有在那里找到这样的设置来禁用 502 或 503 错误模板。

php apache ubuntu privoxy

评论


答:

0赞 Melih Sevim 7/29/2023 #1

您可以将 CURLOPT_FAILONERROR 选项添加到 CURL 请求中,以防止 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);