gpt4 book ai didi

Python 调用 request() 到不指向 netrc 的 SSL 站点

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:21 25 4
gpt4 key购买 nike

使用 Anaconda3 测试一段简单的代码:

import requests as req

resp = req.get("https://api.github.com")
print(resp.text)

我得到这个错误:

SSLError: HTTPSConnectionPool(host='api.github.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

使用调试器跟踪调用,问题似乎发生在 requests.utils 中的 get_netrc_auth() 中。在这里,这段代码用于获取 netrc 文件的完整路径:

        for f in NETRC_FILES:
try:
loc = os.path.expanduser('~/{}'.format(f))

然而,这只是给出了我的主目录的路径,而 netrc 在工作环境的 Lib 目录中。

显然,我在某处错误地设置了一个环境变量。有什么建议吗?

编辑问题:
根据 Steffen 的回复,netrc 似乎不是问题所在。 Marsiliou 关于直接包含证书文件路径的建议(即 resp = req.get("https://api.github.com"verify='/path/to/certfile')) 确实有效……一次……昨天。

我的代码现在看起来像这样:

import requests as req
from os import environ

cert_path = environ['CONDA_PREFIX'] + '\Lib\site-packages\certifi\cacert.pem'
print (cert_path)

resp = req.get("https://api.github.com", verify= cert_path)
print(resp.text)

cert_path 扩展为 C:\ProgramData\Anaconda3\Lib\site-packages\certifi\cacert.pem
这会导致相同的 SSLError。有什么建议(除了将 verify 设置为 False 之外)吗?

PS - 并回答 Steffen 的其他问题 - 这是 Windows 10 上的 Anaconda3,Python 3.7.3。

最佳答案

我想你的问题在这里得到了回答,你试过了吗? SSL HTTS requests.exceptions.SSLError: HTTPSConnectionPool(host='google.com', port=443)

关于Python 调用 request() 到不指向 netrc 的 SSL 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com