Python调用日出日落API遇SSL证书过期及请求重试超限错误求助
SSL证书过期导致requests请求失败的问题解决
错误原因
目标API api.sunrise-sunset.org 的SSL证书已过期,requests库在建立HTTPS连接时会默认验证服务器证书的合法性,证书过期会触发SSLCertVerificationError,导致连接终止。
解决方案
临时跳过证书验证(仅适用于学习/测试场景)
在requests.get方法中添加verify=False参数,绕过证书验证逻辑。注意这种方式会降低连接安全性,严禁在生产环境使用:import requests import urllib3 # 关闭不安全请求的警告提示 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) my_lat = 51.507 my_long = -0.1277 parameters = {"lat": my_lat, "lng": my_long} # 添加verify=False跳过证书验证 response = requests.get("https://api.sunrise-sunset.org/json", params=parameters, verify=False) response.raise_for_status() data = response.json() print(data)改用HTTP协议请求
将请求URL的https替换为http,使用非加密的HTTP协议发起请求,绕开SSL证书验证环节:import requests my_lat = 51.507 my_long = -0.1277 parameters = {"lat": my_lat, "lng": my_long} # 改用HTTP协议 response = requests.get("http://api.sunrise-sunset.org/json", params=parameters) response.raise_for_status() data = response.json() print(data)更新本地根证书库(辅助方案)
如果系统根证书库过旧,可能无法正确识别有效证书(虽本次问题是目标证书过期,但更新根证书可避免同类其他场景问题):- Windows:通过系统设置的Windows Update安装最新根证书
- macOS:打开「钥匙串访问」应用,检查并更新根证书,或通过系统偏好的软件更新升级
- Linux(Ubuntu/Debian):执行命令更新证书包
sudo apt update && sudo apt install --reinstall ca-certificates
内容的提问来源于stack exchange,提问作者JeyM
相关产品推荐
相关产品推荐

