Support single proxy - part 6

pull/142/head
FongMi 2 years ago
parent cacb1676fc
commit 05229922da
  1. 4
      app/build.gradle
  2. 10
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  3. 5
      catvod/src/main/java/com/github/catvod/crawler/Spider.java
  4. 14
      catvod/src/main/java/com/github/catvod/net/OkHttp.java
  5. 4
      pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java
  6. 4
      quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java
  7. 8
      quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java

@ -21,12 +21,12 @@ android {
leanback {
dimension "mode"
versionCode 205
versionName "20230924"
versionName "20230924#2"
}
mobile {
dimension "mode"
versionCode 205
versionName "20230924"
versionName "20230924#2"
}
java {
dimension "api"

@ -83,7 +83,7 @@ public class SiteViewModel extends ViewModel {
SpiderDebug.log(homeContent);
return Result.fromJson(homeContent);
} else {
String homeContent = OkHttp.newCall(site.getApi(), site.getHeaders()).execute().body().string();
String homeContent = OkHttp.newCall(site.isProxy(), site.getApi(), site.getHeaders()).execute().body().string();
SpiderDebug.log(homeContent);
return fetchPic(site, Result.fromType(site.getType(), homeContent));
}
@ -186,7 +186,7 @@ public class SiteViewModel extends ViewModel {
} else {
Url url = Url.create().add(id);
String type = Uri.parse(id).getQueryParameter("type");
if (type != null && type.equals("json")) url = Result.fromJson(OkHttp.newCall(id, site.getHeaders()).execute().body().string()).getUrl();
if (type != null && type.equals("json")) url = Result.fromJson(OkHttp.newCall(site.isProxy(), id, site.getHeaders()).execute().body().string()).getUrl();
Result result = new Result();
result.setUrl(url);
result.setFlag(flag);
@ -238,7 +238,7 @@ public class SiteViewModel extends ViewModel {
}
private String call(Site site, ArrayMap<String, String> params, boolean limit) throws IOException {
Call call = fetchExt(site, params, limit).length() <= 1000 ? OkHttp.newCall(site.getApi(), params, site.getHeaders()) : OkHttp.newCall(site.getApi(), OkHttp.toBody(params), site.getHeaders());
Call call = fetchExt(site, params, limit).length() <= 1000 ? OkHttp.newCall(site.isProxy(), site.getApi(), params, site.getHeaders()) : OkHttp.newCall(site.isProxy(), site.getApi(), OkHttp.toBody(params), site.getHeaders());
return call.execute().body().string();
}
@ -251,7 +251,7 @@ public class SiteViewModel extends ViewModel {
}
private String fetchExt(Site site) throws IOException {
Response res = OkHttp.newCall(site.getExt(), site.getHeaders()).execute();
Response res = OkHttp.newCall(site.isProxy(), site.getExt(), site.getHeaders()).execute();
if (res.code() != 200) return "";
site.setExt(res.body().string());
return site.getExt();
@ -264,7 +264,7 @@ public class SiteViewModel extends ViewModel {
ArrayMap<String, String> params = new ArrayMap<>();
params.put("ac", site.getType() == 0 ? "videolist" : "detail");
params.put("ids", TextUtils.join(",", ids));
String response = OkHttp.newCall(site.getApi(), params, site.getHeaders()).execute().body().string();
String response = OkHttp.newCall(site.isProxy(), site.getApi(), params, site.getHeaders()).execute().body().string();
result.setList(Result.fromType(site.getType(), response).getList());
return result;
}

@ -9,6 +9,7 @@ import java.util.List;
import java.util.Map;
import okhttp3.Dns;
import okhttp3.OkHttpClient;
public abstract class Spider {
@ -76,4 +77,8 @@ public abstract class Spider {
public static Dns safeDns() {
return OkHttp.dns();
}
public static OkHttpClient client(boolean proxy, boolean redirect, int timeout) {
return OkHttp.client(proxy, redirect, timeout);
}
}

@ -109,19 +109,19 @@ public class OkHttp {
}
public static Call newCall(String url, Headers headers) {
return client(true).newCall(new Request.Builder().url(url).headers(headers).build());
return newCall(true, url, headers);
}
public static Call newCall(String url, ArrayMap<String, String> params) {
return client(true).newCall(new Request.Builder().url(buildUrl(url, params)).build());
public static Call newCall(boolean proxy, String url, Headers headers) {
return client(proxy).newCall(new Request.Builder().url(url).headers(headers).build());
}
public static Call newCall(String url, ArrayMap<String, String> params, Headers headers) {
return client(true).newCall(new Request.Builder().url(buildUrl(url, params)).headers(headers).build());
public static Call newCall(boolean proxy, String url, ArrayMap<String, String> params, Headers headers) {
return client(proxy).newCall(new Request.Builder().url(buildUrl(url, params)).headers(headers).build());
}
public static Call newCall(String url, RequestBody body, Headers headers) {
return client(true).newCall(new Request.Builder().url(url).post(body).headers(headers).build());
public static Call newCall(boolean proxy, String url, RequestBody body, Headers headers) {
return client(proxy).newCall(new Request.Builder().url(url).post(body).headers(headers).build());
}
public static Call newCall(OkHttpClient client, String url, RequestBody body) {

@ -99,9 +99,9 @@ public class Spider extends com.github.catvod.crawler.Spider {
Headers header = getHeader(object.optString("header"));
ArrayMap<String, String> param = getParam(object.optString("param"));
if (object.optString("type").equals("stream")) {
return new Object[]{code, type, OkHttp.newCall(url, param, header).execute().body().byteStream()};
return new Object[]{code, type, OkHttp.newCall(proxy(), url, param, header).execute().body().byteStream()};
} else {
if (content.isEmpty()) content = OkHttp.newCall(url, header).execute().body().string();
if (content.isEmpty()) content = OkHttp.newCall(proxy(), url, header).execute().body().string();
return new Object[]{code, type, new ByteArrayInputStream(content.getBytes())};
}
}

@ -150,7 +150,7 @@ public class Spider extends com.github.catvod.crawler.Spider {
ctx.setModuleLoader(new QuickJSContext.DefaultModuleLoader() {
@Override
public String getModuleStringCode(String moduleName) {
return Module.get().fetch(moduleName);
return Module.get().fetch(proxy(), moduleName);
}
});
}
@ -200,7 +200,7 @@ public class Spider extends com.github.catvod.crawler.Spider {
private String getContent() {
String global = "globalThis." + name;
String content = Module.get().fetch(api);
String content = Module.get().fetch(proxy(), api);
if (content.contains("__jsEvalReturn")) {
cat = true;
return content.concat(global + " = __jsEvalReturn()");

@ -29,19 +29,19 @@ public class Module {
this.cache = new ConcurrentHashMap<>();
}
public String fetch(String name) {
public String fetch(boolean proxy, String name) {
if (cache.contains(name)) return cache.get(name);
if (name.startsWith("http")) cache.put(name, request(name));
if (name.startsWith("http")) cache.put(name, request(proxy, name));
if (name.startsWith("assets")) cache.put(name, Path.asset(name.substring(9)));
return cache.get(name);
}
private String request(String url) {
private String request(boolean proxy, String url) {
try {
Uri uri = Uri.parse(url);
File file = Path.js(uri.getLastPathSegment());
if (file.exists()) return Path.read(file);
Response response = OkHttp.newCall(url, Headers.of(HttpHeaders.USER_AGENT, "Mozilla/5.0")).execute();
Response response = OkHttp.newCall(proxy, url, Headers.of(HttpHeaders.USER_AGENT, "Mozilla/5.0")).execute();
if (response.code() != 200) return "";
byte[] data = response.body().bytes();
boolean cache = !"127.0.0.1".equals(uri.getHost());

Loading…
Cancel
Save