Python requests.get() 引发访问 Web 的 SSL 错误 API
Python requests.get() raises SSL error accessing web API
我正在尝试访问 https://www.ncdc.noaa.gov/cdo-we/api/v2/
。这需要一个在请求时立即收到的令牌 here。那么:
import requests
def get_noaa_data(url, data_type, header):
r = requests.get(url, data_type, headers=header)
print(r)
if __name__ == '__main__':
token = 'longalphabetictoken'
creds = dict(token=token)
dtype = 'dataset'
url = 'https://www.ncdc.noaa.gov/cdo-web/api/v2/'
get_noaa_data(url, dtype, creds)
给出 requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)
我知道我可以设置 verify=False
,但我确实想验证一下。我也希望能够分发此代码,所以我不想通过修改我的 cacert.pem 来变通。我也尝试过将 certifi
导入脚本。是否有 os-agnostic 方法来验证 NOAA 站点的 SSL 证书,如果人们下载我的包,该证书是否有效?
在我看来,如果没有 verify=False
,将有一种安全的方式来访问像这样的流行 API。这是我组织的机器问题吗?
ssl.get_default_verify_paths() = DefaultVerifyPaths(cafile='/data01/anaconda2/envs/imagenv/ssl/cert.pem', capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/data01/anaconda2/envs/imagenv/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/data01/anaconda2/envs/imagenv/ssl/certs')
仅供参考:亚马逊、google 等 https 网站运行良好。
您需要确保您组织的 SSL 证书是由证书颁发机构 (CA) 签署的,否则 ssl 连接将无法工作。
我正在尝试访问 https://www.ncdc.noaa.gov/cdo-we/api/v2/
。这需要一个在请求时立即收到的令牌 here。那么:
import requests
def get_noaa_data(url, data_type, header):
r = requests.get(url, data_type, headers=header)
print(r)
if __name__ == '__main__':
token = 'longalphabetictoken'
creds = dict(token=token)
dtype = 'dataset'
url = 'https://www.ncdc.noaa.gov/cdo-web/api/v2/'
get_noaa_data(url, dtype, creds)
给出 requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)
我知道我可以设置 verify=False
,但我确实想验证一下。我也希望能够分发此代码,所以我不想通过修改我的 cacert.pem 来变通。我也尝试过将 certifi
导入脚本。是否有 os-agnostic 方法来验证 NOAA 站点的 SSL 证书,如果人们下载我的包,该证书是否有效?
在我看来,如果没有 verify=False
,将有一种安全的方式来访问像这样的流行 API。这是我组织的机器问题吗?
ssl.get_default_verify_paths() = DefaultVerifyPaths(cafile='/data01/anaconda2/envs/imagenv/ssl/cert.pem', capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/data01/anaconda2/envs/imagenv/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/data01/anaconda2/envs/imagenv/ssl/certs')
仅供参考:亚马逊、google 等 https 网站运行良好。
您需要确保您组织的 SSL 证书是由证书颁发机构 (CA) 签署的,否则 ssl 连接将无法工作。