requests 進行https請求,一直報SSL 報錯,以及 移除SSL認證后的InsecureRequestWarning警告解決


python 用requests庫,進行https 請求時,url,headers,請求方式等都正確,但就是過不去,一堆 SSL 的錯:

 

 

 比如,博客園的編輯界面,fiddler 抓包后

 

 

 進行請求。代碼如下:

urlB = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0",
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding":"gzip, deflate, br",
"Accept-Language":"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"}
s = requests.session()
re = s.get(url=urlB,headers=headers)
print(re)
請求結果,就是上圖所示,一堆的SSL錯誤。
解決SSL報錯 -方法:requests 請求時,增加參數 verify=False。設置后,即移除SSL 認證
請求代碼即:
re = s.get(url=urlB,headers=headers,verify=False)
print(re.status_code)
結果如下:

 

 

 看到response響應已經返回成功。美中不足:會有個 InsecureRequestWarning 警告。

二、解決 InsecureRequestWarning 警告,

方法一: 在請求requests前,增加一行代碼

requests.packages.urllib3.disable_warnings()
整體請求代碼如下:
s = requests.session()
requests.packages.urllib3.disable_warnings()
re = s.get(url=urlB,headers=headers,verify=False)
print(re.status_code)


方法二:導入logging模塊,請求requests 前,增加一行代碼:
logging.captureWarnings(True)
整塊代碼如下
s = requests.session()
logging.captureWarnings(True)
re = s.get(url=urlB,headers=headers,verify=False)
print(re.status_code)

以上兩種解決方法都可以,代碼運行結果:

 

 





 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM