日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

如何调试 Android 上 HTTP(S) 流量

發布時間:2025/3/20 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何调试 Android 上 HTTP(S) 流量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://greenrobot.me/devpost/how-to-debug-http-and-https-traffic-on-android/

如何調試 Android 上 HTTP(S) 流量

前面的話

在Android開發中我們常常會和API 打交道,可能你不想,但是這是避不開的。大部分情況下,調試發送網絡請求和接收響應的過程都是十分痛苦的。

有多少次我們經過調試發現API的調用失敗僅僅是因為我們的編碼錯了或者丟失了一個HTTP頭部參數?在調試的過程中,我們發現出現錯誤的原因千奇百怪。總之我們要看到最終的請求是什么樣子的不是一件容易的事情,響應也是如此。

如果碰到困難,請使用代理

解決這樣的問題有各種各樣的方法和門道,但是我今天要分享的是在我看來最快,最容易也是最可行的方法。

由于調試HTTP請求和響應是相當繁瑣的(調試HTTPS更加繁瑣),因此在這種前提下你能使用的最好工具就是代理。當然,你肯定知道什么是代理,所以我就不啰嗦它的定義了。

現有的代理工具中它們的用法,特性以及操作系統的兼容性都各不相同,如何選擇一款合適的代理呢?要我說,簡單點,就用mitmproxy。

mitmproxy

我已經無法用語言來形容mitmproxy的方便和強大了。用mitmproxy?官網上的介紹一句話,就是“an interactive, SSL-capable man-in-the-middle proxy for HTTP with a console interface”。沒錯,你可以通過控制臺來操作它;沒錯,它還支持HTTPS;沒錯,它允許“對流量進行攔截,檢測,修改和回放”;沒錯,它還是跨平臺的,因為它是用Python寫的。對了,我說了它是完全免費的這件事了嗎?

使用它也是相當容易的。一旦你安裝了它,便可通過在控制臺輸入以下命令啟動它:

?

1 $?mitmproxy?[-b?IP_ADDR]?[-p?PORT]

?

代理已經在運行,你可以開始攔截網絡流量了。接下來你就需要配置Android手機,將所有的流量都重定向到之前命令里設置的代理服務器地址上去(IP_ADDR + PORT)。

代理設置App: “Proxy Settings”

現在我們需要在Android手機上進行代理配置。具體步驟如下:

  • 進入Android的Wi-Fi設置
  • 長按當前連接的網絡
  • 選擇“修改網絡”選項
  • 勾選“顯示高級選項”
  • 啟用代理服務器并將代理設置為“手動”
  • 輸入之前設置好的的IP地址和端口。
  • 如果要禁用代理同理?,F在Android端的設置就大功告成了。

    是不是覺得上面的步驟有點頭疼?不急!幸虧還有Proxy Settings?這個App。用了Proxy Settings,上面繁瑣的步驟就變得異常簡單了。有了這個輕量級的App,你只需輕輕一點,便可輕松地開啟或禁用網絡連接里的代理設置。

    Proxy Settings 的使用截圖

    ?

    通過Proxy Settings?,你可以創建多個代理配置。當你想要啟用其中一個,只需點擊當前連接的網絡,啟用代理,并選擇你需要的配置。如果你要禁用代理,點擊連接,并禁用它。

    就這么簡單,對了,它還不需要root權限哦?

    那如何調試 HTTPS?

    正如前面所提到的,mitmproxy還支持HTTPS攔截。這個特性讓你在保持API endpoint 不變的情況下調試生產環境里的API變得異常方便。然而由于HTTPS的工作方式,我們需要安裝一個自定義的SSL證書,讓mitmproxy對所攔截的流量進行解密。

    聽起來HTTPS攔截的步驟好像有點麻煩,其實很簡單。你只需按照mitmproxy官網的這篇設置指南便可輕易地完成設置。記得在啟動mitmproxy的時候需要額外添加一個參數,如下命令所示:

    ?

    1 $?mitmproxy?-a?IP_ADDR?-p?PORT?—-no-upstream-cert

    ?

    不過此處還有個小問題。Android是以一種加密的形式來保存SSL證書的,而這種加密的形式即用戶設置的手機解鎖信息。也就是說,你在Android上安裝任何SSL證書之前,系統都會提示你設置解鎖手機的方式,比如輸入PIN碼,密碼或者是某種圖案。

    調試3G/4G

    3G/4G這種情況下設置代理更難了。系統設置中沒有為3G/4G連接提供代理設置接口。但是!你可以通過你的手機“移動熱點”功能來實現在3G/4G這種情況下設置代理。你要準備的就是:

  • 一臺可以連接3G/4G網絡的Android手機
  • 一臺開啟了“開發者模式”的手機(另一臺了)
  • 你的筆記本電腦
  • 接下來的步驟就簡單啦:

  • 在第一臺手機上激活“移動熱點”功能
  • 將你的筆記本電腦和第二臺手機(“開啟了開發者模式”)連上移動熱點
  • 在筆記本電腦上啟動 mitmproxy,并將IP地址設為hotspot所對應的(通常是192.168.43.xxx 之類的)
  • 在第二臺手機上使用Proxy Settings設置代理
  • OK,在3G/4G這種情況下設置代理就是這樣子的。

    ?

    總結

    到目前為止,我還試過其他兩種代理工具,Charles和Fiddler。 但是mitmproxy完爆他們兩個。Charles?可能是在功能,靈活性以及操作系統支持這幾個方面和mitmproxy最接近的,但是它一不免費,二不開源。 對于?Fiddler, 它只能在Windows平臺上使用。

    mitmproxy + Proxy Settings?的結合讓我省了不少心,我希望它們也能為你所用。

    如果你有更好的解決方法,記得告訴我。

    本文翻譯自音樂App?musiXmatch?公司高級Android工程Sebastiano Gottardo。原文地址:https://medium.com/@rotxed/how-to-debug-http-s-traffic-on-android-7fbe5d2a34

    ?

    UPDATE:有同學反應對這個工具到底怎么使用不是很清楚,于是我打算在本文基礎上再增加一些實踐相關的文字,后來發現篇幅過于臃腫,干脆新寫了一篇關于mitmproxy實踐的文章,希望能給大家一些啟發。

    ?


    本文轉自wanqi博客園博客,原文鏈接:http://www.cnblogs.com/wanqieddy/p/4262765.html,如需轉載請自行聯系原作者



    總結

    以上是生活随笔為你收集整理的如何调试 Android 上 HTTP(S) 流量的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。