`
chimae
  • 浏览: 24499 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

java程序如何穿透带有密码验证的代理

阅读更多
网上也有一些文章但是大多数涉及带有授权验证的proxy都有问题,
主要问题就是出在对 Authenticator.setDefault的使用,以及base64编码的问题上
代码是最没有二义性的文档,实现原理不再解释,请看代码去体会。
如果转载请注明代码出处。

Java  sample codes  that access outer internet through proxy which require username and password .Use inner instead of extends is the most different
chimae@cnjsp.org


package org.chimae.net;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.PasswordAuthentication;
import java.net.URL;

/**
 * @author chimae@cnjsp.org
 */
public class ProxyConnTest {
    
    public static void initProxy(String host, int port, final String username,
            final String password) {
        Authenticator.setDefault(new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username,
                        new String(password).toCharArray());
            }
        });

    
        System.setProperty("http.proxyType", "4");
        System.setProperty("http.proxyPort", Integer.toString(port));
        System.setProperty("http.proxyHost", host);
        System.setProperty("http.proxySet", "true");
    }
    
    
    public static void main(String[] args) throws IOException {
        String url = "http://java.sun.com/";
        String proxy = "yourProxy";
        int port =8080;
        String username ="username";
        String password ="password";
        String curLine = "";
        String content = "";        
        URL server = new URL(url);
        initProxy(proxy,port,username,password);
        HttpURLConnection connection = (HttpURLConnection)server.openConnection();
        connection.connect();
        InputStream is = connection.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        while ((curLine = reader.readLine()) != null) {
                content += curLine;
            }

        System.out.println("content= " + content);
        is.close();
    }

}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics