我想用这段代码登录我的大学门户网站:
import requests
with requests.Session() as c:
url = 'https://myunihub.mdx.ac.uk/'
usern = 'USERNAME'
passw = 'PASSWORD'
c.get(url)
csrftoken = c.cookies['csrftoken']
login_data = dict(csrfmiddlewaretoken=csrftoken, username=usern, password=passw)
c.post(url, data=login_data, headers={'Referer': 'https://myunihub-1.mdx.ac.uk/cas-web/login?service=https%3A%2F%2Fmyunihub.mdx.ac.uk%2Fc%2Fportal%2Flogin'})
page = c.get('https://myunihub.mdx.ac.uk/web/home-community', verify=False)
print page.content
但是当我尝试时会出现此错误:
引发SSLError(e,request = request)SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:590)
1 回答
你有没有尝试过
从文档:
资料来源:http://docs.python-requests.org/en/v1.0.4/user/advanced/#ssl-cert-verification
我建议忽略证书,因为你已经在代码的这一行中这样做了:
但是,如果您要验证证书,则可以将颁发证书的证书颁发机构的中间证书下载到您的学校 . 在这种情况下,它是http://crt.tcs.terena.org/TERENASSLCA.crt
然后,您需要将证书添加到CA BUNDLE . 该过程因操作系统而异 . 这是一个很好的链接,为此分步指南:http://kb.kerio.com/product/kerio-connect/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html
我在OS X上,所以我会做以下事情:
安装了证书后,我可以使用
verify=True
没有问题: