diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt index 82848fb23..7d8d5ce85 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt @@ -76,7 +76,7 @@ abstract class MangaParser @InternalParsersApi constructor( abstract val configKeyDomain: ConfigKey.Domain open val headers: Headers = Headers.Builder() - .add("User-Agent", UserAgents.CHROME_MOBILE) + .add("User-Agent", UserAgents.DEFAULT_BROWSER) .build() /** diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/network/UserAgents.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/network/UserAgents.kt index 4e3bbcb67..0ac3e52ef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/network/UserAgents.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/network/UserAgents.kt @@ -2,13 +2,19 @@ package org.koitharu.kotatsu.parsers.network object UserAgents { + @Deprecated("Issues with CloudFlare", replaceWith = ReplaceWith("UserAgents.DEFAULT_BROWSER")) const val CHROME_MOBILE = "Mozilla/5.0 (Linux; Android 13) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 Mobile Safari/537.36" + const val FIREFOX_MOBILE = "Mozilla/5.0 (Android 14; Mobile; LG-M255; rv:123.0) Gecko/123.0 Firefox/123.0" + const val CHROME_DESKTOP = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" const val FIREFOX_DESKTOP = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0" - const val KOTATSU = "Kotatsu/5.3 (Android 13;;; en)" + const val KOTATSU = "Kotatsu/6.8 (Android 13;;; en)" + + + const val DEFAULT_BROWSER = FIREFOX_MOBILE } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt index 73890a17d..92c0b3957 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt @@ -25,7 +25,7 @@ internal class LegacyScansParser(context: MangaLoaderContext) : override val configKeyDomain = ConfigKey.Domain("legacy-scans.com") override val headers: Headers = Headers.Builder() - .add("User-Agent", UserAgents.CHROME_MOBILE) + .add("User-Agent", UserAgents.DEFAULT_BROWSER) .build() override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt index 593d4470f..efd93e622 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt @@ -21,7 +21,7 @@ internal class LireScan(context: MangaLoaderContext) : PagedMangaParser(context, override val isMultipleTagsSupported = false override val headers: Headers = Headers.Builder() - .add("User-Agent", UserAgents.CHROME_MOBILE) + .add("User-Agent", UserAgents.DEFAULT_BROWSER) .build() override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt index e8f04983a..28325a421 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt @@ -12,7 +12,7 @@ import java.util.* internal class Shinigami(context: MangaLoaderContext) : MadaraParser(context, MangaSource.SHINIGAMI, "shinigamitoon.com", 10) { - private val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_MOBILE) + private val userAgentKey = ConfigKey.UserAgent(UserAgents.DEFAULT_BROWSER) override val tagPrefix = "genre/" override val listUrl = "series/" override val sourceLocale: Locale = Locale.ENGLISH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt index 1884cce0d..450b9eb9c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt @@ -32,7 +32,7 @@ internal class RemangaParser( context: MangaLoaderContext, ) : PagedMangaParser(context, MangaSource.REMANGA, PAGE_SIZE), MangaParserAuthProvider, Interceptor { - private val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_MOBILE) + private val userAgentKey = ConfigKey.UserAgent(UserAgents.DEFAULT_BROWSER) private val baseHeaders: Headers get() = Headers.Builder() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt index d5ea7409d..a982478af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt @@ -26,7 +26,7 @@ class HentaiVNParser(context: MangaLoaderContext) : MangaParser(context, MangaSo override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("hentaivn.red", "hentaivn.autos", "hentaivn.tv") // hentaivn has created 2 different interfaces for mobile and desktop, and Cloudflare detects whether it's mobile or not even with a desktop user agent. - override val headers: Headers = Headers.Builder().add("User-Agent", UserAgents.CHROME_MOBILE).build() + override val headers: Headers = Headers.Builder().add("User-Agent", UserAgents.DEFAULT_BROWSER).build() override val availableSortOrders: Set = EnumSet.of( SortOrder.UPDATED,