代码如下:
authon = 'damao'
import urllib3
import requests
"""
遇到的坑:访问https总报‘Unverified HTTPS request is being made. Adding certificate verification is strongly advised’
问题原因:requests 库其实是基于 urllib 编写的,对 urllib 进行了封装,使得使用时候的体验好了很多,现在 urllib 已经出到了3版本,功能和性能自然是提升了不少。
所以,requests最新版本也是基于最新的 urllib3 进行封装。
在urllib2时代对https的处理非常简单,只需要在请求的时候加上 verify=False 即可,这个参数的意思是忽略https安全证书的验证,也就是不验证证书的可靠性,直接请求,
这其实是不安全的,因为证书可以伪造,不验证的话就不能保证数据的真实性。
在urllib3时代,官方强制验证https的安全证书,如果没有通过是不能通过请求的,虽然添加忽略验证的参数,但是依然会 给出醒目的 Warning,这一点没毛病
解决办法:添加2行代码——
import urllib3
urllib3.disable_warnings()
"""
# help(requests.session())
url = "https://passport.cnblogs.com/user/signin"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134",
"Content-Type": "application/json; charset=utf-8",
"X-Requested-With": "XMLHttpRequest",
"Cookie": "AspxAutoDetectCookieSupport=1; SERVERID=34e1ee01aa40e94e2474dffd938824db|1531900633|1531899655; ASP.NET_SessionId=fzmmaqasqhqdt1hnc4estmbm; _ga=GA1.2.1009201770.1531900384; _gid=GA1.2.259881566.1531900384"}
# 登录的参数
payload = {"input1": "MgqyV/3C0vgjeGgY1orUUe1NMMiocJ6ur57G/61q3rFHxiIl2AcMyg1zgk6526iqBaYpvmbASViKrzPOPVJecnXfoKWp09h13wG/wg1+CdEqGQyZYo1DPSbU+BrOBItViJ+IrO1a/y33RbBvxRVDti9TPxgj+47bb1H40OxAfy4=",
"input2": "m5wFqUNOYrKT+mIpLGHt00IBBnFkOTGm+TG0lCl5Sc8L/bcn61EZuVN3EFnEDBak4HdDtnhOHjCMBV5aVTP+VTqZY7xSOY8gulirGacYnQLMLnCqMsYQJL4hzrzceFHzBLnT08gRk/oU3PG6Y3mya/Q6bWznNQ+r3pmS9M9X6yg=",
"remember": True}
# 发送登录请求
urllib3.disable_warnings() #解决https报错的问题
s = requests.session()
r = s.post(url=url, json=payload, headers=headers,verify=False)
print(r.json())
网友评论