From 5018ef5b6e0064ca02fd6810bf597093c10257f5 Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Fri, 10 Mar 2023 14:37:19 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E4=BC=98=E5=8C=96=20API=20User=20Agent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/huanchengfly/tieba/post/App.kt | 3 +++ .../java/com/huanchengfly/tieba/post/api/Utils.kt | 11 +++++++++++ .../tieba/post/api/retrofit/RetrofitTiebaApi.kt | 5 ++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/App.kt b/app/src/main/java/com/huanchengfly/tieba/post/App.kt index 6df9c27b..7f3c7458 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/App.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/App.kt @@ -13,6 +13,7 @@ import android.graphics.Color import android.graphics.drawable.Drawable import android.os.Build import android.os.Process +import android.webkit.WebSettings import android.webkit.WebView import androidx.annotation.Keep import androidx.annotation.RequiresApi @@ -206,9 +207,11 @@ class App : Application(), IApp, SketchFactory { var oaid: String = "" var encodedOAID: String = "" var isTrackLimited: Boolean = false + var userAgent: String? = null fun init(context: Context) { if (!inited) { + userAgent = WebSettings.getDefaultUserAgent(context) isOAIDSupported = DeviceID.supportedOAID(context) if (isOAIDSupported) { DeviceID.getOAID(context, OAIDGetter) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/api/Utils.kt b/app/src/main/java/com/huanchengfly/tieba/post/api/Utils.kt index 9df4a89b..6764929e 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/api/Utils.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/api/Utils.kt @@ -1,9 +1,20 @@ package com.huanchengfly.tieba.post.api +import android.os.Build +import com.huanchengfly.tieba.post.App import com.huanchengfly.tieba.post.App.ScreenInfo import com.huanchengfly.tieba.post.api.models.protos.ThreadInfo import com.huanchengfly.tieba.post.utils.EmoticonManager + +private val defaultUserAgent: String = + "Mozilla/5.0 (Linux; Android ${Build.VERSION.RELEASE}; ${Build.MODEL} Build/TKQ1.220829.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/109.0.5414.86 Mobile Safari/537.36" + +fun getUserAgent(appendString: String? = null): String { + val append = " ${appendString?.trim()}".takeIf { !appendString.isNullOrEmpty() }.orEmpty() + return "${App.Config.userAgent ?: defaultUserAgent}$append" +} + fun getScreenHeight(): Int = ScreenInfo.EXACT_SCREEN_HEIGHT fun getScreenWidth(): Int = ScreenInfo.EXACT_SCREEN_WIDTH diff --git a/app/src/main/java/com/huanchengfly/tieba/post/api/retrofit/RetrofitTiebaApi.kt b/app/src/main/java/com/huanchengfly/tieba/post/api/retrofit/RetrofitTiebaApi.kt index 97f307d4..22a298bd 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/api/retrofit/RetrofitTiebaApi.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/api/retrofit/RetrofitTiebaApi.kt @@ -5,6 +5,7 @@ import com.huanchengfly.tieba.post.App import com.huanchengfly.tieba.post.api.ClientVersion import com.huanchengfly.tieba.post.api.Header import com.huanchengfly.tieba.post.api.Param +import com.huanchengfly.tieba.post.api.getUserAgent import com.huanchengfly.tieba.post.api.models.OAID import com.huanchengfly.tieba.post.api.retrofit.adapter.DeferredCallAdapterFactory import com.huanchengfly.tieba.post.api.retrofit.adapter.FlowCallAdapterFactory @@ -48,8 +49,6 @@ object RetrofitTiebaApi { internal val randomClientId = "wappc_${initTime}_${(Math.random() * 1000).roundToInt()}" private val stParamInterceptor = StParamInterceptor() private val connectionPool = ConnectionPool(32, 5, TimeUnit.MINUTES) - private val defaultUserAgent: String = - "Mozilla/5.0 (Linux; Android ${Build.VERSION.RELEASE}; ${Build.MODEL} Build/TKQ1.220829.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/109.0.5414.86 Mobile Safari/537.36" private val defaultCommonParamInterceptor = CommonParamInterceptor( Param.BDUSS to { AccountUtil.getBduss() }, @@ -90,7 +89,7 @@ object RetrofitTiebaApi { val WEB_TIEBA_API: WebTiebaApi by lazy { createJsonApi("https://tieba.baidu.com/", CommonHeaderInterceptor( - Header.USER_AGENT to { "$defaultUserAgent tieba/11.10.8.6 skin/default" }, + Header.USER_AGENT to { getUserAgent("tieba/11.10.8.6 skin/default") }, Header.CUID to { CuidUtils.getNewCuid() }, Header.CUID_GALAXY2 to { CuidUtils.getNewCuid() }, Header.CUID_GID to { "" },