Skip to content

Commit

Permalink
fix -- webview proxy addded and adblocker improved
Browse files Browse the repository at this point in the history
  • Loading branch information
zobaer53 committed Aug 28, 2023
1 parent 94b2012 commit 35649fa
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 5 deletions.
Binary file modified .gradle/buildOutputCleanup/buildOutputCleanup.lock
Binary file not shown.
29 changes: 25 additions & 4 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ dependencies {
implementation 'androidx.core:core:1.10.1'
implementation platform('org.jetbrains.kotlin:kotlin-bom:1.8.10')
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
implementation 'com.google.android.gms:play-services-basement:18.2.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.zobaer53.zedmovies.ui.webview

/*
import android.content.Context
import android.os.Build
import android.webkit.WebResourceRequest
Expand Down Expand Up @@ -63,3 +65,74 @@ class ContentBlockingWebViewClient(context: Context) : WebViewClient() {
return url.contains("popup") || url.contains("ad")
}
}
*/
import android.graphics.Bitmap
import android.net.Proxy
import android.os.Build
import android.webkit.WebResourceRequest
import android.webkit.WebResourceResponse
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.annotation.RequiresApi
import com.google.android.gms.common.api.Response
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.ByteArrayInputStream
import java.io.IOException
import java.net.HttpURLConnection
import java.net.URL

class AdBlockingWebViewClient(private val okHttpClient: OkHttpClient) : WebViewClient() {

override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest?): WebResourceResponse? {
try {
val okHttpRequest = Request.Builder()
.url(request?.url.toString())
.build()

val response = okHttpClient.newCall(okHttpRequest).execute()
val contentType = response.header("content-type")
val inputStream = response.body?.byteStream()

return if (contentType != null && inputStream != null) {
WebResourceResponse(contentType, "UTF-8", inputStream)
} else {
val adBlocker = AdBlocker()

if (adBlocker.shouldBlock(request?.url?.toString() ?: "")) {
val emptyStream = ByteArrayInputStream(byteArrayOf())
return WebResourceResponse("text/plain", "utf-8", emptyStream)
}

return super.shouldInterceptRequest(view, request)
}

} catch (e: IOException) {
return super.shouldInterceptRequest(view, request)
}
}

override fun shouldInterceptRequest(view: WebView?, url: String?): WebResourceResponse? {
val adBlocker = AdBlocker()

if (adBlocker.shouldBlock(url ?: "")) {
val emptyStream = ByteArrayInputStream(byteArrayOf())
return WebResourceResponse("text/plain", "utf-8", emptyStream)
}

return super.shouldInterceptRequest(view, url)
}
}

class AdBlocker {
private val adDomains = setOf(
"ad.doubleclick.net",
"googleads.g.doubleclick.net",
// Add more ad domains as needed
)

fun shouldBlock(url: String): Boolean {
return adDomains.any { domain -> url.contains(domain) }
}
}

15 changes: 14 additions & 1 deletion app/src/main/java/com/zobaer53/zedmovies/ui/webview/WebView.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
package com.zobaer53.zedmovies.ui.webview

import android.annotation.SuppressLint
import android.os.Build
import android.webkit.WebChromeClient
import android.webkit.WebView
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.AndroidView
import androidx.webkit.WebViewFeature
import androidx.webkit.WebSettingsCompat
import okhttp3.OkHttpClient
import java.net.InetSocketAddress


@SuppressLint("SetJavaScriptEnabled")
@Composable
Expand All @@ -20,14 +26,21 @@ fun VideoWebView(url: String) {
javaScriptEnabled = true
mediaPlaybackRequiresUserGesture = false
}
val proxyHost = "91.211.245.176"
val proxyPort = 8080 // Your proxy port

val okHttpClient = OkHttpClient.Builder()
.proxy(java.net.Proxy(java.net.Proxy.Type.HTTP, InetSocketAddress(proxyHost, proxyPort)))
.build()

// Set WebViewClient and WebChromeClient
webViewClient = ContentBlockingWebViewClient(context)
webViewClient = AdBlockingWebViewClient(okHttpClient)
webChromeClient = WebChromeClient()

// Load the video URL
loadUrl(url)
}
}
)

}

0 comments on commit 35649fa

Please sign in to comment.