Python的HTTPS驗證

簡述

最近在研究微信機器人的Python腳本,很是好奇它是如何做到的,后來發(fā)現(xiàn)它只是模擬登陸網(wǎng)頁版微信而實現(xiàn)的,通過研究這些東西也學(xué)到了不少東西,首先是腳本的里面都是通過簡單的HTTPS請求來實現(xiàn)的,既然是模擬網(wǎng)頁版微信,那一定是抓取網(wǎng)頁版微信的接口神得,以前一直以為HTTPS是不可抓取的,后來發(fā)現(xiàn)并非如此偷仿,通過《使用 Charles 獲取 https 的數(shù)據(jù)》一步步抓取了網(wǎng)站的接口,發(fā)現(xiàn)騰訊的安全措施也并非那么好哩簿,經(jīng)過解析都是明文的,瞬間感覺很不安全炎疆。那么HTTPS真的是這么不安全嗎卡骂,也不是,只不過是沒有使用SSL Pinning,如果是使用了SSL Pinning的HTTPS還是無法抓取的形入。

起因

了解了微信機器人的原理全跨,我就慢慢摸索著這個項目的具體實現(xiàn)細(xì)節(jié),我想直接使用Charles抓取這個項目究竟使用了哪些微信的接口亿遂,發(fā)現(xiàn)沒有成功浓若,給我拋了個下面的錯誤:

requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)

猜想

我很是納悶,測試了自己的Charles抓取HTTPS也是正常的,那Charles的代理證書就沒問題蛇数,為什么Python還給拋出了這樣的一個錯誤,之后我將Charles關(guān)閉挪钓,項目正常運行,很是奇怪耳舅,我猜想肯定代理的問題碌上,畢竟Charles抓取的原理是作為一個代理來截獲的。

調(diào)試

于是我嘗試一步步調(diào)試浦徊,發(fā)現(xiàn)Python確實能識別出代理和真實請求馏予,于是我使用了下面去掉代理的代碼測試了一下:

r = requests.get(url='https://login.weixin.qq.com',proxies={'no_proxy':'login.weixin.qq.com'})

結(jié)果是成功的發(fā)送了請求,也沒有報錯盔性,天真的我以為可以確定就是代理的問題霞丧,其實也不盡然,這個請求Charles居然抓不到了冕香,欲哭無淚蛹尝,只好繼續(xù)一步步調(diào)試到底是哪里出了問題。
結(jié)果我發(fā)現(xiàn)了Python的如果發(fā)現(xiàn)是HTTPS請求悉尾,會默認(rèn)開啟證書驗證verify = True,但是我的Charles代理證書也是沒問題的突那,為什么就通不過呢,真實的原因就在于构眯,Python對于HTTPS請求中的證書的驗證愕难,并不會去系統(tǒng)的證書系統(tǒng)(Mac的鑰匙串訪問)驗證,而是使用它自己的證書cacert.pem,被Python放置和定義的路徑為DEFAULT_CA_BUNDLE_PATH = certs.where(),其值是/Library/Python/2.7/site-packages/certifi/cacert.pem,我們雙擊打開之后會發(fā)現(xiàn)他會安裝在了鑰匙串訪問中,

cacert.pem

其實在系統(tǒng)的根證書的列表里也有以GlobalSign Root CA命名的證書务漩,但其實兩個是不一樣的東西,我們可以用文本方式打開Python下的cacert.pem證書,發(fā)現(xiàn)里面有很多證書頒發(fā)機構(gòu)
cacert.pem中的GeoTrust Global

也就是說如果你的HTTPS請求到的服務(wù)器證書的頒發(fā)機構(gòu)被包含在Python的證書下它褪,驗證就能通過饵骨,網(wǎng)頁版的微信的HTTPS服務(wù)器證書:
web微信的證書

包含在cacert.pem證書里面,那自然是可以通過請求茫打,而Charles的自簽名證書居触,是沒有在cacert.pem證書里,驗證就不會通過老赤。

驗證

你還記得你買票的時候轮洋,12306會提示你安裝一個證書嗎,畢竟這不是一個在CA付費機構(gòu)購買且讓瀏覽器信任的證書,這是一個自簽名證書的網(wǎng)站抬旺,我們可以通過12306網(wǎng)站證明一下證書的問題:

r = requests.get(url='https://kyfw.12306.cn/otn/')

正如預(yù)想的那樣弊予,Python拋出了certificate verify failed的錯誤。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末开财,一起剝皮案震驚了整個濱河市汉柒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌责鳍,老刑警劉巖碾褂,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異历葛,居然都是意外死亡正塌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門恤溶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乓诽,“玉大人,你說我怎么就攤上這事宏娄∥试#” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵孵坚,是天一觀的道長粮宛。 經(jīng)常有香客問我,道長卖宠,這世上最難降的妖魔是什么巍杈? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮扛伍,結(jié)果婚禮上筷畦,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好鳖宾,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布吼砂。 她就那樣靜靜地躺著,像睡著了一般鼎文。 火紅的嫁衣襯著肌膚如雪渔肩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天拇惋,我揣著相機與錄音周偎,去河邊找鬼。 笑死撑帖,一個胖子當(dāng)著我的面吹牛蓉坎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胡嘿,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼蛉艾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了衷敌?” 一聲冷哼從身側(cè)響起伺通,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逢享,沒想到半個月后罐监,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瞒爬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年弓柱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侧但。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡矢空,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出禀横,到底是詐尸還是另有隱情屁药,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布柏锄,位于F島的核電站酿箭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏趾娃。R本人自食惡果不足惜缭嫡,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抬闷。 院中可真熱鬧妇蛀,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纵诞,卻和暖如春蔼卡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挣磨。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荤懂,地道東北人茁裙。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像节仿,于是被迫代替她去往敵國和親晤锥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • HTTPS介紹 超文本傳輸安全協(xié)議(英語:Hypertext Transfer Protocol Secure廊宪,縮...
    齊滇大圣閱讀 8,908評論 8 96
  • 本文摘自 騰訊bugly 的文章《全站 HTTPS 來了》,內(nèi)容有修改傅寡。 大家在使用百度放妈、谷歌或淘寶的時候,是否注...
    bnotes閱讀 3,640評論 1 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理荐操,服務(wù)發(fā)現(xiàn)芜抒,斷路器,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 這篇文章是我一邊學(xué)習(xí)證書驗證一邊記錄的內(nèi)容托启,稍微整理了下宅倒,共扯了三部分內(nèi)容: HTTPS 簡要原理;數(shù)字證書的內(nèi)容...
    左邊飛來一只狗閱讀 3,283評論 2 5
  • 20171104 熬過了一天屯耸,自己還活著拐迁,真的很幸福。想想明天的課疗绣,整個人處于頭大的狀態(tài)唠亚。最近很忙,忙起來好持痰,這樣...
    夢家小妖閱讀 196評論 0 0