Add sniffer limit

pull/594/head
jhengazuki 4 months ago
parent 1e7548f12e
commit 1cf4f6345a
  1. 16
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java

@ -32,7 +32,7 @@ import com.orhanobut.logger.Logger;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -43,10 +43,11 @@ public class CustomWebView extends WebView implements DialogInterface.OnDismissL
private static final Pattern PLAYER = Pattern.compile("player/.*[?&][^=&]+=https?://"); private static final Pattern PLAYER = Pattern.compile("player/.*[?&][^=&]+=https?://");
private static final String BLANK = "about:blank"; private static final String BLANK = "about:blank";
private static final int MAX_URLS = 5;
private LinkedHashSet<String> urls;
private WebResourceResponse empty; private WebResourceResponse empty;
private ParseCallback callback; private ParseCallback callback;
private HashSet<String> urls;
private WebDialog dialog; private WebDialog dialog;
private Runnable timer; private Runnable timer;
private boolean detect; private boolean detect;
@ -66,8 +67,8 @@ public class CustomWebView extends WebView implements DialogInterface.OnDismissL
@SuppressLint("SetJavaScriptEnabled") @SuppressLint("SetJavaScriptEnabled")
public void initSettings() { public void initSettings() {
this.urls = new HashSet<>();
this.timer = () -> stop(true); this.timer = () -> stop(true);
this.urls = new LinkedHashSet<>();
this.empty = new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes())); this.empty = new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes()));
getSettings().setSupportZoom(true); getSettings().setSupportZoom(true);
getSettings().setUseWideViewPort(true); getSettings().setUseWideViewPort(true);
@ -117,8 +118,8 @@ public class CustomWebView extends WebView implements DialogInterface.OnDismissL
String host = request.getUrl().getHost(); String host = request.getUrl().getHost();
if (TextUtils.isEmpty(host) || isAd(host)) return empty; if (TextUtils.isEmpty(host) || isAd(host)) return empty;
Map<String, String> headers = request.getRequestHeaders(); Map<String, String> headers = request.getRequestHeaders();
if (url.contains("challenges.cloudflare.com/turnstile")) App.post(() -> showDialog()); if (url.contains("/cdn-cgi/challenge-platform/")) App.post(() -> showDialog());
if (detect && PLAYER.matcher(url).find() && urls.add(url)) onParseAdd(headers, url); if (detect && PLAYER.matcher(url).find() && addUrl(url)) onParseAdd(headers, url);
else if (isVideoFormat(url)) onParseSuccess(headers, url); else if (isVideoFormat(url)) onParseSuccess(headers, url);
return super.shouldInterceptRequest(view, request); return super.shouldInterceptRequest(view, request);
} }
@ -143,6 +144,11 @@ public class CustomWebView extends WebView implements DialogInterface.OnDismissL
}; };
} }
private boolean addUrl(String url) {
if (urls.size() > MAX_URLS) urls.clear();
return urls.add(url);
}
private void showDialog() { private void showDialog() {
if (dialog != null || App.activity() == null) return; if (dialog != null || App.activity() == null) return;
if (getParent() != null) ((ViewGroup) getParent()).removeView(this); if (getParent() != null) ((ViewGroup) getParent()).removeView(this);

Loading…
Cancel
Save