簡體   English   中英

Python requests.get()引發訪問Web API的SSL錯誤

[英]Python requests.get() raises SSL error accessing web API

我正在嘗試訪問https://www.ncdc.noaa.gov/cdo-we/api/v2/ 這要求令牌在此處請求時立即接收。 然后:

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')

僅供參考:https網站如亞馬遜,谷歌等工作正常。

您需要確保您的組織的SSL證書由證書頒發機構(CA)簽名,否則ssl連接將不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM