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

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();
    }

}



分享到:
评论

相关推荐

    c#调用java带身份验证webservice

    本主题将深入探讨如何使用C#来调用带有身份验证的Java Web服务。Web服务作为一种基于标准的通信方式,允许不同语言和平台之间的应用程序共享数据和功能。在这个案例中,我们将重点关注C#与Java之间的交互,特别是...

    java实现免费代理IP的获取方式 并实时校验代理IP是否有效

    Java 实现免费代理IP的获取方式 并动态实时校验是否有效,java文件项目内含有Jsoup的Jar包(Jsoup是加工过的,含请求),有2个主入口程序: 其一:用于请求代理IP,并立即校验是否是一个有效的代理IP,如果有效,...

    基于 Java Netty实现的可用于内网穿透的代理工具.zip

    基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于...

    HTTP代理服务器java

    HTTP代理服务器java 简单网站过滤

    使用google身份验证器实现动态密码验证java demo

    Google身份验证器是实现这种动态密码验证的一种工具,尤其在Java开发中被广泛应用。本篇将详细介绍如何使用Google身份验证器来实现动态密码验证的Java Demo。 1. **Google身份验证器简介** Google身份验证器是一个...

    javamvc实现登录验证注册验证的小程序

    javamvc实现登录验证注册验证的小程序

    java用户密码修改

    在Java编程环境中,用户密码修改是一项常见的功能,尤其是在开发Web应用程序时,如使用JSP(Java Server Pages)处理用户界面。本主题将深入探讨如何在Java中实现用户密码的修改,以及与MySQL数据库的交互。 首先,...

    Java程序设计习题集下载

    本习题集收集了Java程序编写常见问题,并以习题形式总结和归纳Java程序设计知识要点,同时兼顾了SCJP(Sun公司 Java程序员认证考试),从而降低学习难度,减少编写程序出现错误的枘地,也便于掌握各个知识要点或测试...

    Java解压带密码的RAR文件

    Java解压RAR文件,压缩包内包含源码、Jar包、依赖包和示例程序,也可以从http://code.google.com/p/java-unrar/downloads/list这里下载支持密码的unrar项目(包括源码和jar包),其依赖包也很容易搜到。

    java socket查询数据库实现登录验证

    在Java编程领域,Socket通信是一种基础且重要的网络编程技术,常用于实现客户端-服务器应用程序间的双向通信。在这个特定的场景中,我们利用Java Socket来实现一个登录验证系统,该系统会通过查询数据库来验证用户的...

    javad登录小程序

    综上所述,"javad登录小程序"涵盖了Java基础、密码安全、用户界面设计、数据库操作、输入验证、状态管理和错误处理等多个方面,是学习和实践Java Web开发的好例子。通过分析和重构这个小程序,开发者可以加深对Java...

    java给word文档插入水印并设置保护密码

    本文将详细介绍如何使用Java为Word文档插入水印以及设置保护密码,以确保文档的安全性。 首先,我们需要一个能够操作Microsoft Office文件的Java库,这里推荐使用JACOB库。JACOB(JavaCOM Bridge)是一个Java到COM...

    一些比较有意思的Java小程序

    "一些比较有意思的Java小程序"这个标题暗示了我们将会探讨一系列趣味性强、易于理解的Java代码示例,这些示例通常适合Java初学者用来学习和实践编程概念。 在描述中提到的“不错的Java小程序”可能包括各种实用的小...

    Java B/S 抽奖程序

    Java B/S 抽奖程序是一种基于Java技术构建的Web应用程序,专用于实现在线抽奖功能。在B/S(Browser/Server)架构下,用户通过浏览器即可参与抽奖活动,无需安装任何客户端软件,使得部署和使用变得极其便捷。这个...

    ATM柜员机模拟程序 Java程序 论文附有完整代码

    程序首先验证旧密码是否正确,然后检查新密码是否满足规则(长度不少于6位、不允许全部字符相同),最后更新密码。 #### 五、程序测试与调试 - **单元测试**:对每个功能模块进行了单元测试,确保每个部分都能独立...

    java数字签名源程序

    Java数字签名源程序是用于实现数据完整性、身份验证和非否认性的关键技术,它在网络安全中扮演着重要角色。本程序是使用JAVA编程语言编写的,遵循了计算机科学中关于密码学的基本原理。数字签名通常与公钥基础设施...

    Java 使用poi导入excel 并使用xml做数据验证

    导入数据库通常涉及JDBC(Java Database Connectivity),需要建立数据库连接,编写SQL语句,使用`PreparedStatement`来执行带有参数的插入操作,并确保事务的正确管理,以保证数据的一致性。如果所有数据都成功导入...

    JAVA程序与PLC之间的通信

    在现代工业自动化领域,Java程序与PLC(可编程逻辑控制器)之间的通信是实现设备控制、数据采集和系统集成的关键技术。本资料包提供了一种详细的说明,旨在帮助你理解和实施这种通信方式。 首先,我们要了解Java...

    java源码包---java 源码 大量 实例

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    JSP登陆验证 实现JSP用户名 密码 验证码验证登陆

    在这个案例中,我们有login.jsp、loginresult.jsp这样的JSP文件,它们可能包含表单元素(如用户名和密码输入框)以及用于处理用户提交的Servlet。 2. **Servlet**: Servlet是Java EE中的核心组件,用于处理HTTP...

Global site tag (gtag.js) - Google Analytics