我已经安装了 Anaconda,但在尝试通过 Jupyter 笔记本进行 API 调用时遇到了 SSL 问题:
import requests
import certifi
r = requests.get('https://github.com/')
print(r)
这首先产生了 SSL 连接错误。经过广泛搜索和我们 IT 部门的帮助,我可以解决这个问题。这里的解决方案是将公司根证书添加到 certifi 证书存储中。
不幸的是,现在对于其他请求,我仍然遇到同样的问题。使用 google2pandas 包调用 Google Analytics API 的示例代码:
from google2pandas import *
query = {
'reportRequests': [{
'viewId' : 37616054,
'dateRanges': [{
'startDate' : '8daysAgo',
'endDate' : 'today'}],
'dimensions' : [
{'name' : 'ga:date'},
{'name' : 'ga:pagePath'},
{'name' : 'ga:browser'}],
'metrics' : [
{'expression' : 'ga:pageviews'}],
'dimensionFilterClauses' : [{
'operator' : 'AND',
'filters' : [
{'dimensionName' : 'ga:browser',
'operator' : 'REGEXP',
'expressions' : ['Firefox']},
{'dimensionName' : 'ga:pagePath',
'operator' : 'REGEXP',
'expressions' : ['iPhone']}]
}]
}]
}
# Assume we have placed our client_secrets_v4.json file in the current
# working directory.
conn = GoogleAnalyticsQueryV4(secrets='Analytics.json')
df = conn.execute_query(query)
在这里,我仍然遇到之前在简单调用中遇到的 SSL 错误:
C:\套接字”) –> 850 self.do_handshake() 851 除了 (OSError, ValueError): 852 self.close()
C:\ProgramData\Anaconda3\lib\ssl.py 中的 do_handshake(self, block)
1106 如果超时 == 0.0 和块:1107
self.settimeout(无)-> 1108 self._sslobj.do_handshake()1109 最后:1110 self.settimeout(超时)
SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1045)
我相信还有另一个图书馆在使用,它不依赖于 certifi?但是我不知道在哪里以及如何添加我的根证书,所以所有 iPython 请求都可以工作。
任何想法表示赞赏。
原文由 Andii 发布,翻译遵循 CC BY-SA 4.0 许可协议
我花了几天时间弄清楚如何解决这个问题。最后,我在请求库使用的配置文件中添加了我公司的 CA 证书。您可以通过以下方式检查此文件的路径:
应打印 python 使用的
cacert.pem
的路径,编辑它并将 CA 证书附加到它的底部。