mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	Add option to set user agent in WebViewResolver
This commit is contained in:
		
							parent
							
								
									7aad801a6e
								
							
						
					
					
						commit
						54d4193734
					
				
					 1 changed files with 14 additions and 6 deletions
				
			
		|  | @ -15,14 +15,18 @@ import okhttp3.Interceptor | |||
| import okhttp3.Request | ||||
| import okhttp3.Response | ||||
| import java.net.URI | ||||
| import java.util.concurrent.TimeUnit | ||||
| 
 | ||||
| /** | ||||
|  * When used as Interceptor additionalUrls cannot be returned, use WebViewResolver(...).resolveUsingWebView(...) | ||||
|  * @param interceptUrl will stop the WebView when reaching this url. | ||||
|  * @param additionalUrls this will make resolveUsingWebView also return all other requests matching the list of Regex. | ||||
|  * @param userAgent if null then will use the default user agent | ||||
|  * */ | ||||
| class WebViewResolver(val interceptUrl: Regex, val additionalUrls: List<Regex> = emptyList()) : | ||||
| class WebViewResolver( | ||||
|     val interceptUrl: Regex, | ||||
|     val additionalUrls: List<Regex> = emptyList(), | ||||
|     val userAgent: String? = USER_AGENT, | ||||
| ) : | ||||
|     Interceptor { | ||||
| 
 | ||||
|     override fun intercept(chain: Interceptor.Chain): Response { | ||||
|  | @ -38,7 +42,7 @@ class WebViewResolver(val interceptUrl: Regex, val additionalUrls: List<Regex> = | |||
|         referer: String? = null, | ||||
|         method: String = "GET", | ||||
|         requestCallBack: (Request) -> Boolean = { false }, | ||||
|     ) : Pair<Request?, List<Request>> { | ||||
|     ): Pair<Request?, List<Request>> { | ||||
|         return resolveUsingWebView( | ||||
|             requestCreator(method, url, referer = referer), requestCallBack | ||||
|         ) | ||||
|  | @ -81,7 +85,11 @@ class WebViewResolver(val interceptUrl: Regex, val additionalUrls: List<Regex> = | |||
|                     // Bare minimum to bypass captcha | ||||
|                     settings.javaScriptEnabled = true | ||||
|                     settings.domStorageEnabled = true | ||||
|                     settings.userAgentString = USER_AGENT | ||||
| 
 | ||||
|                     // Don't set user agent, setting user agent will make cloudflare break. | ||||
|                     if (userAgent != null) { | ||||
|                         settings.userAgentString = userAgent | ||||
|                     } | ||||
|                     // Blocks unnecessary images, remove if captcha fucks. | ||||
|                     settings.blockNetworkImage = true | ||||
|                 } | ||||
|  | @ -233,9 +241,9 @@ class WebViewResolver(val interceptUrl: Regex, val additionalUrls: List<Regex> = | |||
|             val found = typeRegex.find(contentTypeValue) | ||||
|             val contentType = found?.groupValues?.getOrNull(1)?.ifBlank { null } ?: contentTypeValue | ||||
|             val charset = found?.groupValues?.getOrNull(2)?.ifBlank { null } | ||||
|             WebResourceResponse(contentType, charset, this.body?.byteStream()) | ||||
|             WebResourceResponse(contentType, charset, this.body.byteStream()) | ||||
|         } else { | ||||
|             WebResourceResponse("application/octet-stream", null, this.body?.byteStream()) | ||||
|             WebResourceResponse("application/octet-stream", null, this.body.byteStream()) | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue