From fb6d4a8bd68c9e79ba87cad5d901524b007615aa Mon Sep 17 00:00:00 2001 From: Kofua <1638183271zjn@gmail.com> Date: Thu, 4 May 2023 10:21:47 +0800 Subject: [PATCH] Optimize api hook --- app/src/main/java/me/iacn/biliroaming/hook/OkHttpHook.kt | 4 +++- app/src/main/java/me/iacn/biliroaming/hook/api/ApiHook.kt | 1 + app/src/main/java/me/iacn/biliroaming/hook/api/CardsHook.kt | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/me/iacn/biliroaming/hook/OkHttpHook.kt b/app/src/main/java/me/iacn/biliroaming/hook/OkHttpHook.kt index 9d0f076e0e..308699ce7d 100644 --- a/app/src/main/java/me/iacn/biliroaming/hook/OkHttpHook.kt +++ b/app/src/main/java/me/iacn/biliroaming/hook/OkHttpHook.kt @@ -46,7 +46,9 @@ class OkHttpHook(classLoader: ClassLoader) : BaseHook(classLoader) { val longType = Long::class.javaPrimitiveType!! val contentLengthField = responseBody.javaClass.findFieldByExactTypeOrNull(longType) ?: return@out - val respString = responseBody.callMethod(stringMethod)?.toString() ?: return@out + val respString = if (hook.decodeResponse()) { + responseBody.callMethod(stringMethod)?.toString() ?: return@out + } else "" val newResponse = hook.hook(respString) val stream = newResponse.byteInputStream() val length = stream.available() diff --git a/app/src/main/java/me/iacn/biliroaming/hook/api/ApiHook.kt b/app/src/main/java/me/iacn/biliroaming/hook/api/ApiHook.kt index 6dfab03ceb..4cab6aff79 100644 --- a/app/src/main/java/me/iacn/biliroaming/hook/api/ApiHook.kt +++ b/app/src/main/java/me/iacn/biliroaming/hook/api/ApiHook.kt @@ -4,5 +4,6 @@ interface ApiHook { val enabled: Boolean fun canHandler(api: String): Boolean + fun decodeResponse(): Boolean = true fun hook(response: String): String } diff --git a/app/src/main/java/me/iacn/biliroaming/hook/api/CardsHook.kt b/app/src/main/java/me/iacn/biliroaming/hook/api/CardsHook.kt index f2e12aab8c..adf3ddaf25 100644 --- a/app/src/main/java/me/iacn/biliroaming/hook/api/CardsHook.kt +++ b/app/src/main/java/me/iacn/biliroaming/hook/api/CardsHook.kt @@ -16,6 +16,7 @@ object CardsHook : ApiHook { } override fun canHandler(api: String) = cardsApis.any { api.startsWith(it) } + override fun decodeResponse() = false override fun hook(response: String): String { return JSONObject().apply {