from lxml import html
import requests
url = "https://website.com/"
page = requests.get(url)
tree = html.fromstring(page.content)
page.content
-> SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:748)
我运行这个脚本时出现了这个错误。我该怎么办?
from lxml import html
import requests
url = "https://website.com/"
page = requests.get(url)
tree = html.fromstring(page.content)
page.content
-> SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:748)
我运行这个脚本时出现了这个错误。我该怎么办?
由于您的URL是“内部企业URL”(如评论中所述),我猜测它使用了自签名证书或由自签名CA证书颁发。
如果确实是这种情况,您有两个选择:
(1) 将公司CA的路径(包括任何中间证书的完整链)提供给requests.get()
调用通过verify
参数:
requests.get('https://website.lo', verify='/path/to/certfile')
或者(2),彻底禁用客户端证书验证(但请注意所有涉及的安全风险,例如简单的中间人攻击等):
requests.get('https://website.lo', verify=False)
为了完整起见,相关的verify
参数在requests.request()
文档中进行了描述:
verify -- (optional) Either a boolean, in which case it controls whether we verify
the server's TLS certificate, or a string, in which case it must be a path
to a CA bundle to use. Defaults to True.
requests
默认情况下会尝试使用certifi
捆绑包,但如果您要求内部企业服务器的CA证书,则最好向网络管理员请求提供其证书。 - randomir