求助!!java编写代理服务器加cookie插入功能!!!
代理可以使用Proxy类。
加入cookie使用如下:
HttpURLConnection的setRequestProperty("cookie","user=xxx");
setDoOutput(true);//这个应该是DoInput还是DoOutput啊,忘记了
connect();
这个是 apache httpclient 的代码
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvidersetCredentials(
new AuthScope("localhost", 8080),
new UsernamePasswordCredentials("username", "password"));
CloseableHttpClient httpclient = HttpClientscustom()
setDefaultCredentialsProvider(credsProvider)build();
try {
HttpHost target = new HttpHost("wwwverisigncom", 443, "https");
HttpHost proxy = new HttpHost("localhost", 8080);
RequestConfig config = RequestConfigcustom()
setProxy(proxy)
build();
HttpGet httpget = new HttpGet("/");
httpgetsetConfig(config);
Systemoutprintln("Executing request " + httpgetgetRequestLine() + " to " + target + " via " + proxy);
CloseableHttpResponse response = httpclientexecute(target, httpget);
try {
Systemoutprintln("----------------------------------------");
Systemoutprintln(responsegetStatusLine());
EntityUtilsconsume(responsegetEntity());
} finally {
responseclose();
}
} finally {
httpclientclose();
}
因为 baidu 不给发链接,你去 apache httpcomponents 的网站,找 httpclient ,example 里面都有的
在Java中,要实现热部署,首先,你得明白,Java中类的加载方式。每一个应用程序的类都会被ClassLoader加载,所以,要实现一个支持热部署的应用,我们可以对每一个用户自定义的应用程序使用一个单独的ClassLoader进行加载。然后,当某个用户自定义的应用程序发生变化的时候,我们首先销毁原来的应用,然后使用一个新的ClassLoader来加载改变之后的应用。而所有其他的应用程序不会受到一点干扰。
import javanetAuthenticator;
import javanetPasswordAuthentication;
import javautilProperties;
public class ProxyDemo1 {
public static void main(String[] args) {
Properties prop = SystemgetProperties();
// 设置http访问要使用的代理服务器的地址
propsetProperty("httpproxyHost", "183457831");
// 设置http访问要使用的代理服务器的端口
propsetProperty("httpproxyPort", "8080");
// 设置不需要通过代理服务器访问的主机,可以使用通配符,多个地址用|分隔
propsetProperty("httpnonProxyHosts", "localhost|1921680");
// 设置安全访问使用的代理服务器地址与端口
// 它没有httpsnonProxyHosts属性,它按照httpnonProxyHosts 中设置的规则访问
propsetProperty("httpsproxyHost", "183457831");
propsetProperty("httpsproxyPort", "443");
// 使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
propsetProperty("ftpproxyHost", "183457831");
propsetProperty("ftpproxyPort", "21");
propsetProperty("ftpnonProxyHosts", "localhost|1921680");
// socks代理服务器的地址与端口
propsetProperty("socksProxyHost", "183457831");
propsetProperty("socksProxyPort", "1080");
// 设置登陆到代理服务器的用户名和密码
AuthenticatorsetDefault(new MyAuthenticator("userName", "Password"));
}
static class MyAuthenticator extends Authenticator {
private String user = "";
private String password = "";
public MyAuthenticator(String user, String password) {
thisuser = user;
thispassword = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, passwordtoCharArray());
}
}
}
PuTTY是一个直接可以运行的软件。非常的小巧,但是也非常的强大,和小编常用的xshell都是非常的强大,这个根据自己的喜好来选择自己喜欢的ssh登陆管理软件。
下面是小编在阿里云官方帮助中心找到的一个利用putty登陆的视频教程,非常适合新手。
<embed width="510" type="application/x-shockwave-flash" src="http://cloudvideotaobaocom/video/play/sid/10243740/uid/c3Vubnlfbmljb2xlODI%3D/v/2001/f/videoswf" quality="high" height="498" allowscriptaccess="never" allowfullscreen="true" align="middle"
下载
官方下载地址:http://wwwputtyorg/
安装
本软件可以直接双击使用。
使用方法
下面是小编在百度文库找到的一篇非常详细的putty的使用教程,非常详细但原作者不详。
第一印象,开始登录一台远程主机
运行PuTTY就可以看到下面这个界面
在这里输入服务器的IP或主机名,选择好登录协议,还有协议的端口,如果希望把这次的输入保存起来,以后就不需要再重新输入了,就在第4步输入好会话保存的名称,比如:mail-server,或者干脆就是主机的地址,点击保存就可以了。
最后点下面的Open按钮,输入正确的用户名和口令,就可以登录服务器了。
首次登录一台主机时
第一次登录时,会看到这个对话框
这是要告诉你登录的主机密钥指纹,点Yes就保存起来,以后就不会再弹出这个窗口,然后就正常登录。点No不保存,下次还是要提示你,然后也可以正常登录。如果一台主机我们只是临时登录一下,当然就是点No了。Cancel就是取消,也就是取消了这次登录。
如果你曾经登录过这台主机,但是又弹出来这个对话框,可能有以下几种情形:
主机重新安装了操作系统
这台主机可能有多个IP,这次用的是另外一个IP
有其他不怀好意的主机来冒充,诱骗我们登录,窃取隐秘信息
前两个情形很常见,一般点Yes就行了。后面这个嘛唔唔,点No/Cancel,再去询问相关的主机管理人员。
又看到了中文乱码
成功登录主机后,输入命令,这这显示,又是乱码。唉,中文乱码是一个老生常谈的问题,提起来就头大。原因嘛,不外乎字符集、终端编码之类的,还是可以解决的。
PuTTY的默认字体和字符集并不适合中文显示,在窗口标题上点击右键,选择ChangeSettings
在打开的配置窗口左边选择Appearance,在右边点Fontsettings里面的
Change按钮,选择好中文字体,比如:宋体、新宋体之类的
字体选择好了,还要确定字符集。
选择配置窗口左边的Translation,在右边的Receiveddataassumedtobeinwhichcharacterset下拉列表中选择最后一个Usefontencoding,最后点下面的Apply按钮就生效了。
重新执行命令ls-l,就可以正常看到中文了
怎么还是乱码?
如果还是乱码的话,就执行以下命令,看看系统的字符集
echo$LANG$LANGUAGE
哦,原来系统的字符集是UTF-8呀。重新返回上面选择字符集的那一步,选择配置窗口左边的Translation,在右边的Receiveddataassumedtobeinwhichcharacterset下拉列表中选择UTF-8
这下99%的情形下,汉字是不会有乱码了。最后,总之一下PuTTY中乱码的解决办法:
先看看系统的字符集,如果是UTF-8的,那就简单了,选择好中文字体,然后编码选择UTF-8就行了。
如果编码是GB2312、GBK、GB18030,当然也包括BIG5这些,在PuTTY的编码选择中看不到这些编码,那就选择最后一个Usefontencoding,绝大部分情况下这样就没啥问题了,反正我是没碰到有什么例外的情况。
现在的Linux如果默认语言选择为中文,默认的编码就是UTF-8了。以前安装RedhatAS3时,语言选择为中文,默认的编码是zh_CNgb2312,zh_CNgb18030,好像从AS3update6开始,包括现在的AS4、AS5,中文的默认编码都成了zh_CNutf8。至于Debian、Ubuntu等等这些上面,好像一直都是UTF-8。
至于是使用UTF-8呢,还是用GB2312、GBK或者GB18030呢?我个人还是倾向于UTF-8。毕竟我们使用的大多数软件都是国外的,处理中文编码多多少少有些问题,PuTTY自然也不例外。
下面的这个图上,我把终端编码修改为zh_CNutf8,然后也按照前面的所说的方法把PuTTY的字符集修改为UTF-8。然后在终端中输入汉字柴锋,按左方向键,可以看到汉字显示很正常。
我重新把终端的编码修改为zh_CNgb2312,同样的,把PuTTY的字符集修改为最后一个Usefontencoding。还是在终端上输入汉字柴锋,按下左方向键以后,会看到汉字乱码了。
至于用哪个编码,主要还是看领导的决定了,我们的领导就喜欢GBK,连GB18030都不行。以前在用Debian的时候,好像默认都不支持GBK编码。这几年公司的开发在汉字编码问题上出过几次麻烦,还不就是在ISO8859-1,GB2312/GBK/GB18030和UTF-8上折腾来折腾去。
给大家看一张emacs的截图,看看上面的这么多语言的文字共同显示,这个会是用GB2312/GBK/GB18030的编码么?
用UTF-8也不是为了要在一个屏幕上显示好几种不认识的文字,也不一定非要是跟国际接轨弄个外包给老外开发程序做个其他语言的界面让老外用,起码不要在那么多编码里折腾了,顶多两个ISO8859-1和UTF-8。发发牢骚,下面继续
在PuTTY里面怎样选中,复制和粘贴?
在PuTTY的窗口里面复制、粘贴可不能用Windows里的这些Ctrl+C,Ctrl+Ins,Ctrl+V这些快捷键,Ctrl+C在控制台上可是终止当前的命令执行。
PuTTY的选择、复制、粘贴这些操作都是通过鼠标来完成的。
在Window-〉Selection这里可以设置复制和粘贴的方式。
默认的Actionofmousebuttons(鼠标按键的功能)的选项是Compromise,这种方式下选中有两种方式,一是直接用鼠标左键拖拉选中就可以了,二是用鼠标中键单击选中区域的开头,用滚动条拖拉到期望选中区域的末尾,再用鼠标中键单击,就可以选中了。
选中以后,单击鼠标左键就把选中部分复制到剪贴板了。粘贴也很简单,单击鼠标右键。
Actionofmousebuttons的第一个选项是Windows(Windows方式的),鼠标中键的操作跟前面提到的一样。右键不是粘贴了,而是打开了右键菜单。
其实这个右键菜单在标题栏上点击,也都可以看得到。
第三个选项是xterm(xterm方式),这个跟默认的Compromise方式相反的,中键和右键的操作调换了一下,就不多说了。
下面那个Shiftoverridesapplication'suseofmouse是和Shift键有关的。有些RogueLike的程序,比如mc、links、Lynx、VIM等等,都支持鼠标操作,想在用鼠标在上面选择或粘贴就不行了。这个选项默认是选中的,在支持鼠标操作的RogueLike界面下,按住Shift键,就可以像前面的那样用鼠标来选择、复制、粘贴了。
看下面的这个,用Links打开了Google的首页,用鼠标去选中顶部中间的Google,我们会发现,弹出了保存的对话框。
按住Shift键重新操作一次,哈哈,这次选中了。
在Controluseofmouse里面还有个Defaultselectionmode(默认的选择模式),默认是Normal,就像文字处理工具里这样的选择
另外一个是Rectangularblock(块选择方式),至于用哪种方式就看自己的选择了。
实时保存会话
这次更改配置参数了,关闭窗口后,下次使用还是要重新选择的,麻烦。
还是回到上面修改配置的哪个地方,选择左边的Session,在右边选择要覆盖的会话名称,或者重新输入一个新的名称,点击Save按钮保存。
关于注销登录的一些事情
成功登录主机后,也能正常看到中文了。这样,我们就可以完成大部分的工作。最后要关闭窗口了,该怎么办呢?我见过很多人,包括我们公司负责专职维护的同事,都是直接点击窗口上的关闭按钮,完全没有理会弹出警告窗口,直接点击了Yes。
这样做是不对的,首先这不是正确的注销方式,应该输入命令exit来正常注销;其次直接关闭窗口后,你的登录其实还在服务器上,如果一连多次的这样强制关闭窗口,用命令w或者who命令查看时,可以看到很多的用户还在系统上登录,占用了系统的资源。最重要的是,你的这次登录可能只是为了启动一下WebLogic或者其他什么应用服务器,直接关闭窗口后,可能会导致你的业务在随后的几分钟内也被终止,这应该不是你所希望看到的吧。
如果上述的理由是每次要输入exit然后回车,比较麻烦。你可以用快捷键Ctrl+d来注销登录,一般情况下,快捷键一按窗口都直接关闭了,还省了两次鼠标点击。
在前面说道保存会话时,大家或许也注意到,下面有个Closewindowonexit有三个选项:
Always(不管怎样,窗口总是要关闭的)
Never(无论是否有程序还在运行,都不要关闭窗口)
Onlyonclearexit(这个是默认选中的,只有在本次登录中运行的程序都正常终止或者在后台运行,窗口才关闭)
有的程序在执行时,虽然在命令最后面加上就能放到后台运行。但是正常注销登录后,窗口没有被自动关闭,还能看到程序的输出,这时强制关闭窗口还是可以的。为了避免这种情形,可以使用nohup命令。
用法嘛就是:nohup命令命令参数,这样就可以了。
窗口保存的输出有点少,前面的都看不到了
执行了一个命令,输出了好多东西,但是默认的配置下,PuTTY只保存了最后200行的内容,满足不了我们的需求。
还是在标题栏上点右键选择Changesettings,在配置窗口的左边选择Window,修改右边的Linesofscrollback,改大点,比如20000、80000的
在上面的Setthesizeofthewindow里设置的是窗口显示的行数和列数,默认是24行、80列,根据自己的需要来修改吧。
Whenwindowisresized这个选项配置的是,当窗口大小发生改变时该采取什么动作。
Changethenumberofrowsandcolumns(这个是默认的,改变窗口大小时,自动修改行数和列数)
Changethesizeofthefont(这个是根据窗口的大小来修改字体的大小,窗口最大化的时候,字都是很大的)
Changefontsizeonlywhenmaximised(只有在窗口最大化的时候才改变字体大小)
Forbidresizingcompletely(完全禁止改变窗口大小,一了百了)
在现代的Unix/Linux主机上,默认选项已经不存在任何问题了。如果是Solaris8这样的老式Unix上最好用第2或第4个选项。
第3个选项嘛,要求你的屏幕不是宽屏的,选中这个选项以后,大家可以先把窗口往窄的缩一下,然后最大化窗口,哈哈,满足一下不是宽屏的虚荣心。
顺便说一下,在PuTTY中的前后翻页,与Linux终端一样,用Shift+PageUp/PageDown来上下翻页,而Ctrl+PageUp/PageDown则是一行一行的。
新建一个会话时,还有些东西再啰嗦一下
前面把如何用PuTTY登录一台主机到注销的过程聊了一遍,但是在新建会话时还是有些东西需要再啰嗦一下的。
保持连接,不要自动断开
在Connection里面有个Secondsbetweenkeepaliaves,这里就是每间隔指定的秒数,就给服务器发送一个空的数据包,来保持连接。以免登录的主机那边在长时间没接到数据后,会自动断开SSH的连接。
默认输入0是禁用保持连接,在这里我习惯的设置了10。
下面的那两个复选框都保持默认选中吧。
自动登录用户
在Connection-〉Data里面有个Auto-loginusername,可以指定默认的登录用户。如果每次登录主机都是用同一个用户,不妨在这里设置一下。SSH、Telnet、Rlogin这三种协议都支持,但不是所有的Telnet服务器支持自动登录用户
自动设置环境变量
还是前面的那个界面,下面有个Environmentvariables,在Variable输入环境变量的名称,Value里设置上环境变量的值,登录主机后就会自动设置上,但是这个不一定能用,有些主机为了安全,可能会禁用这个特性,一旦登录就会收到这样一个错误提示:
Serverrefusedtosetenvironmentvariables
设置代理服务器
这个经常用到,设置方法大同小异,注意选择好Proxytype(代理服务器的类型)就可以了。
代理服务器的地址填写到Proxyhostname这里,Port就是代理服务的端口(HTTP代理常用端口有3128、8080,Socks5代理常用端口有1080)
ExcludeHosts/IPs这里是填写排除的主机地址和IP,有些地址不需要代理,就在这里填写。
有些代理需要认证,用户名填写到Username,密码则填写到下面的Password。
自动执行一个命令
在Connection-〉SSH里有个Remotecommand,在这里面填写上远程服务器上的某个命令,比如:df,登录后就会自动执行。
我们在Unix上用ssh登录主机时用的命令ssh,在ssh的最后面加上远程主机上的命令,就跟这个一样。
但是,先别着急,一旦设置上这个选项,你会发现在登录成功后,窗口一下就关闭了,嘿,怎么啦?什么也没看见。
因为命令执行完毕的同时,本次SSH登录连接也随之关闭。
你可以把远程自动执行的命令修改成sleep10,然后重新登录,再看看效果。
登录成功后,没有出现命令提示符,10秒钟后,窗口自动关闭。这也验证了刚才我说的,命令执行完毕后,SSH连接自动断开。
冰雪聪明的你一定会想到,如果每次登录主机,都是要重新启动一下tomcat,那这里就可以填写上这样的命令:
exportCATALINA_HOME=~/apache-tomcat-5517;exportJAVA_HOME=~/jdk150_07;exportPATH=$JAVA_HOME/bin;$PATH;cd$CATALINA_HOME/bin;/shutdownsh;/startupsh;tail-f$CATALINA_HOME/logs/catalinaout
(上面的命令是一行的哦)
先自动设置一下环境变量(前面有提到,服务器可能会禁用自动设置环境变量,为了保险起见,在这里设置了一下),然后进入tomcat的bin目录,用shutdownsh停止tomcat,然后再startupsh启动tomcat,最后tail命令持续观察tomcat的日志输出,不想看了,就直接Ctrl+C就可以终止SSH的会话了。
哈哈,是不是很方便?
不过前面提到的命令sleep10,只是建立了SSH连接,然后10秒钟后自动断开。是不是觉得很无聊没什么用途啊?其实这个命令配合后面提到的Tunnels(隧道),可以自动保持隧道一定时间的开放,如果指定时间内(在这里就是10秒钟)隧道没有被使用,就自动关闭SSH连接和隧道。
如果选中了Don'tstartashellorcommandatall就禁用了自动执行命令这一个特性,这个主要是配合Tunnels(隧道)来使用的。因为有时候,我们只需要利用隧道建立一个***,而并不需要登录上去执行命令。用这个方法建立好隧道以后,就一直开放了,除非自己手工关闭。
嗯,还有个问题哦,如果一次要执行的命令很多,该怎么办呢?嗯,给PuTTY用-m选项指定一个包含远程主机上执行的命令的文本文件。不过以后还会说到Plink,就是专门做这个用的,慢慢来慢慢来。
数据自动压缩传输,变相的提高传输速率
还是前面的那个界面,Protocoloptions里面有个Enablecompression,这个选项的意思就是传输时压缩数据,在连接速度不变的情况下,变相的提高了传输速率。一般的SSH服务器都会允许这个选项的,所以还是选中好了。
无需口令登录
在Connection-〉SSH-〉Auth这里面有两个需要了解的,以后在讲到PuTTYGEN和Pagent时会详细介绍的。
一个是Allowagentforwarding,作用是允许私钥代理的转发。
另外一个是最下面的Privatekeyfileforauthentication,选择私钥认证文件。
这两个可以让你用SSH登录不用输入主机口令,但是私钥的口令还是需要输入的,如果使用了私钥代理Pagent,私钥口令也可以省略。再配合前面提到的自动指定用户名登录,可以实现自动登录主机。登录到主机上以后,用SSH登录另外一个同样配置了相同的私钥认证的主机,也可以不用再次输入口令。
这些可以大大减轻了我们的重复工作,不用单调枯燥的输入用户名和口令,但是这样使用有个后遗症就是如果主机密码没有在另外一个地方记录下来的话,这个密码很快会忘记的,好处嘛,密码可以设置的很长很变态XD。
一般只用到登陆功能,其他功能小编也不常用。以上就是全部的putty下载安装使用方法了。
原因
出现此错误消息的原因可能有以下两个:
目前,联机安装程序不支持身份验证代理。如果您位于身份验证代理服务器之后,则会收到此错误消息。
如果您需要一台代理服务器,但未在浏览器中指定代理服务器信息,将出现此错误。
解决方案
可用两种方法解决这一问题。
可使用 Windows 脱机安装。
在浏览器中指定代理服务器信息。
Windows 脱机安装
脱机安装程序中包含安装所需的所有文件。
请转至手动下载,然后单击“Windows 脱机安装”以下载文件。
出现系统提示时,请在下载对话框中选择“保存”,将下载软件包保存到一个方便的位置(例如,保存到桌面上)。
双击下载的安装文件,启动安装过程。
指定代理服务器信息
在“开始”菜单中单击“设置 > 控制面板”
在“控制面板”中,双击“Internet 选项”控制面板
单击“局域网设置”按钮
在“代理服务器”部分中,选中“为 LAN 使用代理服务器”
在“地址”字段中输入代理服务器的名称,并在“端口”字段中输入端口号。
单击“确定”接受更改。
原文地址:http://wwwjavacom/zh_CN/download/help/connect_proxyxml
0条评论