通过代理访问因特网上的Web服务器

2016-02-20 01:00 10 1 收藏

今天图老师小编给大家展示的是通过代理访问因特网上的Web服务器,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

【 tulaoshi.com - Web开发 】

 

本技巧将向您讲述如何编写可通过代理访问因特网上的Web服务器的Java应用程序。在Java应用程序中加入代理支持只需额外编写几行代码,且不依赖任何安全性漏洞。

 

几乎所有的公司都十分关注保护自己的内部网络,以防黑客及入窃者。一种常见的安全措施是完全断开与因特网的连接。如果黑客们不能连接到您的任何一台机器,他们就不能非法进入您的系统。这种策略产生的不利副作用是,内部用户无法访问外部的因特网服务器,如Yahoo或JavaWorld。为了解决这一问题,网络管理员通常安装代理服务器。实际上,代理是安装于因特网和内部网之间的一种服务,用来管理这两个领域之间的连接。代理有助于减少安全性的外部威胁,同时还允许内部用户访问因特网服务。尽管Java使得编写因特网客户机不再困难,但是如果客户机不能通过代理,则它们毫无用处。幸运的是,Java使得使用代理支持不再困难--如果您知道密诀,这就是事实。

将Java和代理结合起来的秘诀即在Java运行时激活特定的系统属性。这些属性未被写入正式文件,只是作为Java传说的一部分在Java编程人员中秘传。为了支持代理,Java应用程序不仅需要指定代理本身的信息,而且需要指定用于认证的用户信息。在开始使用网际协议之前,您需要在程序中添加以下几行代码:

 

System.getProperties().put("proxySet","true");

System.getProperties().put("proxyHost","myProxyMachineName");

System.getProperties().put("proxyPort","85");

 

上面的第一行通知Java您要通过代理进行连接,第二行指定代理所在的机器,第三行指定代理监听的端口。有些代理在授权用户访问因特网之前,要求用户输入用户名和口令。如果您使用位于防火墙之内的Web浏览器,您就可能碰到过这种情况。以下是执行认证的方法:

 

URLConnectionconnection=url.openConnection();

Stringpassword="username:password";

StringencodedPassword=base64Encode(password);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

connection.setRequestProperty("Proxy-Authorization",encodedPassword);

 

这段代码的思想是,您必须调整HTTP标头以发出用户信息。这是通过调用setRequestProperty()来实现的。这种方法允许您在发出请求之前处理HTTP标头。HTTP要求用base64对用户名和口令进行编码。幸运的是,有一组公用域API,它们将代您执行编码(请参阅参考资源部分)。

 

如您所见,在Java应用程序中加入代理支持并不需要做多少工作。有了现在的知识,再做一点研究(您必须查明您的代理是如何处理您感兴趣的协议以及如何进行用户认证的),您就能用其他协议实现代理。

 

FTP代理

 

ScottD.Taylor提出这个秘诀来处理FTP协议代理:

 

defaultProperties.put("ftpProxySet","true");

defaultProperties.put("ftpProxyHost","proxy-host-name");

defaultProperties.put("ftpProxyPort","85");

 

接下来您便可以通过以下代码使用"ftp"协议访问文件URL:

 

URLurl=newURL("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt");

 

如果有人有使用其他网际协议代理的例子,我很想看看。

 

注意:代码示例(Example.java)仅在JDK1.1.4下测试过。

 

后续技巧!

 

对于仍在使用JDK1.1.7(配合WebSphere3.0)的开发人员而言,将proxyHost和proxyPort设为系统属性不起作用;conn.getInputStream()或者返回连接超时,或者是找不到主机路径。但是,我使用接受Host和Port为参数的URL构造函数解决了这一问题(使用我的代理主机和端口):

 

publicURL(Stringprotocol,Stringhost,intport,Stringfile).

 

借助用户名和口令进行认证的方法不起作用。应将"Basic"置于认证字符串的开头;例如:

 

StringencodedPassword=base64Encode(password);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

 

应该是:

 

StringencodedPassword="Basic"+base64Encode(password);

 

您也不必用一个单独的程序来进行64位编码。您可以使用sun.misc.BASE64Encoder()类。下面是完成这两处改动之后的代码:

 

 

System.getProperties().put("proxySet","true");System.getProperties().put("proxyHost",proxyHost);System.getProperties().put("proxyPort",proxyPort);StringauthString="userid:password";Stringauth="Basic"+newsun.misc.BASE64Encoder().encode(authString.getBytes());URLurl=newURL("http://java.sun.com/");URLConnectionconn=url.openConnection();conn.setRequestProperty("Proxy-Authorization",auth);

 

下面是使用socks4代理服务器的方法:

 

System.getProperty("socksProxySet",true);

System.getProperty("socksProxyHost",proxyHostName);

System.getProperty("socksProxyPort",proxyPort);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

UsuallytheproxyPortforSocks4isport1080

 

接下来您就可以用Socks4进行连接了。

来源:https://www.tulaoshi.com/n/20160220/1633032.html

延伸阅读
标签: 服务器
Apache Web服务器.htaccess文件配置 htAccess是Apache服务器的一个配置文件,具有强大的功能,本文介绍如何编辑该文件,让网站实现封锁某国家IP网段、防止图片、文件盗链、保护主机下的目录与文件、创建自定义的出错页面、把某些特殊的IP地址的请求重定向到别的站点、把老的域名转像新的域名,这些功能。 htAccess 文件(Hypertext Ac...
WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:连接,请求,应答。根据上述HTTP协议的作用原理,本文实现了GET请求的Web服务器程序的方法,通过创建TcpListener类对象,监听端口8080; 等待、接受客户机连接到端口8080...
SQUID和MYSQL的安装采用了SUN发布的二进制安装包,它在software_companion_x86 CD中可以找到;MYSQL_AUTH用GOOGLE搜索就可以找到。 一、安装配置SQUID+MYSQL 1.建立用户和组 # groupadd squid # useradd -g squid -d /dev/null -s /bin/false squid # groupadd mysql # useradd -g mysql -s /bin/false mysql 2. 安装MYSQL # mount...
上网了,不免会遭到种种攻击,有时还碰到一些网站无法访问,或者访问速度特别慢等现象,面对这些现象,代理服务器作为网络访问的纽带就应运而生了。通过使用代理服务器可以将我们的真实IP地址隐藏起来,而且在一定程度上还可以提高网络访问的范围和速度。代理服务器的存在一般是不公开的,可以从聊天室或BBS站点上获得,此外还可以借助专门...
  本文简要地介绍了如何通过常见的COM口进行Linux服务器的控制台的扩展,具有实用性和简易性,不受服务器网络等条件的限制,可以方便地管理实际生产环境中的Linux服务器。 说到管理Linux服务器,大家会有很多种不同的办法:键盘+显示器、通过网络登陆、基于WEB的工具、X系统下的图形工具等等,这些方法用在普通的服务器或者自...

经验教程

58

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部