diff --git a/app/src/main/java/io/legado/app/help/http/HttpHelper.kt b/app/src/main/java/io/legado/app/help/http/HttpHelper.kt index 466610b21..3f1f36f6f 100644 --- a/app/src/main/java/io/legado/app/help/http/HttpHelper.kt +++ b/app/src/main/java/io/legado/app/help/http/HttpHelper.kt @@ -7,6 +7,8 @@ import io.legado.app.help.http.cronet.CronetInterceptor import io.legado.app.help.http.cronet.CronetLoader import io.legado.app.utils.NetworkUtils import okhttp3.* +import org.jsoup.Connection +import org.jsoup.Jsoup import java.net.InetSocketAddress import java.net.Proxy import java.util.concurrent.ConcurrentHashMap @@ -38,6 +40,17 @@ val cookieJar by lazy { } } +fun requestWithoutUA(url: String): Connection.Response { + val response = Jsoup.connect(url.replace("#requestWithoutUA", "")) + .sslSocketFactory(SSLHelper.unsafeSSLSocketFactory) + .ignoreContentType(true) + .followRedirects(false) + .headers(mapOf("User-Agent" to "")) + .method(Connection.Method.GET) + .execute() + return response +} + val okHttpClient: OkHttpClient by lazy { val specs = arrayListOf( ConnectionSpec.MODERN_TLS, diff --git a/app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt index 29f457496..e90aa836f 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt @@ -14,6 +14,7 @@ import io.legado.app.help.book.ContentProcessor import io.legado.app.help.config.AppConfig import io.legado.app.help.http.newCallResponseBody import io.legado.app.help.http.okHttpClient +import io.legado.app.help.http.requestWithoutUA import io.legado.app.help.source.SourceHelp import io.legado.app.utils.* @@ -127,10 +128,15 @@ class ImportBookSourceViewModel(app: Application) : BaseViewModel(app) { } private suspend fun importSourceUrl(url: String) { - okHttpClient.newCallResponseBody { - url(url) - }.byteStream().let { - allSources.addAll(BookSource.fromJsonArray(it).getOrThrow()) + if (url.indexOf("#requestWithoutUA")>-1) { + val res = requestWithoutUA(url).body() + allSources.addAll(BookSource.fromJsonArray(res).getOrThrow()) + } else { + okHttpClient.newCallResponseBody { + url(url) + }.byteStream().let { + allSources.addAll(BookSource.fromJsonArray(it).getOrThrow()) + } } } diff --git a/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt index 52bdd597c..a2809181a 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt @@ -9,6 +9,7 @@ import io.legado.app.data.entities.HttpTTS import io.legado.app.exception.NoStackTraceException import io.legado.app.help.http.newCallResponseBody import io.legado.app.help.http.okHttpClient +import io.legado.app.help.http.requestWithoutUA import io.legado.app.help.http.text import io.legado.app.utils.isAbsUrl import io.legado.app.utils.isJsonArray @@ -88,10 +89,15 @@ class ImportHttpTtsViewModel(app: Application) : BaseViewModel(app) { } private suspend fun importSourceUrl(url: String) { - okHttpClient.newCallResponseBody { - url(url) - }.text().let { - importSourceAwait(it) + if (url.indexOf("#requestWithoutUA")>-1) { + val res = requestWithoutUA(url).body() + importSourceAwait(res) + } else { + okHttpClient.newCallResponseBody { + url(url) + }.text().let { + importSourceAwait(it) + } } } diff --git a/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt index a4e050f22..c83388d1d 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt @@ -11,6 +11,7 @@ import io.legado.app.help.ReplaceAnalyzer import io.legado.app.help.config.AppConfig import io.legado.app.help.http.newCallResponseBody import io.legado.app.help.http.okHttpClient +import io.legado.app.help.http.requestWithoutUA import io.legado.app.help.http.text import io.legado.app.utils.isAbsUrl import io.legado.app.utils.isJsonArray @@ -110,10 +111,15 @@ class ImportReplaceRuleViewModel(app: Application) : BaseViewModel(app) { } private suspend fun importUrl(url: String) { - okHttpClient.newCallResponseBody { - url(url) - }.text("utf-8").let { - importAwait(it) + if (url.indexOf("#requestWithoutUA")>-1) { + val res = requestWithoutUA(url).body() + importAwait(res) + } else { + okHttpClient.newCallResponseBody { + url(url) + }.text("utf-8").let { + importAwait(it) + } } } diff --git a/app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt index 73cd1314c..98b4c0120 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt @@ -12,6 +12,7 @@ import io.legado.app.exception.NoStackTraceException import io.legado.app.help.config.AppConfig import io.legado.app.help.http.newCallResponseBody import io.legado.app.help.http.okHttpClient +import io.legado.app.help.http.requestWithoutUA import io.legado.app.help.source.SourceHelp import io.legado.app.utils.* @@ -121,14 +122,19 @@ class ImportRssSourceViewModel(app: Application) : BaseViewModel(app) { } private suspend fun importSourceUrl(url: String) { - okHttpClient.newCallResponseBody { - url(url) - }.byteStream().let { body -> - val items: List> = jsonPath.parse(body).read("$") - for (item in items) { - val jsonItem = jsonPath.parse(item) - RssSource.fromJson(jsonItem.jsonString()).getOrThrow().let { source -> - allSources.add(source) + if (url.indexOf("#requestWithoutUA")>-1) { + val res = requestWithoutUA(url).body() + importSource(res) + } else { + okHttpClient.newCallResponseBody { + url(url) + }.byteStream().let { body -> + val items: List> = jsonPath.parse(body).read("$") + for (item in items) { + val jsonItem = jsonPath.parse(item) + RssSource.fromJson(jsonItem.jsonString()).getOrThrow().let { source -> + allSources.add(source) + } } } } diff --git a/app/src/main/java/io/legado/app/ui/association/ImportThemeViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportThemeViewModel.kt index a611fe8a9..9d861d1f2 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportThemeViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportThemeViewModel.kt @@ -8,6 +8,7 @@ import io.legado.app.exception.NoStackTraceException import io.legado.app.help.config.ThemeConfig import io.legado.app.help.http.newCallResponseBody import io.legado.app.help.http.okHttpClient +import io.legado.app.help.http.requestWithoutUA import io.legado.app.help.http.text import io.legado.app.utils.* @@ -83,10 +84,15 @@ class ImportThemeViewModel(app: Application) : BaseViewModel(app) { } private suspend fun importSourceUrl(url: String) { - okHttpClient.newCallResponseBody { - url(url) - }.text().let { - importSourceAwait(it) + if (url.indexOf("#requestWithoutUA")>-1) { + val res = requestWithoutUA(url).body() + importSourceAwait(res) + } else { + okHttpClient.newCallResponseBody { + url(url) + }.text().let { + importSourceAwait(it) + } } } diff --git a/app/src/main/java/io/legado/app/ui/association/ImportTxtTocRuleViewModel.kt b/app/src/main/java/io/legado/app/ui/association/ImportTxtTocRuleViewModel.kt index 938373d6d..001fedbb5 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportTxtTocRuleViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportTxtTocRuleViewModel.kt @@ -9,6 +9,7 @@ import io.legado.app.data.entities.TxtTocRule import io.legado.app.exception.NoStackTraceException import io.legado.app.help.http.newCallResponseBody import io.legado.app.help.http.okHttpClient +import io.legado.app.help.http.requestWithoutUA import io.legado.app.help.http.text import io.legado.app.utils.* @@ -86,10 +87,15 @@ class ImportTxtTocRuleViewModel(app: Application) : BaseViewModel(app) { } private suspend fun importSourceUrl(url: String) { - okHttpClient.newCallResponseBody { - url(url) - }.text().let { - importSourceAwait(it) + if (url.indexOf("#requestWithoutUA")>-1) { + val res = requestWithoutUA(url).body() + importSourceAwait(res) + } else { + okHttpClient.newCallResponseBody { + url(url) + }.text().let { + importSourceAwait(it) + } } }