事情是这样的,我一直在尝试从python内部将POST请求发送到LOGIN到我的大学wifi页面,但是却收到SSL证书错误。 POST请求在chrome的POSTMAN扩展中可以正常工作。
这是我使用chrome'e调试器查看POST请求时的请求外观
Request URL:https://112.133.253.2:8090/login.xml
Request Method:POST
Status Code:200 OK
Remote Address:112.133.253.2:8090
Referrer Policy:no-referrer-when-downgrade
POST /login.xml HTTP/1.1
Host: 112.133.253.2:8090
Connection: keep-alive
Content-Length: 72
Origin: https://112.133.253.2:8090
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: */*
Referer: https://112.133.253.2:8090/httpclient.html
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
我发现问题出在发帖请求url中应指定'http',应该是https。
但是,当我使用https时,我得到了python的SSL证书错误。
我尝试给verify=False参数没有运气。 我也尝试过给证书这样的路径:-
resp = S.post("https://112.133.253.2:8090/login.xml" ,
data = data ,
verify ="/etc/ssl/certs/ca-certificates.crt") ;
但是没有任何效果。
邮递员的扩展如何工作而不给出SSL证书错误? 如何解决此问题以从Python本身发送请求?
这解决了我的问题
它可以帮助我解决问题。 参考此链接
尝试禁用如下警告:
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
希望能帮助到你。
这不是修复
的确,这并不能消除潜在的问题,我认为这是使用自签名证书(?)造成的,并且无法知道Postman是否在幕后产生相同的警告。 OP已准备好禁用验证,但是据报告,这仍然会导致生成相同的警告,而上面的警告并没有。 有关更完整的答案,请参阅此相关问题。