可以检测常见vpn,代理等
package com.example.myapplication; import android.content.Context; import android.net.ConnectivityManager; import android.net.ProxyInfo; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.io.IOException; import java.net.NetworkInterface; import java.net.Proxy; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import okhttp3.Call; import okhttp3.Callback; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class MainActivity extends AppCompatActivity { private Button buttonSendRequest; private TextView textResponse; private OkHttpClient client; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonSendRequest = findViewById(R.id.button_send_request); textResponse = findViewById(R.id.text_response); client = new OkHttpClient.Builder().proxy(Proxy.NO_PROXY).build(); buttonSendRequest.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { sendRequest(); } }); } /** * 综合检测,返回所有检测到的异常信息列表 */ private List<String> detectSecurityThreats() { List<String> threats = new ArrayList<>(); // 检测1:系统属性代理 String proxyHost = System.getProperty("http.proxyHost"); String proxyPort = System.getProperty("http.proxyPort"); if (proxyHost != null && !proxyHost.isEmpty()) { threats.add("[系统属性代理] " + proxyHost + ":" + proxyPort); Log.d("Security", "System property proxy: " + proxyHost + ":" + proxyPort); } // 检测2:ConnectivityManager代理 ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); if (cm != null) { ProxyInfo proxyInfo = cm.getDefaultProxy(); if (proxyInfo != null && proxyInfo.getHost() != null && !proxyInfo.getHost().isEmpty()) { threats.add("[WiFi代理] " + proxyInfo.getHost() + ":" + proxyInfo.getPort()); Log.d("Security", "ConnectivityManager proxy: " + proxyInfo.getHost() + ":" + proxyInfo.getPort()); } } // 检测3:VPN网络接口 try { Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); if (interfaces != null) { while (interfaces.hasMoreElements()) { NetworkInterface ni = interfaces.nextElement(); if (ni.isUp()) { String name = ni.getName(); if (name.contains("tun") || name.contains("ppp") || name.contains("pptp")) { threats.add("[VPN接口] " + name); Log.d("Security", "VPN interface detected: " + name); } } } } } catch (Exception e) { Log.e("Security", "Error checking VPN: " + e.getMessage()); } return threats; } private void sendRequest() { List<String> threats = detectSecurityThreats(); if (!threats.isEmpty()) { StringBuilder sb = new StringBuilder(); sb.append("检测到安全异常,请求已拦截!\n\n"); sb.append("共检测到 ").append(threats.size()).append(" 项异常:\n\n"); for (int i = 0; i < threats.size(); i++) { sb.append(i + 1).append(". ").append(threats.get(i)).append("\n"); } String message = sb.toString(); runOnUiThread(() -> textResponse.setText(message)); return; } String url = "http://192.168.50.234:5005/posts"; MediaType JSON = MediaType.get("application/json; charset=utf-8"); String json = "{\"title\":\"测试标题\",\"body\":\"测试内容\",\"userId\":1}"; RequestBody body = RequestBody.create(json, JSON); Request request = new Request.Builder() .url(url) .post(body) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { runOnUiThread(() -> textResponse.setText("请求失败: " + e.getMessage())); } @Override public void onResponse(Call call, Response response) throws IOException { final String responseBody = response.body().string(); runOnUiThread(() -> { if (response.isSuccessful()) { textResponse.setText(responseBody); } else { textResponse.setText("请求失败,状态码: " + response.code()); } }); } }); } }