国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何使用Python requests庫驗證證書

Python requests庫驗證證書方法

問題分析

在進行某些APP的抓包時,有時會遇到即使信任了抓包軟件的CA根證書也無法抓包的情況。這是因為一些APP采用了"SSL Pinning"技術,只信任代碼中認為可信的證書。雖然我對逆向工程不太擅長,但我可以嘗試用Python來模擬類似的技術。

解決方案

真正的SSL Pinning通常是通過預置網(wǎng)站所使用的根證書或中間證書來實現(xiàn)的。這樣即使證書過期或更換,也能繼續(xù)驗證。

但我認為沒有必要這么麻煩。一般Python程序連接的后端也不必在瀏覽器中調用,可以自簽一個證書,然后自行驗證。

因為中間人攻擊重新簽署的公鑰證書的指紋與原始網(wǎng)站的不同,可利用這一點判斷是否被抓包。

在Python中,一般使用requests庫進行請求,而不是直接使用socket和ssl包。

我查了一下資料,發(fā)現(xiàn)有一些方法可以實現(xiàn)這個功能。

但是,用socket操作相對繁瑣,于是我嘗試詢問AI,結果并不理想。

最終,我在Stack Overflow上找到了一些討論,根據(jù)其建議,對代碼進行了簡單修改,最終實現(xiàn)了所需功能。

import requests
import hashlib

HTTPSConnection = requests.packages.urllib3.connection.HTTPSConnection
orig_HTTPSConnection_connect = HTTPSConnection.connect

def new_HTTPSConnection_connect(self):
    orig_HTTPSConnection_connect(self)
    try:
        self.peer_certificate = self.sock.getpeercert(binary_form=True)
    except AttributeError:
        pass

HTTPSConnection.connect = new_HTTPSConnection_connect

def verify_cert_request(url):
    with requests.get(url, stream=True, verify=False) as r:
        result = [hashlib.sha256(r.raw.connection.sock.getpeercert(binary_form=True)).hexdigest(), r.text]
    return result

result = verify_cert_request('https://www.baidu.com')
print(result[0])
print(result[1][:10])

使用這段代碼,可以獲取請求網(wǎng)站的證書指紋。如果不希望被抓包,可以先計算自己證書的hash指紋,在代碼中判斷請求網(wǎng)站的指紋是否與自己的相符。若不符,可考慮采取進一步反制措施。

總結

雖然Python作為解釋型語言,代碼相對容易查看,但這并不意味著不受保護。即使使用Cython加殼等方法,依然可能暴露源代碼。一種可能的防御方法是修改依賴的庫,使其返回正確的結果,以防止大多數(shù)抓包者的攻擊。


文章來源地址http://www.zghlxwxcb.cn/article/748.html

到此這篇關于如何使用Python requests庫驗證證書的文章就介紹到這了,更多相關內容可以在右上角搜索或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/748.html

如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請聯(lián)系站長進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 使用Python的requests庫發(fā)送HTTPS請求時的SSL證書驗證問題

    問題描述 使用python的requests庫去發(fā)送https請求,有時候不設置verify=False不報錯,有時候又報錯。 問題原因 使用Python的requests庫發(fā)送HTTPS請求時,設置verify=False參數(shù)可以跳過SSL證書驗證。默認情況下,requests庫會驗證SSL證書以確保請求的安全性。然而,在某些情況下,可能會出現(xiàn)

    2024年02月17日
    瀏覽(25)
  • 【網(wǎng)絡安全】https與證書原理 | SSL Pinning及其繞過

    【網(wǎng)絡安全】https與證書原理 | SSL Pinning及其繞過

    參考: https://segmentfault.com/a/1190000009002353?sort=newest https://zhuanlan.zhihu.com/p/353571366 https://juejin.cn/post/6863295544828444686 HTTPS=HTTP+TLS,其它的協(xié)議也類似,如FTPS=FTP+TLS 1) ClientHello Client 首先發(fā)送本地的 TLS 版本、支持的加密算法套件,并且生成一個隨機數(shù) R1 。 2)Server Hello Server 端確

    2024年02月05日
    瀏覽(30)
  • Python Requests模塊忽略SSL證書、關閉警告

    目錄 證書處理(SSL Cert Verification) 解決證書問題 很多網(wǎng)站都是https,但是不用證書也可以訪問,大多數(shù)情況都是可以攜帶也可以不攜帶證書如知乎百度 等都是可帶可不帶但有硬性要求的,則必須帶,比如對于定向的用戶,拿到證書后才有權限訪問某個特定網(wǎng)站。 關閉警告 一、忽

    2024年02月13日
    瀏覽(25)
  • C#/.Net 爬蟲request.GetResponse()報錯:基礎連接已經(jīng)關閉: 未能為 SSL/TLS 安全通道建立信任關系/根據(jù)驗證過程,遠程證書無效

    C#/.Net 爬蟲request.GetResponse()報錯:基礎連接已經(jīng)關閉: 未能為 SSL/TLS 安全通道建立信任關系/根據(jù)驗證過程,遠程證書無效

    首先,先放置一張報錯的圖片: 原因: 網(wǎng)站的證書應該是失效了,并且我發(fā)起的請求是基于Https的,所以被系統(tǒng)認定為不安全的連接。并且通過微軟官方文檔的解釋如下: 解決方案: 1.需要使用 ServicePointManager.SecurityProtoco 屬性,這個屬性的解釋如下,詳細可以看官方文檔:

    2024年02月16日
    瀏覽(36)
  • Python爬蟲學習日記——SSL證書驗證

    Python爬蟲學習日記——SSL證書驗證

    問題引入:現(xiàn)在很多網(wǎng)站是使用HTTPS協(xié)議的,但是有些網(wǎng)站并沒有設置好HTTPS證書,或者HTTPS的證書不被CA機構認可,這個時候訪問這些網(wǎng)站就會報SSL證書錯誤 實例:訪問https://www.ssr2.scrape.center/ 對于這種情況我們使用代碼來爬取的效果 代碼提示我們是SSL錯誤 因此如果就是要爬

    2024年02月16日
    瀏覽(22)
  • SSL證書如何使用?SSL保障通信安全

    SSL證書如何使用?SSL保障通信安全

    由于SSL技術已建立到所有主要的瀏覽器和WEB服務器程序中,因此,僅需安裝數(shù)字證書或服務器證書就可以激活功能了。SSL證書主要是服務于HTTPS,部署證書后,網(wǎng)站鏈接就由HTTP開頭變?yōu)镠TTPS。 SSL安全證書主要用于發(fā)送安全電子郵件、訪問安全站點、網(wǎng)上招標與投標、網(wǎng)上簽約

    2024年02月12日
    瀏覽(23)
  • 寶塔SSL踩坑:SSL證書域名驗證無反應

    寶塔SSL踩坑:SSL證書域名驗證無反應

    1、申請: 2、驗證域名: 申請通過之后就會校驗域名,這里有坑:一開始我在這里點擊驗證域名,一直提示等待驗證,我還以為要等一會,結果等了半天也沒反應,百度了一下說要第二天,結果我等到第二天也沒成功。 這里的驗證是需要登錄到寶塔官網(wǎng)處理的: 這里是第二

    2024年02月16日
    瀏覽(24)
  • 解決IIS 驗證遠程SSL證書無效

    解決IIS 驗證遠程SSL證書無效

    我們給IIS上的網(wǎng)站設置的類型為:https,并且設置了SSL,我們在訪問程序時可能會報錯:System.Security.Authentication.AuthenticationException: 根據(jù)驗證過程,遠程證書無效 。 System.Security.Authentication.AuthenticationException: 根據(jù)驗證過程,遠程證書無效 ?!边@個異常,是因為遠程url使用的域

    2024年02月21日
    瀏覽(100)
  • curl 忽略https的ssl的證書驗證

    curl 忽略https的ssl的證書驗證

    今天使用curl 測試url請求出現(xiàn)了需要ssl證書的驗證 curl的用法

    2024年02月17日
    瀏覽(29)
  • 發(fā)送https請求并跳過ssl證書驗證

    ?平臺服務調用https接口報錯: org.springframework.web.client.ResourceAccessException: I/0 error on PoST request for ?\\\"https://XXXXX\\\": java.security.centp.CertificateException: No subject alternative names present; nested exception is javax.net.ssl..SSLHandshakeException: java.security.cert.CertificateException: No subject alternative namesspresent 第

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包