Skip to content

Commit 6327f9d

Browse files
improvement
1 parent f4dddaf commit 6327f9d

1 file changed

Lines changed: 37 additions & 49 deletions

File tree

AnimeSailProvider/src/main/kotlin/com/animesail/AnimeSailProvider.kt

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -34,85 +34,73 @@ class TurnstileInterceptor(private val targetCookie: String = "_as_turnstile") :
3434
override fun intercept(chain: Interceptor.Chain): Response {
3535
val originalRequest = chain.request()
3636
val url = originalRequest.url.toString()
37-
38-
val domainUrl = "${originalRequest.url.scheme}://${originalRequest.url.host}"
3937
val cookieManager = CookieManager.getInstance()
4038

41-
var currentCookies = cookieManager.getCookie(domainUrl) ?: ""
39+
var currentCookies = cookieManager.getCookie(url) ?: ""
4240
var userAgent = originalRequest.header("User-Agent") ?: ""
4341

42+
var response: Response? = null
4443
var needsRefresh = false
45-
var initialResponse: Response? = null
4644

47-
if (currentCookies.contains(targetCookie)) {
45+
if (!currentCookies.contains(targetCookie)) {
46+
needsRefresh = true
47+
} else {
4848
val requestBuilder = originalRequest.newBuilder()
4949
.header("Cookie", currentCookies)
50-
51-
initialResponse = chain.proceed(requestBuilder.build())
50+
response = chain.proceed(requestBuilder.build())
5251

53-
if (initialResponse.code == 403 || initialResponse.code == 503) {
52+
if (response.code == 403 || response.code == 503) {
5453
needsRefresh = true
55-
initialResponse.close()
56-
} else {
57-
return initialResponse
54+
response.close()
5855
}
59-
} else {
60-
needsRefresh = true
6156
}
6257

6358
if (needsRefresh) {
64-
val context = AcraApplication.context
65-
if (context != null) {
66-
val handler = Handler(Looper.getMainLooper())
67-
var webView: WebView? = null
68-
69-
handler.post {
70-
val newWebView = WebView(context)
71-
webView = newWebView
59+
runBlocking(Dispatchers.Main) {
60+
val context = AcraApplication.context
61+
if (context != null) {
62+
val webView = WebView(context)
7263

73-
newWebView.settings.apply {
74-
javaScriptEnabled = true
75-
domStorageEnabled = true
76-
userAgentString = userAgent.ifBlank { userAgentString }
64+
webView.settings.javaScriptEnabled = true
65+
webView.settings.domStorageEnabled = true
66+
webView.settings.userAgentString = userAgent.ifBlank { webView.settings.userAgentString }
67+
userAgent = webView.settings.userAgentString
68+
69+
webView.webViewClient = object : WebViewClient() {
70+
override fun onPageFinished(view: WebView?, url: String?) {
71+
super.onPageFinished(view, url)
72+
}
7773
}
78-
userAgent = newWebView.settings.userAgentString ?: userAgent
79-
80-
newWebView.webViewClient = WebViewClient()
8174

82-
cookieManager.setCookie(domainUrl, "$targetCookie=; Max-Age=0")
83-
cookieManager.flush()
75+
cookieManager.setCookie(url, "$targetCookie=; Max-Age=0")
8476

85-
newWebView.loadUrl(url)
86-
}
77+
webView.loadUrl(url)
8778

88-
var attempts = 0
89-
val maxAttempts = 60
90-
while (attempts < maxAttempts) {
91-
Thread.sleep(1000)
92-
val checkCookies = cookieManager.getCookie(domainUrl) ?: ""
93-
94-
if (checkCookies.contains(targetCookie)) {
95-
cookieManager.flush()
96-
break
79+
var attempts = 0
80+
val maxAttempts = 30
81+
while (attempts < maxAttempts) {
82+
delay(1000)
83+
val checkCookies = cookieManager.getCookie(url) ?: ""
84+
if (checkCookies.contains(targetCookie)) {
85+
break
86+
}
87+
attempts++
9788
}
98-
attempts++
99-
}
10089

101-
handler.post {
102-
webView?.stopLoading()
103-
webView?.destroy()
90+
webView.stopLoading()
91+
webView.destroy()
10492
}
10593
}
10694

107-
currentCookies = cookieManager.getCookie(domainUrl) ?: ""
95+
currentCookies = cookieManager.getCookie(url) ?: ""
10896
val newRequestBuilder = originalRequest.newBuilder()
10997
.header("User-Agent", userAgent)
11098
.header("Cookie", currentCookies)
11199

112-
return chain.proceed(newRequestBuilder.build())
100+
response = chain.proceed(newRequestBuilder.build())
113101
}
114102

115-
return initialResponse ?: chain.proceed(originalRequest)
103+
return response ?: chain.proceed(originalRequest)
116104
}
117105
}
118106

0 commit comments

Comments
 (0)