《python3網絡爬蟲開發實戰》學習筆記:pc與安卓代理證書都安裝好但是無法監聽——記自己的踩坑路徑

設備版本:window:win7旗艦版、python版本:python3.7.0、pycahrm版本:PyCharm Community Edition 2019.3.3 x64、 手機:紅米pro.

mitmdump下手機突然無法聯網,發現不是網絡問題,證書也安裝了,但是刪除代理就可以上網,因而是代理的問題,但是抓包必須代理。
而在模擬器上發現模擬器卻可以成功,因而手機連不上網不是電腦關閉或者禁止了連接,可能是手機禁止了連接。(當然這個結論的得出需要許多前提條件:在這個結論之前,ping通了網關,查看了端口,這些都是正常的;查看了電腦的啓動項也沒有發現被禁掉的進程、服務等會影響到代理網絡(ps:爲了加速開機,我的許多服務自己禁掉了,之前我懷疑可能是禁掉的服務導致電腦關閉了手機的代理連接或者截斷了手機的申請))
但是代理裏面那兒的問題了,在之前聯網的時候發現網站總是出現證書過期,而mitmproxy又是中間人代理,因而可能是由於mitmproxy證書導致的代理問題。後來發現安卓6以後不信任用戶級證書。因而需要將證書放在系統證書下
代理的問題兩條解決思路:
1、不用手機,在電腦上用模擬器(我用的是夜神),實測可以(推薦較爲簡單)
2、受到模擬器的啓發手機進行root,手機紅米pro。root有三種方式,手機app root軟件,但是我的紅米pro無法root;其次連接電腦使用root軟件;使用卡刷刷入root.這三種方法中,前兩個我都無法root,原因暫時不知道。第三種方法,需要先對手機進行解鎖(重要!!!據說一般都是要解鎖的,由於我不知道這一步卡了整整一天,希望大家吸取教訓),原本我以爲前兩者不成功的原因在於沒有解鎖,我用另一個手機解鎖後進行了root但是仍然不成功,原因不明;而在刷root中還發現有一些小米手機的開發者選項中可能沒有設備解鎖這個選項,解鎖的方式非常麻煩(沒有實測);然後刷入twrp第三方recovery,手機都有其自身的recovery(按下電源開關和音量+同時就可以進入),但是原本的recovery只有簡單的重啓、清除數據、關機等。刷入第三方的twrp recovery後可以在recovery界面將root文件刷入,刷入之後就可以獲得root權限(root包直接在網上下載即可,全名:【Root-SuperSU-2.76.zip】)。之後在twrp中刷入root包,刷入後手機即可獲得root權限。
此時雖然獲得root權限,但是不知道爲什麼用一鍵root之類的工具還是不能獲得root權限,root工具報錯爲su版本問題,也就是說似乎是缺少root管理工具,也就是雖然手機獲得了root權限但是root權限沒有分配。需要下載一個叫super-su的軟件,會對su進行更新,然後可以分配root權限。
可以分配root權限後開始刷系統證書,即將用戶證書刷成系統證書。將用戶證書刷成系統證書首先在mitm.it中下載一個安卓版本的證書。
證書下載也存在問題,需要使用代理,沒有代理會進入
在這裏插入圖片描述
這需要在電腦上配置一個代理叫做Proxy SwitchyOmega
在這裏插入圖片描述
將這個擴展程序進行如下設置
在這裏插入圖片描述
之後在電腦上開啓,即選中剛剛設置的代理,然後需要啓動mitmproxy,windows上不能使用mitmproxy,但是可以使用mitmdump和mitmweb,這兩個都可以使用,前者沒有web界面只能看不能動,後者可以看見監聽的內容還能進行攔截修改等等。不啓動mitmweb或者mitmdump,直接使用代理的情況如下:
在這裏插入圖片描述
只有啓動mitmdump後纔能有網即在cmd中輸入mitmdump
在這裏插入圖片描述
,啓動後
在這裏插入圖片描述
可以正常下載。
將下載後的證書進行openssl證書轉型,將pem轉成0文件類型,即
在這裏插入圖片描述
類型轉換方式爲求取hash即c8750f0d,然後直接修改文件類型即改名即可。
openssl的安裝 我找了一圈基本都非常麻煩,基本邏輯都是博主BaiPeter《Windows 下openssl安裝與配置》中所說的,先下載ActivePerl等等,非常麻煩,需要下載一系列的東西。我自己安裝的是vs2019,博主安裝的是vs2010,差點就卸載2019換成2010了,但是2019基礎上下載了許多東西,一旦卸載就要重來,覺得十分麻煩就等等了。結果在下載的openssl中的bin目錄中存在openssl程序即:
在這裏插入圖片描述
直接打開後:
在這裏插入圖片描述
輸入命令求取hash可以參考博主一碗單炒飯《給Android7及以上的手機安裝系統級證書,實現Fiddler或者其他程序的HTTPS的抓包》在openssl中使用這個命令:openssl x509 -inform PEM -subject_hash_old -in cacert.pem。,之後會返回hash,我的就是c8750f0d,博主一碗單炒飯的命令無效即下圖:可以直接進行改名。
在這裏插入圖片描述
然後可以參照《添加Fiddler/Mitmproxy證書爲安卓系統證書》中的方法進行證書安裝到系統目錄中去。
然後代理問題還是沒有解決!!!!!!!!
在這裏插入圖片描述
繼續這個路徑即證書問題的解決,原本以爲到系統證書應該解決了,但是發現還有一個關於證書忽略的路徑,即適用xposed的justtrustme模塊進行證書信任,但是xposed總是安裝不上,安卓5以上需要按照的xposed框架下載下來也不能安裝。直到發現xposed的免root版本,virtual-xposed以及太極這個app,可以虛擬運行xposed。
在這裏插入圖片描述
在這裏插入圖片描述
安裝上justtrustme還是無效,代理問題還是沒有辦法解決。
證書這條路已經走到了盡頭,證書也刷成了系統證書,但是代理問題始終無法解決。

因而問題可能不在證書上了,而瀏覽器上的報錯爲代理連接失敗(之前使用的其他瀏覽器爲小米自帶的瀏覽器以及chrome
在這裏插入圖片描述
錯誤始終爲error_on_proxy之類的,但是不知道問題在哪裏?)直到使用uc瀏覽器,它的報錯爲
在這裏插入圖片描述
說明錯誤路徑爲無法連接代理,可能爲代理的信號沒有發出(這個問題許多人似乎沒有,可能是我自己將許多啓動項禁止了,其中某種啓動項關乎這個問題導致的,因爲在某篇文章中提到過需要進行ip轉發。)

解決方法:既然錯誤路徑爲無法連接代理,可能爲代理的信號沒有發出。mitmdump都強調在同一個局域網中,因而手機和電腦都連接一個wifi,在一個wifi中出現代理連接出錯,於是換成了熱點。即有電腦發出熱點,而手機連上電腦的熱點,兩者依然在同一個局域網中。之前使用獵豹wifi,這個問題還是無法解決,換成了360wifi現在成功了。

系統證書的唯一好處就是瀏覽器不會報證書警告,不會要查看證書了,但似乎沒有什麼用!!!!!

哎,繞了一大圈全是白費功夫!!!!!!!!!!!!!!!

【1】http://www.site-digger.com/html/articles/20191205/762.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章