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'
|
||||
themePkg = 'madara'
|
||||
baseUrl = 'https://hiperdex.com'
|
||||
overrideVersionCode = 22
|
||||
overrideVersionCode = 23
|
||||
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 client = super.client.newBuilder()
|
||||
.addNetworkInterceptor(ClearanceInterceptor())
|
||||
.setRandomUserAgent(
|
||||
preferences.getPrefUAType(),
|
||||
preferences.getPrefCustomUA(),
|
||||
@ -44,7 +45,7 @@ class Hiperdex :
|
||||
.rateLimit(3)
|
||||
.build()
|
||||
|
||||
override val useLoadMoreRequest = LoadMoreStrategy.Never
|
||||
override val useLoadMoreRequest = LoadMoreStrategy.Always
|
||||
|
||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||
EditTextPreference(screen.context).apply {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user