requests---HTTPS請求

  作過接口測試的都會發現,如今的接口都是HTTPS協議了,今天就寫一篇如何經過request發送https請求,若是不是很瞭解HTTP協議的同窗能夠看下個人另一篇博客什麼是HTTPhtml

 

什麼是HTTPS

HTTPS 的全稱是Hyper Text Transfer Protocol over Secure Socket Layer ,是以安全爲目標的HTTP通道,簡單的講是HTTP的安全版本,即HTTP下加入SSL層,簡稱HTTPS瀏覽器

其中HTTPS的安全基礎爲SSL,所以經過它的傳輸的內容都是通過SSL加密的,它的主要做用能夠分爲兩種:安全

一、創建一個信息安全通道來保證數據傳輸的安全app

二、確保網站的真實性,凡是使用了HTTPS 的網站,均可以經過點擊瀏覽器地址欄的鎖頭標誌來查看網站認證以後的真實信息。測試

 

requests發送HTTPS

1.requests發送請求網站

2.攜帶請求頭髮送https加密

# coding:utf-8
import requests
# 請求地址
url = "https://www.qlchat.com"
headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chro'
                      'me/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400'
}
r = requests.get(url,headers=headers)
print(r.status_code)

代碼結果:
錯誤提示:requests.exceptions.SSLError: HTTPSConnectionPool(host='www.qlchat.com', port=443)

發現請求後代碼出現了報錯,發現是SSL的問題。url

 

SSL證書驗證

requests中是有SSL證書認證的,SSL像默認瀏覽器同樣,SSL 驗證默認是開啓的,若是證書驗證失敗,Requests 會拋出 SSLError,若是證書驗證失敗的時候加上verify=Falsespa

源碼:code

def request(method, url, **kwargs):
    """Constructs and sends a :class:`Request <Request>`.
    :type allow_redirects: bool
    :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
    :param 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``.

代碼太多了,刪除了一些

回到上面的代碼,加入verify=False再次請求,會發現請求成功,可是會報一行安全錯誤,

# coding:utf-8
import requests
# 請求地址
url = "https://www.qlchat.com"
headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chro'
                      'me/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400'
}
r = requests.get(url,headers=headers,verify=False)
print(r.status_code)

解決上圖報錯。導入urllib3模塊,引入urllib3.disable_warnings()方法

再次請求就會發現報錯沒有了

 

 

感受對你有幫助,或者喜歡的小夥伴們,點個關注,持續更新,讓咱們在測試的道路上更加精彩 

相關文章
相關標籤/搜索