新增 requestWithoutUA

通过增加特定标识使用无UA请求,适用于网络导入书源等
用法:http://xxx.xxx/xxxx#requestWithoutUA
pull/2587/head
adhu2018 3 years ago
parent feae7bd149
commit 8a5bd630b3
  1. 13
      app/src/main/java/io/legado/app/help/http/HttpHelper.kt
  2. 14
      app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt
  3. 14
      app/src/main/java/io/legado/app/ui/association/ImportHttpTtsViewModel.kt
  4. 14
      app/src/main/java/io/legado/app/ui/association/ImportReplaceRuleViewModel.kt
  5. 22
      app/src/main/java/io/legado/app/ui/association/ImportRssSourceViewModel.kt
  6. 14
      app/src/main/java/io/legado/app/ui/association/ImportThemeViewModel.kt
  7. 14
      app/src/main/java/io/legado/app/ui/association/ImportTxtTocRuleViewModel.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,

@ -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())
}
}
}

@ -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)
}
}
}

@ -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)
}
}
}

@ -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<Map<String, Any>> = 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<Map<String, Any>> = jsonPath.parse(body).read("$")
for (item in items) {
val jsonItem = jsonPath.parse(item)
RssSource.fromJson(jsonItem.jsonString()).getOrThrow().let { source ->
allSources.add(source)
}
}
}
}

@ -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)
}
}
}

@ -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)
}
}
}

Loading…
Cancel
Save