You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cURL下载指定网页遭遇SSLv3握手失败问题求助

解决cURL SSL握手失败问题

问题原因

你遇到的error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure错误,是因为代码里强制指定使用SSLv3协议,而目标网站已不再支持这个不安全的旧协议,导致SSL握手无法完成。

修复方案

  1. 移除SSLv3强制设置:删掉代码中的curl_setopt($ch, CURLOPT_SSLVERSION, 3);,让cURL自动和服务器协商支持的TLS版本(比如TLS1.2或TLS1.3)。
  2. 恢复SSL安全验证(可选但推荐):你之前关闭了CURLOPT_SSL_VERIFYHOST和CURLOPT_SSL_VERIFYPEER,这会降低请求安全性。如果服务器证书正常,建议把这两个选项分别设为2和1,保证请求的安全性。

修改后的代码

<?php
$url ="https://www.nawaiwaqt.com.pk/national";
function curl_download($Url){
    if (!function_exists('curl_init')){
        die('Sorry cURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url); 
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    // 恢复安全的SSL验证设置(服务器证书正常时启用)
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); 
    // 移除SSLv3强制设置,让cURL自动协商合适的TLS版本
    $output = curl_exec($ch);
    if (!$output) {
       exit("Download un-successful : ".curl_error($ch));
    } 
    return $output;
}
$source=curl_download($url);
$d=new DOMDocument();
$d->loadHTML($source);
$title=$d->getElementsByTagName("title")->item(0)->textContent;
$domx = new DOMXPath($d);
$desc=$domx->query("//meta[@name='description']")->item(0);
$description=$desc->getAttribute('content');
?>

额外说明

如果恢复SSL验证后出现证书相关错误,可能是服务器证书不被本地CA信任,这时可以临时保留CURLOPT_SSL_VERIFYHOST=0和CURLOPT_SSL_VERIFYPEER=0,但建议尽快解决证书信任问题,避免安全风险。

内容的提问来源于stack exchange,提问作者Hardcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:04:52