diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java index 2424a958..ecd469bd 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java @@ -584,6 +584,8 @@ public class PlayActivity extends BaseActivity { String flag = info.optString("flag"); String url = info.getString("url"); HashMap headers = null; + //web给个默认的UA + webUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36"; webHeaderMap = null; if (info.has("header")) { try { @@ -595,6 +597,9 @@ public class PlayActivity extends BaseActivity { headers = new HashMap<>(); } headers.put(key, hds.getString(key)); + if (key.equalsIgnoreCase("user-agent")) { + webUserAgent = hds.getString(key).trim(); + } } webHeaderMap = headers; } catch (Throwable th) { @@ -813,6 +818,7 @@ public class PlayActivity extends BaseActivity { private String progressKey; private String parseFlag; private String webUrl; + private String webUserAgent; private Map webHeaderMap; private void initParse(String flag, boolean useParse, String playUrl, final String url) { @@ -1137,30 +1143,15 @@ public class PlayActivity extends BaseActivity { } } - // void loadUrl(String url) { -// runOnUiThread(new Runnable() { -// @Override -// public void run() { -// if (mXwalkWebView != null) { -// mXwalkWebView.stopLoading(); -// mXwalkWebView.clearCache(true); -// mXwalkWebView.loadUrl(url); -// } -// if (mSysWebView != null) { -// mSysWebView.stopLoading(); -// mSysWebView.clearCache(true); -// mSysWebView.loadUrl(url); -// } -// } -// }); -// } void loadUrl(String url) { runOnUiThread(new Runnable() { @Override public void run() { if (mXwalkWebView != null) { mXwalkWebView.stopLoading(); - Map map = new HashMap() ; + if(webUserAgent != null) { + mXwalkWebView.getSettings().setUserAgentString(webUserAgent); + } //mXwalkWebView.clearCache(true); if(webHeaderMap != null){ mXwalkWebView.loadUrl(url,webHeaderMap); @@ -1170,6 +1161,9 @@ public class PlayActivity extends BaseActivity { } if (mSysWebView != null) { mSysWebView.stopLoading(); + if(webUserAgent != null) { + mSysWebView.getSettings().setUserAgentString(webUserAgent); + } //mSysWebView.clearCache(true); if(webHeaderMap != null){ mSysWebView.loadUrl(url,webHeaderMap); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java index 6e27f43c..0541bfe5 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java @@ -582,6 +582,8 @@ public class PlayFragment extends BaseLazyFragment { String flag = info.optString("flag"); String url = info.getString("url"); HashMap headers = null; + //web给个默认的UA + webUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36"; webHeaderMap = null; if (info.has("header")) { try { @@ -593,6 +595,9 @@ public class PlayFragment extends BaseLazyFragment { headers = new HashMap<>(); } headers.put(key, hds.getString(key)); + if (key.equalsIgnoreCase("user-agent")) { + webUserAgent = hds.getString(key).trim(); + } } webHeaderMap = headers; } catch (Throwable th) { @@ -832,6 +837,7 @@ public class PlayFragment extends BaseLazyFragment { private String progressKey; private String parseFlag; private String webUrl; + private String webUserAgent; private Map webHeaderMap; private void initParse(String flag, boolean useParse, String playUrl, final String url) { @@ -1157,30 +1163,15 @@ public class PlayFragment extends BaseLazyFragment { } } -// void loadUrl(String url) { -// requireActivity().runOnUiThread(new Runnable() { -// @Override -// public void run() { -// if (mXwalkWebView != null) { -// mXwalkWebView.stopLoading(); -// mXwalkWebView.clearCache(true); -// mXwalkWebView.loadUrl(url); -// } -// if (mSysWebView != null) { -// mSysWebView.stopLoading(); -// mSysWebView.clearCache(true); -// mSysWebView.loadUrl(url); -// } -// } -// }); -// } - void loadUrl(String url) { requireActivity().runOnUiThread(new Runnable() { @Override public void run() { if (mXwalkWebView != null) { mXwalkWebView.stopLoading(); + if(webUserAgent != null) { + mXwalkWebView.getSettings().setUserAgentString(webUserAgent); + } //mXwalkWebView.clearCache(true); if(webHeaderMap != null){ mXwalkWebView.loadUrl(url,webHeaderMap); @@ -1190,6 +1181,9 @@ public class PlayFragment extends BaseLazyFragment { } if (mSysWebView != null) { mSysWebView.stopLoading(); + if(webUserAgent != null) { + mSysWebView.getSettings().setUserAgentString(webUserAgent); + } //mSysWebView.clearCache(true); if(webHeaderMap != null){ mSysWebView.loadUrl(url,webHeaderMap); @@ -1330,7 +1324,7 @@ public class PlayFragment extends BaseLazyFragment { //设置编码 settings.setDefaultTextEncodingName("utf-8"); settings.setUserAgentString(webView.getSettings().getUserAgentString()); - // settings.setUserAgentString(ANDROID_UA); +// settings.setUserAgentString(ANDROID_UA); webView.setWebChromeClient(new WebChromeClient() { @Override diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java index fc381e09..65ca7b29 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java @@ -25,6 +25,7 @@ import com.github.tvbox.osc.ui.activity.SettingActivity; import com.github.tvbox.osc.ui.adapter.HomeHotVodAdapter; import com.github.tvbox.osc.util.FastClickCheckUtil; import com.github.tvbox.osc.util.HawkConfig; +import com.github.tvbox.osc.util.UA; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -201,11 +202,17 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen if (requestDay.equals(today)) { String json = Hawk.get("home_hot", ""); if (!json.isEmpty()) { - adapter.setNewData(loadHots(json)); - return; + ArrayList hotMovies = loadHots(json); + if (hotMovies != null && hotMovies.size() > 0) { + adapter.setNewData(hotMovies); + return; + } } } - OkGo.get("https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&playable=1&start=0&year_range=" + year + "," + year).execute(new AbsCallback() { + String doubanUrl = "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&playable=1&start=0&year_range=" + year + "," + year; + OkGo.get(doubanUrl) + .headers("User-Agent", UA.randomOne()) + .execute(new AbsCallback() { @Override public void onSuccess(Response response) { String netJson = response.body(); diff --git a/app/src/main/java/com/github/tvbox/osc/util/UA.java b/app/src/main/java/com/github/tvbox/osc/util/UA.java index 8c550f70..ac49f607 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/UA.java +++ b/app/src/main/java/com/github/tvbox/osc/util/UA.java @@ -9,7 +9,7 @@ import java.io.InputStream; import java.util.Random; public class UA { - /* + private static String[] uas = new String[]{ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4557.4 Safari/537.36", @@ -5419,57 +5419,11 @@ public class UA { "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", }; - - public static void writeToFile() { - try { - FileOutputStream fos = new FileOutputStream("/sdcard/ua.db"); - DataOutputStream dos = new DataOutputStream(fos); - dos.writeInt(uas.length); - for (int i = 0; i < uas.length; i++) { - dos.writeInt(0); - } - int strOffset = 0; - for (int i = 0; i < uas.length; i++) { - long oldPos = fos.getChannel().position(); - dos.writeUTF(uas[i]); - long newPos = fos.getChannel().position(); - fos.getChannel().position(4 + (i * 4)); - dos.writeInt(strOffset); - strOffset += newPos - oldPos; - fos.getChannel().position(newPos); - } - dos.flush(); - dos.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - public static String randomOne() { - try { - FileInputStream fis = new FileInputStream("/sdcard/ua.db"); - DataInputStream dis = new DataInputStream(fis); - int len = dis.readInt(); - int random = new Random().nextInt(len); - int skipLen = 4 + random * 4; - fis.getChannel().position(0); - fis.getChannel().position(skipLen); - int offset = dis.readInt(); - int strOffset = 4 + 4 * len + offset; - fis.getChannel().position(0); - fis.getChannel().position(strOffset); - String s = dis.readUTF(); - return s; - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - return null; + int num = uas.length; + int key = (int)(Math.random()*num); + return uas[key]; } - */ public static String random() { try {