【问题标题】:Java Applets and ProxiesJava 小程序和代理
【发布时间】:2014-12-28 18:36:50
【问题描述】:

假设我使用以下代码连接到 SOCKS5 代理,我实例化的小程序发送的连接或数据包会通过同一个代理吗?

System.getProperties().setProperty("socksProxySet", "true");
System.getProperties().setProperty("socksProxyHost", "*.*.*.*");
System.getProperties().setProperty("socksProxyPort", "*");

Applet 使用类加载器对象启动,从该类加载器对象中创建 newInstance。

classLoader = new CustomClassLoader(/* Hashmap of byte arrays */); // Custom classloader that works using byte arrays
Applet applet = (Applet) classLoader.loadClass("class").newInstance();
applet.setStub(stub);
applet.init();
applet.start();
frame.add(applet);

【问题讨论】:

  • 您打算如何实例化 Applet(您的类加载器 hack 是做什么的)?您在 Applet(?) 的哪个位置设置了上述 socksProxy 设置?最后,是否设置了可公开路由的 IP 地址?
  • 我在主类中设置设置,然后加载一个小程序。 hack 只是允许我使用字节数组而不是限制我。它正常加载类。
  • 重新开始;一个主类一个小程序?它们不是同义词。
  • 一个主类一个小程序。小程序是对象的形式。

标签: java networking proxy applet socks


【解决方案1】:

看来这个问题的答案是

以下代码:

public class TestApplet extends Applet {

    private String ip;

    public void init() {
        try {
            URL ipCheck = new URL("http://checkip.amazonaws.com");
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(ipCheck.openStream()));
            ip = bufferedReader.readLine();
            bufferedReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void stop() {
    }

    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(Color.CYAN);
        g.drawString("Current IP: " + ip, 10, 20);
    }

}

public class Boot {

    public static void main(String[] args) {
        System.getProperties().setProperty("socksProxySet", "true");
        System.getProperties().setProperty("socksProxyHost", "71.9.127.141"); //Credits to HideMyAss.com
        System.getProperties().setProperty("socksProxyPort", "28045");//Credits to HideMyAss.com

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(5000);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                TestApplet testApplet = new TestApplet();
                testApplet.init();
                JFrame jFrame = new JFrame();
                jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                jFrame.setSize(500, 500);
                jFrame.setContentPane(testApplet);
                jFrame.setVisible(true);
            }
        }).start();
    }

}    

输出:

【讨论】:

    【解决方案2】:

    泰勒,如果我正确理解了你的问题 - 是的。但这有一个警告:您设置的系统属性将仅在当前 JVM 实例化中持续存在。

    因此,如果您的示例显示您设置属性并在同一个 JVM 上执行 Applet,那么您应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多