← 返回全部文章

Android 抓包别再装证书

Atlantis Android 把 OkHttp、Retrofit、Apollo Kotlin 和 WebSocket 流量直接送进 Proxyman。省掉代理和证书配置,但它不是系统级抓包工具。

Android 抓包最烦的地方,通常不在抓包工具本身,而在手机代理、证书安装、系统版本和证书校验。 Atlantis Android 换了一个角度:把库接进 App,直接把 HTTP 、 HTTPS 和 WebSocket 流量发送到 Proxyman 。

它是 Proxyman 的开源伴随库,适合 Android 开发调试。 README 里写得很明确:不需要配置代理,也不需要在设备上安装 SSL 证书;支持 OkHttp 自动拦截,Retrofit 2.9+、 Apollo Kotlin 3.x/4.x 也能跟着覆盖,因为它们常走 OkHttp 。

先看限制

这不是系统级抓包。它只能看到你接入了 Atlantis interceptor 的 App 流量,抓不到其他 App,也抓不到没走 OkHttp 的网络栈。 WebSocket 也要用 Atlantis.wrapWebSocketListener() 包一层 listener 。

运行条件也要对上:Android API 26+,OkHttp 4.x 或 5.x,Kotlin 1.9+。 Proxyman 要在电脑上开着,真机通常要和电脑处在同一局域网,库会用 NSD 自动发现;模拟器支持直连。如果自动发现不稳,可以手动传 Mac 的 hostname 。

依赖建议只放在 debugImplementation。它会把请求、响应、 Header 、 Body 发到调试端,生产包里别带,涉及 token 、手机号、订单号的接口也要注意脱敏和团队权限。

使用教程

先在 settings.gradle.kts 加 JitPack:

dependencyResolutionManagement {
    repositories {
        maven { url = uri("https://jitpack.io") }
    }
}

模块里加依赖:

dependencies {
    debugImplementation("com.github.ProxymanApp:atlantis-android:v1.0.0")
}

也可以走 Maven Central:

dependencies {
    debugImplementation("com.proxyman:atlantis-android:1.0.0")
}

然后在 Application 里启动:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        if (BuildConfig.DEBUG) {
            Atlantis.start(this)
        }
    }
}

给 OkHttpClient 加 interceptor:

val okHttpClient = OkHttpClient.Builder()
    .addInterceptor(Atlantis.getInterceptor())
    .build()

WebSocket 需要单独包 listener:

val listener = Atlantis.wrapWebSocketListener(
    object : WebSocketListener() {
        override fun onMessage(webSocket: WebSocket, text: String) {
            // your logic
        }
    }
)
okHttpClient.newWebSocket(request, listener)

如果想固定连某台电脑,可以这样写:

Atlantis.start(this, "MacBook-Pro.local")

最后打开 Proxyman,运行 App,流量会出现在 Proxyman 里。团队调接口、排查登录态、看 GraphQL 请求、定位 WebSocket 消息时,这种接法比每次教同事装证书省事很多。前提也很清楚:只放 debug 包,只抓自己 App,只在可信网络里调试。

来源:https://github.com/ProxymanApp/atlantis-android