Optimize cf dialog

pull/496/head
FongMi 2 years ago
parent 8f3c707ade
commit 827311f554
  1. 44
      app/src/leanback/java/com/fongmi/android/tv/ui/dialog/WebDialog.java
  2. 16
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java
  3. 38
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/WebDialog.java
  4. 12
      thunder/src/main/AndroidManifest.xml
  5. 1
      thunder/src/main/java/com/xunlei/downloadlib/XLDownloadManager.java

@ -0,0 +1,44 @@
package com.fongmi.android.tv.ui.dialog;
import android.content.DialogInterface;
import android.view.View;
import android.view.WindowManager;
import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class WebDialog {
private final AlertDialog dialog;
public static WebDialog create(View view) {
return new WebDialog(view);
}
public WebDialog(View view) {
this.dialog = new MaterialAlertDialogBuilder(App.activity()).setView(view).create();
this.dialog.setOnDismissListener((DialogInterface.OnDismissListener) view);
}
public WebDialog show() {
initDialog();
return this;
}
public void dismiss() {
dialog.setOnDismissListener(null);
dialog.dismiss();
}
private void initDialog() {
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.height = (int) (ResUtil.getScreenHeight() * 0.8f);
params.width = (int) (ResUtil.getScreenWidth() * 0.8f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.show();
}
}

@ -1,8 +1,8 @@
package com.fongmi.android.tv.ui.custom;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.Uri;
import android.net.http.SslError;
import android.text.TextUtils;
@ -22,6 +22,7 @@ import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.impl.ParseCallback;
import com.fongmi.android.tv.ui.dialog.WebDialog;
import com.fongmi.android.tv.utils.Sniffer;
import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkCookieJar;
@ -33,14 +34,14 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class CustomWebView extends WebView {
public class CustomWebView extends WebView implements DialogInterface.OnDismissListener {
private static final String TAG = CustomWebView.class.getSimpleName();
private static final String BLANK = "about:blank";
private WebResourceResponse empty;
private ParseCallback callback;
private AlertDialog dialog;
private WebDialog dialog;
private Runnable timer;
private boolean detect;
private String click;
@ -107,7 +108,7 @@ public class CustomWebView extends WebView {
String host = request.getUrl().getHost();
Map<String, String> headers = request.getRequestHeaders();
if (TextUtils.isEmpty(host) || VodConfig.get().getAds().contains(host)) return empty;
if (url.contains("challenges.cloudflare.com/cdn-cgi")) App.post(() -> showDialog());
if (url.contains("challenges.cloudflare.com/turnstile")) App.post(() -> showDialog());
if (detect && url.contains("player/?url=")) onParseAdd(headers, url);
else if (isVideoFormat(url)) onParseSuccess(headers, url);
return super.shouldInterceptRequest(view, request);
@ -136,7 +137,7 @@ public class CustomWebView extends WebView {
private void showDialog() {
if (dialog != null || App.activity() == null) return;
if (getParent() != null) ((ViewGroup) getParent()).removeView(this);
dialog = new AlertDialog.Builder(App.activity()).setView(this).show();
dialog = new WebDialog(this).show();
App.removeCallbacks(timer);
}
@ -145,6 +146,11 @@ public class CustomWebView extends WebView {
dialog = null;
}
@Override
public void onDismiss(DialogInterface dialog) {
stop(true);
}
private List<String> getScript(String url) {
List<String> script = new ArrayList<>(Sniffer.getScript(Uri.parse(url)));
if (TextUtils.isEmpty(click) || script.contains(click)) return script;

@ -0,0 +1,38 @@
package com.fongmi.android.tv.ui.dialog;
import android.content.DialogInterface;
import android.view.View;
import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.App;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class WebDialog {
private final AlertDialog dialog;
public static WebDialog create(View view) {
return new WebDialog(view);
}
public WebDialog(View view) {
this.dialog = new MaterialAlertDialogBuilder(App.activity()).setView(view).create();
this.dialog.setOnDismissListener((DialogInterface.OnDismissListener) view);
}
public WebDialog show() {
initDialog();
return this;
}
public void dismiss() {
dialog.setOnDismissListener(null);
dialog.dismiss();
}
private void initDialog() {
dialog.getWindow().setDimAmount(0);
dialog.show();
}
}

@ -1 +1,11 @@
<manifest package="com.ghost.thunder" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ghost.thunder">
<application>
<meta-data
android:name="com.xunlei.download.APP_KEY"
android:value="bpIzNjAxNTsxNTA0MDk0ODg4LjQyODAwMA&amp;&amp;OxNw==21^5e1c1b6a73^c76f3^cd3c0e331d164^ed3c62==2974DD65D2^39222^5954C5914A8267D" />
</application>
</manifest>

@ -33,6 +33,7 @@ public class XLDownloadManager {
public void init() {
InitParam param = new InitParam(context.getFilesDir().getPath());
loader.init(context, param.mAppVersion, "", getPeerId(), getGuid(), param.mStatSavePath, param.mStatCfgSavePath, param.mLogSavePath, 9, param.mPermissionLevel);
loader.setUserId("Yt4vsji-qngamdRo");
setSpeedLimit(-1, -1);
}

Loading…
Cancel
Save