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

原创 2007年10月11日 19:11:00
java sample codes that access outer internet through proxy which require username and password

use inner instead of extends is the most different

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

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

}


 

java实现穿透代理获取客户端真实ip .

经过代理或者代理服务器以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回 给客户端。但是在转发请求的HTTP头信息中,增加了X-...
  • liu22985342
  • liu22985342
  • 2014年02月17日 14:16
  • 1527

Java算法---密码验证合格程序

这是一道华为oj上的字符串题目,分享一下。 题目描述: 密码要求:1.长度超过8位              2.包括大小写字母.数字.其它符号,以上四种至少三种            3.不能有相同...
  • csdn_yaobo
  • csdn_yaobo
  • 2015年12月17日 10:12
  • 1886

使用JDBC连接MySQL数据库--典型案例分析(五)----用户名密码验证功能

前几次有网友转载我的博客也声称原创,我实在对这种人很无语耶,我转载其他人的博客从来都是很尊重的,该是转载的就写明了转载,虽然这里没有人去要求,但是这是对只是的一种尊重,对他人的尊重。人与人之间应如此,...
  • uniquewonderq
  • uniquewonderq
  • 2015年06月15日 19:57
  • 4733

httpclient4.X 设置代理请求(包含账号密码)

最近需要使用Httpclient做后台请求,使用的是httpclient4.3版本,apache网站上有,我这里就不提供下载链接了,搜一下就可以了,废话少说,直接上代码: Java代码   ...
  • z69183787
  • z69183787
  • 2016年10月25日 17:09
  • 3266

运维干货-ssh代理与内网穿透

运维时间 2017-05-28 12:25 ssh的代理,之前是通过haproxy实现 前提是:被控的ssh端具备公网地址和开放的端口(开放的端口上运行haproxy,将TCP从开放的端口...
  • u011277123
  • u011277123
  • 2017年05月31日 13:47
  • 754

密码验证,密码强度正则表达式

原文地址:http://blog.sina.com.cn/s/blog_46ee420b0100yi3g.html 注:还未验证- -,先记录下来 当用户登录网站时,一般要...
  • godwillcry
  • godwillcry
  • 2015年08月18日 17:20
  • 2475

JavaAop动态代理工具类

import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec...
  • u012643122
  • u012643122
  • 2015年03月12日 11:19
  • 536

用循环语句while或for循环编写一个验证登陆的小程序

要求:当用户名与密码全部正确时提示登陆成功,否则,提示登陆失败,三次验证失败退出系统。 while循环 代码如下:import java.util.Scanner; /** * */ /...
  • limin0017
  • limin0017
  • 2015年08月30日 15:18
  • 467

ngrok穿透内网(内网有代理的情况)

从早上到现在,找了很多工具,但均不支持代理,后询问了同事,配合Proxifier,问题就解决了 安装Proxifier,打开 点击配置文件—代理服务器,在里面填好代理服务器地址 点击配置文件—...
  • yeyang123
  • yeyang123
  • 2016年06月29日 16:26
  • 1641

[Python]代理抓取并验证-多线程

没有使用队列 ,也没有线程池 还在学习  只是多线程  #coding:utf8 import urllib2,sys,re import threading,os import time,date...
  • lzz957748332
  • lzz957748332
  • 2013年05月03日 15:51
  • 7161
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Java程序如何穿透带有密码验证的代理
举报原因:
原因补充:

(最多只允许输入30个字)