正在查看: Plus 12 v10.13.1.1 应用的 GoogleWebTranslator.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Plus 12 v10.13.1.1 应用的 GoogleWebTranslator.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.telegram.messenger.translator;
import android.os.Build;
import java.io.IOException;
import java.nio.charset.Charset;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import okhttp3.CipherSuite;
import okhttp3.ConnectionSpec;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.TlsVersion;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONTokener;
public class GoogleWebTranslator {
public static OkHttpClient HTTP_CLIENT;
public static OkHttpClient HTTP_CLIENT_OLD;
public static final String UA;
public static GoogleWebTranslator instance;
public static final String[] userAgents;
public String fromLang;
public final TrustManager[] trustAllCerts = {new X509TrustManager(this) {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}};
public static boolean lambda$getOkHttpClient$0(String str, SSLSession sSLSession) {
return true;
}
static {
String[] strArr = {"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36"};
userAgents = strArr;
double random = Math.random();
double length = strArr.length - 1;
Double.isNaN(length);
UA = strArr[(int) Math.round(random * length)];
}
public static GoogleWebTranslator getInstance() {
if (instance == null) {
synchronized (GoogleWebTranslator.class) {
if (instance == null) {
instance = new GoogleWebTranslator();
}
}
}
return instance;
}
public static String encodeURIComponent(String str) {
if (str == null) {
return null;
}
byte[] bytes = str.getBytes(Charset.defaultCharset());
StringBuilder sb = new StringBuilder(bytes.length);
for (byte b : bytes) {
if (b < 97 ? b < 65 ? b < 48 ? b == 45 || b == 46 : b <= 57 : b <= 90 || b == 95 : b <= 122 || b == 126) {
sb.append((char) b);
} else {
sb.append('%');
sb.append("0123456789ABCDEF".charAt((b >> 4) & 15));
sb.append("0123456789ABCDEF".charAt(b & 15));
}
}
return sb.toString();
}
public String translate(String query, String tl) throws IOException {
return translate(query, "auto", tl);
}
public String translate(String query, String sl, String tl) throws IOException {
String translateImpl = translateImpl(query, sl, tl);
if (translateImpl == null) {
translateImpl = translateImpl(query, sl, tl);
}
if (translateImpl != null) {
return translateImpl;
}
throw new IOException("Translation failed");
}
public OkHttpClient getOkHttpClient() throws IOException {
if (Build.VERSION.SDK_INT < 21) {
if (HTTP_CLIENT_OLD == null) {
ConnectionSpec.Builder tlsVersions = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS).tlsVersions(TlsVersion.TLS_1_0, TlsVersion.TLS_1_1, TlsVersion.TLS_1_2, TlsVersion.SSL_3_0);
CipherSuite cipherSuite = CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256;
ConnectionSpec build = tlsVersions.cipherSuites(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, cipherSuite, CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, cipherSuite).build();
try {
SSLContext sSLContext = SSLContext.getInstance("SSL");
sSLContext.init(null, this.trustAllCerts, new SecureRandom());
SSLSocketFactory socketFactory = sSLContext.getSocketFactory();
OkHttpClient.Builder builder = new OkHttpClient.Builder();
TimeUnit timeUnit = TimeUnit.SECONDS;
HTTP_CLIENT_OLD = builder.connectTimeout(6L, timeUnit).readTimeout(10L, timeUnit).writeTimeout(10L, timeUnit).connectionSpecs(Collections.singletonList(build)).sslSocketFactory(socketFactory, (X509TrustManager) this.trustAllCerts[0]).hostnameVerifier(new HostnameVerifier() {
@Override
public final boolean verify(String str, SSLSession sSLSession) {
boolean lambda$getOkHttpClient$0;
lambda$getOkHttpClient$0 = GoogleWebTranslator.lambda$getOkHttpClient$0(str, sSLSession);
return lambda$getOkHttpClient$0;
}
}).build();
} catch (IllegalStateException e) {
e.printStackTrace();
throw new IOException(e);
} catch (NoClassDefFoundError e2) {
e2.printStackTrace();
throw new IOException(e2);
} catch (KeyManagementException e3) {
e3.printStackTrace();
throw new IOException(e3);
} catch (NoSuchAlgorithmException e4) {
e4.printStackTrace();
throw new IOException(e4);
}
}
return HTTP_CLIENT_OLD;
}
if (HTTP_CLIENT == null) {
OkHttpClient.Builder builder2 = new OkHttpClient.Builder();
TimeUnit timeUnit2 = TimeUnit.SECONDS;
HTTP_CLIENT = builder2.connectTimeout(6L, timeUnit2).readTimeout(10L, timeUnit2).writeTimeout(10L, timeUnit2).build();
}
return HTTP_CLIENT;
}
public final String translateImpl(String query, String sl, String tl) throws IOException {
Response execute = getOkHttpClient().newCall(new Request.Builder().url("https://translate.google.com/translate_a/single?client=gtx&dt=t&sl=" + sl + "&tl=" + tl + "&q=" + encodeURIComponent(query)).addHeader("User-Agent", UA).addHeader("X-Requested-With", "XMLHttpRequest").build()).execute();
if (execute.isSuccessful()) {
try {
return getResult(execute.body().string());
} catch (JSONException e) {
throw new IOException(e);
}
}
if (execute.code() == 403) {
return null;
}
if (execute.code() == 413) {
throw new IOException("Text too Large");
}
throw new IOException("HTTP response code: " + execute.code());
}
public final String getResult(String string) throws JSONException {
try {
List asList = Arrays.asList(string.split(","));
if (!asList.isEmpty()) {
String str = (String) asList.get(asList.size() - 1);
String substring = str.substring(str.indexOf(34) + 1);
this.fromLang = substring.substring(0, substring.indexOf(34));
}
} catch (Exception e) {
this.fromLang = null;
e.printStackTrace();
}
StringBuilder sb = new StringBuilder();
JSONArray jSONArray = new JSONArray(new JSONTokener(string)).getJSONArray(0);
for (int i = 0; i < jSONArray.length(); i++) {
sb.append(jSONArray.getJSONArray(i).getString(0));
}
return sb.toString();
}
}