diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index ecd27ace9..d24fb7040 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -323,7 +323,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit @Override public void setProxy(String proxy) { Setting.putProxy(proxy); - OkHttp.get().setProxy(proxy); + OkHttp.get().setProxy(); Notify.progress(getActivity()); ApiConfig.load(Config.vod(), getCallback()); mBinding.proxyText.setText(Util.scheme(proxy)); diff --git a/app/src/main/java/com/fongmi/android/tv/App.java b/app/src/main/java/com/fongmi/android/tv/App.java index 93bef9e26..ba1fbca7f 100644 --- a/app/src/main/java/com/fongmi/android/tv/App.java +++ b/app/src/main/java/com/fongmi/android/tv/App.java @@ -106,7 +106,6 @@ public class App extends Application { super.onCreate(); Notify.createChannel(); Logger.addLogAdapter(getLogAdapter()); - OkHttp.get().setProxy(Setting.getProxy()); OkHttp.get().setDoh(Doh.objectFrom(Setting.getDoh())); CaocConfig.Builder.create().backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT).errorActivity(CrashActivity.class).apply(); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index e06036876..0dafe7511 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -232,9 +232,9 @@ public class ApiConfig { boolean js = site.getApi().contains(".js"); boolean py = site.getApi().startsWith("py_"); boolean csp = site.getApi().startsWith("csp_"); - if (py) return pyLoader.getSpider(site.getKey(), site.getApi(), site.getExt()); - else if (js) return jsLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.getJar()); - else if (csp) return jarLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.getJar()); + if (py) return pyLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.isProxy()); + else if (js) return jsLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.getJar(), site.isProxy()); + else if (csp) return jarLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.getJar(), site.isProxy()); else return new SpiderNull(); } diff --git a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java index c7bdfe2af..68d0c3e0b 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java @@ -101,14 +101,14 @@ public class JarLoader { return loaders.get(key); } - public Spider getSpider(String key, String api, String ext, String jar) { + public Spider getSpider(String key, String api, String ext, String jar, boolean proxy) { try { String jaKey = Util.md5(jar); String spKey = jaKey + key; if (spiders.containsKey(spKey)) return spiders.get(spKey); if (!loaders.containsKey(jaKey)) parseJar(jaKey, jar); Spider spider = (Spider) loaders.get(jaKey).loadClass("com.github.catvod.spider." + api.split("csp_")[1]).newInstance(); - spider.init(App.get(), ext); + spider.proxy(proxy).init(App.get(), ext); spiders.put(spKey, spider); return spider; } catch (Throwable e) { diff --git a/app/src/main/java/com/fongmi/android/tv/api/JsLoader.java b/app/src/main/java/com/fongmi/android/tv/api/JsLoader.java index 4b742fda1..6721152e0 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/JsLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/JsLoader.java @@ -39,11 +39,11 @@ public class JsLoader { } } - public Spider getSpider(String key, String api, String ext, String jar) { + public Spider getSpider(String key, String api, String ext, String jar, boolean proxy) { try { if (spiders.containsKey(key)) return spiders.get(key); Spider spider = new com.fongmi.quickjs.crawler.Spider(key, api, dex(key, jar)); - spider.init(App.get(), ext); + spider.proxy(proxy).init(App.get(), ext); spiders.put(key, spider); return spider; } catch (Throwable e) { diff --git a/app/src/main/java/com/fongmi/android/tv/api/PyLoader.java b/app/src/main/java/com/fongmi/android/tv/api/PyLoader.java index f95036969..a3cb34061 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/PyLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/PyLoader.java @@ -37,12 +37,12 @@ public class PyLoader { } } - public Spider getSpider(String key, String api, String ext) { + public Spider getSpider(String key, String api, String ext, boolean proxy) { try { if (spiders.containsKey(key)) return spiders.get(key); Method method = loader.getClass().getMethod("spider", Context.class, String.class, String.class); Spider spider = (Spider) method.invoke(loader, App.get(), api.split("py_")[1], ext); - spider.init(App.get(), ext); + spider.proxy(proxy).init(App.get(), ext); spiders.put(key, spider); return spider; } catch (Throwable e) { diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Channel.java b/app/src/main/java/com/fongmi/android/tv/bean/Channel.java index 53a8af9b7..5ca880357 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Channel.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Channel.java @@ -39,6 +39,8 @@ public class Channel { private JsonElement header; @SerializedName("playerType") private Integer playerType; + @SerializedName("proxy") + private Boolean proxy; @SerializedName("drm") private Drm drm; @@ -143,6 +145,18 @@ public class Channel { this.playerType = playerType; } + public Boolean getProxy() { + return proxy; + } + + public boolean isProxy() { + return proxy != null && proxy; + } + + public void setProxy(boolean proxy) { + this.proxy = proxy; + } + public Drm getDrm() { return drm; } @@ -244,6 +258,7 @@ public class Channel { } public void live(Live live) { + if (live.isProxy() && getProxy() == null) setProxy(live.isProxy()); if (live.getUa().length() > 0 && getUa().isEmpty()) setUa(live.getUa()); if (live.getHeader() != null && getHeader() == null) setHeader(live.getHeader()); if (live.getReferer().length() > 0 && getReferer().isEmpty()) setReferer(live.getReferer()); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Live.java b/app/src/main/java/com/fongmi/android/tv/bean/Live.java index 0aa427f4c..336cb2315 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Live.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Live.java @@ -23,6 +23,8 @@ public class Live { private boolean boot; @SerializedName("pass") private boolean pass; + @SerializedName("proxy") + private boolean proxy; @SerializedName("name") private String name; @SerializedName("group") @@ -87,6 +89,10 @@ public class Live { return pass; } + public boolean isProxy() { + return proxy; + } + public String getName() { return TextUtils.isEmpty(name) ? "" : name; } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Result.java b/app/src/main/java/com/fongmi/android/tv/bean/Result.java index e7d7fa3d9..e3ef3e405 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Result.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Result.java @@ -78,6 +78,8 @@ public class Result implements Parcelable { @JsonAdapter(MsgAdapter.class) @SerializedName("msg") private String msg; + @SerializedName("proxy") + private boolean proxy; public static Result objectFrom(String str) { try { @@ -257,6 +259,10 @@ public class Result implements Parcelable { this.msg = msg; } + public boolean isProxy() { + return proxy; + } + public boolean hasMsg() { return getMsg().length() > 0; } diff --git a/app/src/main/java/com/fongmi/android/tv/impl/NewPipeImpl.java b/app/src/main/java/com/fongmi/android/tv/impl/NewPipeImpl.java index 8ed668f18..0179fe87f 100644 --- a/app/src/main/java/com/fongmi/android/tv/impl/NewPipeImpl.java +++ b/app/src/main/java/com/fongmi/android/tv/impl/NewPipeImpl.java @@ -38,7 +38,7 @@ public class NewPipeImpl extends Downloader { builder.header(headerName, headerValueList.get(0)); } } - okhttp3.Response response = OkHttp.client().newCall(builder.build()).execute(); + okhttp3.Response response = OkHttp.clientProxy().newCall(builder.build()).execute(); if (response.code() == 429) { response.close(); throw new ReCaptchaException("reCaptcha Challenge requested", url); diff --git a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java index 37b03f017..80b04b9b2 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java @@ -60,6 +60,7 @@ public class ExoUtil { private static DataSource.Factory dataSourceFactory; private static ExtractorsFactory extractorsFactory; private static DatabaseProvider database; + private static boolean proxy; private static Cache cache; public static LoadControl buildLoadControl() { @@ -105,22 +106,23 @@ public class ExoUtil { } public static MediaSource getSource(Result result, int errorCode) { - return getSource(result.getHeaders(), result.getRealUrl(), result.getFormat(), result.getSubs(), null, errorCode); + return getSource(result.getHeaders(), result.isProxy(), result.getRealUrl(), result.getFormat(), result.getSubs(), null, errorCode); } public static MediaSource getSource(Channel channel, int errorCode) { - return getSource(channel.getHeaders(), channel.getUrl(), null, Collections.emptyList(), channel.getDrm(), errorCode); + return getSource(channel.getHeaders(), channel.isProxy(), channel.getUrl(), null, Collections.emptyList(), channel.getDrm(), errorCode); } public static MediaSource getSource(Map headers, String url, int errorCode) { - return getSource(headers, url, null, Collections.emptyList(), null, errorCode); + return getSource(headers, false, url, null, Collections.emptyList(), null, errorCode); } - private static MediaSource getSource(Map headers, String url, String format, List subs, Drm drm, int errorCode) { + private static MediaSource getSource(Map headers, boolean proxy, String url, String format, List subs, Drm drm, int errorCode) { + if (ExoUtil.proxy != proxy) reset(); Uri uri = Uri.parse(url.trim().replace("\\", "")); String mimeType = getMimeType(format, errorCode); if (uri.getUserInfo() != null) headers.put(HttpHeaders.AUTHORIZATION, Util.basic(uri)); - return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs, drm)); + return new DefaultMediaSourceFactory(getDataSourceFactory(headers, ExoUtil.proxy = proxy), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs, drm)); } private static MediaItem getMediaItem(Uri uri, String mimeType, List subs, Drm drm) { @@ -169,13 +171,13 @@ public class ExoUtil { return extractorsFactory; } - private static synchronized HttpDataSource.Factory getHttpDataSourceFactory() { - if (httpDataSourceFactory == null) httpDataSourceFactory = Setting.getHttp() == 0 ? new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true).setProxy(Setting.getProxy()) : new OkHttpDataSource.Factory((Call.Factory) OkHttp.client()); + private static synchronized HttpDataSource.Factory getHttpDataSourceFactory(boolean proxy) { + if (httpDataSourceFactory == null) httpDataSourceFactory = Setting.getHttp() == 0 ? new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true).setProxy(proxy ? OkHttp.proxy() : null) : new OkHttpDataSource.Factory((Call.Factory) (proxy ? OkHttp.clientProxy() : OkHttp.client())); return httpDataSourceFactory; } - private static synchronized DataSource.Factory getDataSourceFactory(Map headers) { - if (dataSourceFactory == null) dataSourceFactory = buildReadOnlyCacheDataSource(new DefaultDataSource.Factory(App.get(), getHttpDataSourceFactory()), getCache()); + private static synchronized DataSource.Factory getDataSourceFactory(Map headers, boolean proxy) { + if (dataSourceFactory == null) dataSourceFactory = buildReadOnlyCacheDataSource(new DefaultDataSource.Factory(App.get(), getHttpDataSourceFactory(proxy)), getCache()); httpDataSourceFactory.setDefaultRequestProperties(Utils.checkUa(headers)); return dataSourceFactory; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index aa874d851..fdd10b9b1 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -330,7 +330,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit @Override public void setProxy(String proxy) { Setting.putProxy(proxy); - OkHttp.get().setProxy(proxy); + OkHttp.get().setProxy(); Notify.progress(getActivity()); ApiConfig.load(Config.vod(), getCallback()); mBinding.proxyText.setText(Util.scheme(proxy)); diff --git a/catvod/src/main/java/com/github/catvod/crawler/Spider.java b/catvod/src/main/java/com/github/catvod/crawler/Spider.java index 2bb4cb203..80fb73254 100644 --- a/catvod/src/main/java/com/github/catvod/crawler/Spider.java +++ b/catvod/src/main/java/com/github/catvod/crawler/Spider.java @@ -13,6 +13,13 @@ import okhttp3.Dns; public abstract class Spider { + private boolean proxy; + + public Spider proxy(boolean proxy) { + this.proxy = proxy; + return this; + } + public void init(Context context) throws Exception { } @@ -56,6 +63,10 @@ public abstract class Spider { return false; } + public boolean isProxy() { + return proxy; + } + public Object[] proxyLocal(Map params) throws Exception { return null; } diff --git a/catvod/src/main/java/com/github/catvod/net/DeflateInterceptor.java b/catvod/src/main/java/com/github/catvod/net/DeflateInterceptor.java index 6a894fd48..ed8bf1a67 100644 --- a/catvod/src/main/java/com/github/catvod/net/DeflateInterceptor.java +++ b/catvod/src/main/java/com/github/catvod/net/DeflateInterceptor.java @@ -21,10 +21,7 @@ public class DeflateInterceptor implements Interceptor { @NonNull @Override public Response intercept(@NonNull Chain chain) throws IOException { - return deflate(chain.proceed(chain.request())); - } - - private Response deflate(Response response) { + Response response = chain.proceed(chain.request()); String encoding = response.header(HttpHeaders.CONTENT_ENCODING); if (response.body() == null || encoding == null || !encoding.equals("deflate")) return response; InflaterInputStream is = new InflaterInputStream(response.body().byteStream(), new Inflater(true)); diff --git a/catvod/src/main/java/com/github/catvod/net/OkHttp.java b/catvod/src/main/java/com/github/catvod/net/OkHttp.java index 0cde6621b..b1676e88e 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -6,6 +6,7 @@ import androidx.collection.ArrayMap; import com.github.catvod.bean.Doh; import com.github.catvod.utils.Path; +import com.github.catvod.utils.Prefers; import com.github.catvod.utils.Util; import com.google.common.net.HttpHeaders; @@ -34,10 +35,11 @@ public class OkHttp { private static final int TIMEOUT = 30 * 1000; private static final int CACHE = 100 * 1024 * 1024; - private Uri proxy; private DnsOverHttps dns; private OkHttpClient client; private OkHttpClient noRedirect; + private OkHttpClient clientProxy; + private OkHttpClient noRedirectProxy; private static class Loader { static volatile OkHttp INSTANCE = new OkHttp(); @@ -50,15 +52,21 @@ public class OkHttp { public void setDoh(Doh doh) { OkHttpClient dohClient = new OkHttpClient.Builder().cache(new Cache(Path.doh(), CACHE)).hostnameVerifier(SSLCompat.VERIFIER).sslSocketFactory(new SSLCompat(), SSLCompat.TM).build(); dns = doh.getUrl().isEmpty() ? null : new DnsOverHttps.Builder().client(dohClient).url(HttpUrl.get(doh.getUrl())).bootstrapDnsHosts(doh.getHosts()).build(); + noRedirectProxy = null; + clientProxy = null; noRedirect = null; client = null; } - public void setProxy(String proxy) { + public void setProxy() { Authenticator.setDefault(null); - this.proxy = Uri.parse(proxy); - noRedirect = null; - client = null; + noRedirectProxy = null; + clientProxy = null; + } + + public static OkHttpClient client(boolean proxy, boolean redirect) { + if (proxy) return redirect ? clientProxy() : noRedirectProxy(); + else return redirect ? client() : noRedirect(); } public static OkHttpClient client() { @@ -71,18 +79,30 @@ public class OkHttp { return get().noRedirect = client().newBuilder().followRedirects(false).followSslRedirects(false).build(); } + public static OkHttpClient clientProxy() { + if (get().clientProxy != null) return get().clientProxy; + return get().clientProxy = clientProxy(TIMEOUT); + } + + public static OkHttpClient noRedirectProxy() { + if (get().noRedirectProxy != null) return get().noRedirectProxy; + return get().noRedirectProxy = clientProxy().newBuilder().followRedirects(false).followSslRedirects(false).build(); + } + public static Dns dns() { return get().dns != null ? get().dns : Dns.SYSTEM; } public static Uri proxy() { - return get().proxy; + return Uri.parse(Prefers.getString("proxy")); } public static OkHttpClient client(int timeout) { - OkHttpClient.Builder builder = new OkHttpClient.Builder().addInterceptor(new DeflateInterceptor()).connectTimeout(timeout, TimeUnit.MILLISECONDS).readTimeout(timeout, TimeUnit.MILLISECONDS).writeTimeout(timeout, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier(SSLCompat.VERIFIER).sslSocketFactory(new SSLCompat(), SSLCompat.TM); - if (proxy() != null && proxy().getScheme() != null && proxy().getHost() != null && proxy().getPort() > 0) setProxy(builder); - return builder.build(); + return new OkHttpClient.Builder().addInterceptor(new DeflateInterceptor()).connectTimeout(timeout, TimeUnit.MILLISECONDS).readTimeout(timeout, TimeUnit.MILLISECONDS).writeTimeout(timeout, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier(SSLCompat.VERIFIER).sslSocketFactory(new SSLCompat(), SSLCompat.TM).build(); + } + + public static OkHttpClient clientProxy(int timeout) { + return getProxyBuilder(proxy(), timeout).build(); } public static Call newCall(String url) { @@ -127,11 +147,14 @@ public class OkHttp { return builder.build(); } - private static void setProxy(OkHttpClient.Builder builder) { - String userInfo = proxy().getUserInfo(); + private static OkHttpClient.Builder getProxyBuilder(Uri uri, int timeout) { + String userInfo = uri.getUserInfo(); + OkHttpClient.Builder builder = client(timeout).newBuilder(); if (userInfo != null && userInfo.contains(":")) setAuthenticator(builder, userInfo); - if (Util.scheme(proxy()).startsWith("http")) builder.proxy(new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved(proxy().getHost(), proxy().getPort()))); - if (Util.scheme(proxy()).startsWith("socks")) builder.proxy(new Proxy(Proxy.Type.SOCKS, InetSocketAddress.createUnresolved(proxy().getHost(), proxy().getPort()))); + if (uri.getScheme() != null && uri.getHost() != null && uri.getPort() > 0) return builder; + if (Util.scheme(uri).startsWith("http")) builder.proxy(new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort()))); + if (Util.scheme(uri).startsWith("socks")) builder.proxy(new Proxy(Proxy.Type.SOCKS, InetSocketAddress.createUnresolved(uri.getHost(), uri.getPort()))); + return builder; } private static void setAuthenticator(OkHttpClient.Builder builder, String userInfo) { diff --git a/catvod/src/main/java/com/github/catvod/utils/Github.java b/catvod/src/main/java/com/github/catvod/utils/Github.java index 2ed3bf02c..8eb5cb1ef 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Github.java +++ b/catvod/src/main/java/com/github/catvod/utils/Github.java @@ -30,7 +30,7 @@ public class Github { } private Github() { - client = OkHttp.client(TIMEOUT); + client = OkHttp.clientProxy(TIMEOUT); check(A); check(B); check(C); diff --git a/quickjs/src/main/java/com/fongmi/quickjs/bean/Req.java b/quickjs/src/main/java/com/fongmi/quickjs/bean/Req.java index 144180585..af1191e6b 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/bean/Req.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/bean/Req.java @@ -67,6 +67,10 @@ public class Req { return headers; } + public boolean isRedirect() { + return getRedirect() == 1; + } + public Map getHeader() { return Json.toMap(getHeaders()); } diff --git a/quickjs/src/main/java/com/fongmi/quickjs/method/Global.java b/quickjs/src/main/java/com/fongmi/quickjs/method/Global.java index 76f610f9a..8badb734d 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/method/Global.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/method/Global.java @@ -37,18 +37,20 @@ public class Global { private final ExecutorService executor; private final QuickJSContext ctx; private final Parser parser; + private final boolean proxy; private final Timer timer; private final Gson gson; - public static Global create(QuickJSContext ctx, ExecutorService executor) { - return new Global(ctx, executor); + public static Global create(QuickJSContext ctx, ExecutorService executor, boolean proxy) { + return new Global(ctx, executor, proxy); } - private Global(QuickJSContext ctx, ExecutorService executor) { + private Global(QuickJSContext ctx, ExecutorService executor, boolean proxy) { this.parser = new Parser(); this.executor = executor; this.timer = new Timer(); this.gson = new Gson(); + this.proxy = proxy; this.ctx = ctx; } @@ -115,7 +117,7 @@ public class Global { JSFunction complete = options.getJSFunction("complete"); if (complete == null) return req(url, options); Req req = Req.objectFrom(ctx.stringify(options)); - Connect.to(url, req).enqueue(getCallback(complete, req)); + Connect.to(url, req, proxy).enqueue(getCallback(complete, req)); return null; } @@ -124,7 +126,7 @@ public class Global { public JSObject req(String url, JSObject options) { try { Req req = Req.objectFrom(ctx.stringify(options)); - Response res = Connect.to(url, req).execute(); + Response res = Connect.to(url, req, proxy).execute(); return Connect.success(ctx, req, res); } catch (Exception e) { return Connect.error(ctx); diff --git a/quickjs/src/main/java/com/fongmi/quickjs/utils/Connect.java b/quickjs/src/main/java/com/fongmi/quickjs/utils/Connect.java index 9bd14ef6f..2f21b94f6 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/utils/Connect.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/utils/Connect.java @@ -23,8 +23,8 @@ import okhttp3.Response; public class Connect { - public static Call to(String url, Req req) { - OkHttpClient client = req.getRedirect() == 1 ? OkHttp.client() : OkHttp.noRedirect(); + public static Call to(String url, Req req, boolean proxy) { + OkHttpClient client = OkHttp.client(proxy, req.isRedirect()); client = client.newBuilder().connectTimeout(req.getTimeout(), TimeUnit.MILLISECONDS).readTimeout(req.getTimeout(), TimeUnit.MILLISECONDS).writeTimeout(req.getTimeout(), TimeUnit.MILLISECONDS).build(); return client.newCall(getRequest(url, req, Headers.of(req.getHeader()))); }