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 1e5261d32..ff10e20fe 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -132,7 +132,7 @@ public class OkHttp { } private static OkHttpClient.Builder getBuilder() { - OkHttpClient.Builder builder = new OkHttpClient.Builder().addInterceptor(new DefaultInterceptor()).connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS).readTimeout(TIMEOUT, TimeUnit.MILLISECONDS).writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); + OkHttpClient.Builder builder = new OkHttpClient.Builder().addNetworkInterceptor(new DefaultInterceptor()).connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS).readTimeout(TIMEOUT, TimeUnit.MILLISECONDS).writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); builder.proxySelector(get().proxy ? selector() : defaultSelector); return builder; } diff --git a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java index 9279ecfac..4aeeb4db6 100644 --- a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java +++ b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java @@ -27,6 +27,7 @@ public class DefaultInterceptor implements Interceptor { public Response intercept(@NonNull Chain chain) throws IOException { Response response = chain.proceed(getRequest(chain.request())); String encoding = response.header(HttpHeaders.CONTENT_ENCODING); + if (response.isRedirect() && response.header(HttpHeaders.LOCATION) != null) checkAuth(response); if (response.body() == null || encoding == null || !encoding.equals("deflate")) return response; InflaterInputStream is = new InflaterInputStream(response.body().byteStream(), new Inflater(true)); return response.newBuilder().headers(response.headers()).body(new ResponseBody() { @@ -49,7 +50,7 @@ public class DefaultInterceptor implements Interceptor { }).build(); } - private Request getRequest(@NonNull Request request) { + private Request getRequest(Request request) { URI uri = request.url().uri(); String url = request.url().toString(); Request.Builder builder = request.newBuilder(); @@ -59,4 +60,9 @@ public class DefaultInterceptor implements Interceptor { if (uri.getUserInfo() != null) builder.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); return builder.build(); } + + private void checkAuth(Response response) { + URI uri = URI.create(response.header(HttpHeaders.LOCATION)); + if (uri.getUserInfo() != null) response.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); + } }