有没有办法在未经验证的Android设备上创建SOCKS-5代理服务器?为什么需要root?我可以创建自己的Android应用程序,它将在我的设备上创建一个服务器,并在我的compluter上使用此服务器作为代理,所有这些都不需要设备根源吗?
更新:我开始使用this库来尝试创建代理服务器。我下载了所有文件,但只将主.jar文件添加到AndroidStudio中的项目依赖项中。我试图从服务中的runnable启动服务器。这是服务代码:
public class ProxyService extends Service
{
private static boolean running = false;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
ServerAuthenticatorNone auth = new ServerAuthenticatorNone();
ProxyServer server = new ProxyServer(auth);
Run(server); //runnable is needed because if I start service from
//this thread it throws a network on main thread exception
return START_STICKY;
}
private void Run(ProxyServer server) {
if (running)
return;
final ProxyServer serverFinal = server;
running = true;
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
Log.i("DEBUG", "tick " + running);
serverFinal.start(1080);
Log.i("DEBUG", "proxyServer started at port 1080");
running = true;
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
running = false;
}
}
}
}).start();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
当我在我的小米Redmi Note 2无根设备上运行此代码时,我得到以下日志:
07-26 16:48:18.097: I/DEBUG(19766): tick true
07-26 16:48:18.099: I/XiaomiFirewall(1211): firewall pkgName:com.socks.server, result:0
当我使用this网站检查代理时,我什么都没得到。
我想我应该以某种方式配置服务器,但它是使用.jar之外的外部.properties文件完成的,我不知道如何在AndroidStudio项目中链接它们。
我还怀疑即使这些操作也需要超级用户(root)来阻止小米防火墙拒绝我启动服务器。
有什么建议吗?