Hiperdex: Fix http 403 and blocked in WebView (#11744)
* fix 403 * bump * use cf-ray header
This commit is contained in:
parent
e17d796fc1
commit
e595780f24
@ -3,7 +3,7 @@ ext {
|
|||||||
extClass = '.Hiperdex'
|
extClass = '.Hiperdex'
|
||||||
themePkg = 'madara'
|
themePkg = 'madara'
|
||||||
baseUrl = 'https://hiperdex.com'
|
baseUrl = 'https://hiperdex.com'
|
||||||
overrideVersionCode = 22
|
overrideVersionCode = 23
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,45 @@
|
|||||||
|
package eu.kanade.tachiyomi.extension.en.hiperdex
|
||||||
|
|
||||||
|
import okhttp3.Interceptor
|
||||||
|
import okhttp3.Response
|
||||||
|
|
||||||
|
class ClearanceInterceptor : Interceptor {
|
||||||
|
|
||||||
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
|
val request = chain.request()
|
||||||
|
val hasClearanceCookie = request.headers("Cookie").any { cookieHeader ->
|
||||||
|
cookieHeader.split(";").any { cookie ->
|
||||||
|
cookie.trim().startsWith("$COOKIE_NAME=")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasClearanceCookie) return chain.proceed(request)
|
||||||
|
|
||||||
|
val response = chain.proceed(request)
|
||||||
|
if (response.code == 403 && response.header(CF_RAY_HEADER) != null) {
|
||||||
|
val hasClearanceInResponse = response.headers("Set-Cookie").any { cookieHeader ->
|
||||||
|
cookieHeader.split(";").any { cookie ->
|
||||||
|
cookie.trim().startsWith("$COOKIE_NAME=")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasClearanceInResponse) return response
|
||||||
|
|
||||||
|
val newResponse = response.newBuilder()
|
||||||
|
.header(
|
||||||
|
"Set-Cookie",
|
||||||
|
"$COOKIE_NAME=; Path=/; Domain=${request.url.host}",
|
||||||
|
)
|
||||||
|
.body(response.body)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
return newResponse
|
||||||
|
}
|
||||||
|
return response
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val COOKIE_NAME = "cf_clearance"
|
||||||
|
private const val CF_RAY_HEADER = "cf-ray"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -37,6 +37,7 @@ class Hiperdex :
|
|||||||
override val baseUrl by lazy { getPrefBaseUrl() }
|
override val baseUrl by lazy { getPrefBaseUrl() }
|
||||||
|
|
||||||
override val client = super.client.newBuilder()
|
override val client = super.client.newBuilder()
|
||||||
|
.addNetworkInterceptor(ClearanceInterceptor())
|
||||||
.setRandomUserAgent(
|
.setRandomUserAgent(
|
||||||
preferences.getPrefUAType(),
|
preferences.getPrefUAType(),
|
||||||
preferences.getPrefCustomUA(),
|
preferences.getPrefCustomUA(),
|
||||||
@ -44,7 +45,7 @@ class Hiperdex :
|
|||||||
.rateLimit(3)
|
.rateLimit(3)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val useLoadMoreRequest = LoadMoreStrategy.Never
|
override val useLoadMoreRequest = LoadMoreStrategy.Always
|
||||||
|
|
||||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||||
EditTextPreference(screen.context).apply {
|
EditTextPreference(screen.context).apply {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user