导航:首页 > IDC知识 > java设置服务器代理

java设置服务器代理

发布时间:2021-01-18 12:50:43

1、局域网访问外网服务器的代理java web系统怎么实现?

问题简化起来就是A->B->C的关系,即B(可以上外网的机器)作为代理层来转发局域网内回的外网请求答。


举个栗子,百度地图。

在B上封装下百度地图API,然后向局域网内发布,这样A之类的内网机器就可以通过B访问百度地图了。

class B {
  public static whatever getMap() {
    return BadiuApi.getMap();
  }
}

当然,具体问题具体分析,其他需求上的实现可能稍有不同,但思路就是这样。

2、怎么用java实现一个代理服务器,需要支持htt

怎么用java实现一个代理服务器,需要支持htt
代理服务器的应用非常广泛。比如,在企业网内部,它可以用来控制员工在工作时浏览的Internet内容,阻止员工访问某些类型的内容或某些指定的网站。代理服务器实际上扮演着浏览器和Web服务器之间的中间人的角色,能够对浏览器请求进行各种各样的处理,能够过滤广告和Cookie,能够预先提取Web页面,使得浏览器访问页面的速度更快,等等。

3、想用java编写个代理服务器,求具体一些思路,详细一些,谢谢

在编写代理服务器之前,首先应该明白一点,Java的代理机制,如图所示:

那么Java就处于中间这层代理服务器,代理服务器所作的事情如下:
       1、接收客户端请求,进行处理,然后发送给服务端
       2、接收服务端响应,进行处理,然后发送给客户端
       这样,就更清晰了,Java提供了代理的API为,java.net.Proxy类。此类表示代理设置,通常为类型(http、socks)和套接字地址。Proxy 是不可变对象。
 
       也就是说Java可以制作高级协议的代理,如 HTTP 或 FTP。也可以制作SOCKS(V4 或 V5)代理。
       首先,使用到了URL类,HttpURLConnection类及其我们的代理类Proxy类。他们都位于java.net包中。

第一步:生成代理,指定端口为8888:

第二步:使用URLConnection类进行连接www.moonsos.com

第三步:打开URL,并且读取HTML源码

4、怎么能知道JAVA的代理服务器设置、端口号码、设置类类型?我的都弄没有了!

Java中,使用proxy是通过设置环境变量来实现的,也就是JVM的系统属性。

我们需要设置三个属性,proxySet proxyHost和proxyPort。
proxySet 是个boolean类型的,可以设置为true或者false,true代表使用代理服务器。
proxyHost 是代理服务器的IP地址
proxyPort 是代理服务器的端口地址。

我们有两种方法设置这种系统属性,
一种是命令行下运行Java程序的时候,通过参数付值
一种是在java源程序中设置。

第一种方法的格式如下:
java -DproxySet=true -DproxyHost=myProxyServer.come -DproxyPort=80 MyJavaApp

第二种方法,就是直接在源程序中通过系统属性来写,如下:
import java.util.Properties;
...
...

strProxy="221.15.5.67";
strPort="8080";

Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",strProxy);
systemProperties.setProperty("http.proxyPort",strPort);
....

JDK1.3以上版本,只要设置了proxyHost和proxyPort就不用写proxySet了。

那么反过来,显示这些系统属性,就可以看到有没有使用代理了。

5、怎样通过java使用socks代理访问服务器

开发socks5代理服务器_IT/计算机_专业资料。摘要:用Java语言成功开发了一个...支持常见的HTTP代理和Sock4、Sock5代理,可以以用于局域网中,socket代理来连接到外网, 这里是java使用代理连接到...// 设置不需要通过代理服务器访问的主机,可以使用*...prop.setProperty("socksProxyHost",

6、有谁成功配置java mail 代理服务器设置的吗

楼主,时隔3年后,我遇到了和你一样的问题,现在的代码连接4g是可以发送的,但是一旦连接公司的内网,(需要配置IE代理),就连不上了,后来如何解决的?能说一下吗

7、我用java的socket机制编了一个代理服务器,客户端已经与代理建立了连接,如何让代理与web服务器连接?

代理服务器解析客户端传入的数据,得到服务器ip和端口,然后创建与服务器的连接。解析代码如下:(这里只处理了socket v5的情况,Config的常量对应java.net.SocksConsts)

try {
// socket v5
// 4byte(5 2 0 2) @see java.net.SocksSocketImpl
int len = dis.read(buffer);
// reply client
dos.write(new byte[]{Config.PROTO_VERS, Config.NO_AUTH});
dos.flush();

// read
// PROTO_VERS(1byte)
// CONNECT(1byte)
// 0(1byte)
// DOMAIN_NAME/IPV4/IPV6(1byte)   DOMAIN_NAME(not consider now)
// addr(IPV4:4byte/IPV6:16byte)
// port>>8&0xff(1byte)
// port&0xff(1byte)
len = dis.read(buffer);
byte addrType = buffer[3];
byte[] applyData = null;

String serverIp = null;
int serverPort = 0;
if (addrType == Config.IPV4) {
serverIp = Util.bytes2ipv4(buffer, 4, 4);
serverPort = buffer[8] << 8 | buffer[9];
// set reply data
applyData = new byte[10];
applyData[1] = Config.REQUEST_OK;
applyData[3] = Config.IPV4;
for (int i = 4; i < 10; i++) {
// fill ip, port
applyData[i] = buffer[i];
}
} else if (addrType == Config.IPV6) {
serverIp = Util.bytes2ipv6(buffer, 4, 16);
serverPort = buffer[20] << 8 | buffer[21];
// set reply data
applyData = new byte[6];
applyData[1] = Config.REQUEST_OK;
applyData[3] = Config.IPV6;
applyData[4] = buffer[20];
applyData[5] = buffer[21];
}
// reply
dos.write(applyData);
dos.flush();

// connect the server
// serverIp是服务器ip,serverPort是服务器端口,用这两个
// 创建与服务器的socket连接
Socket socket = new Socket(serverIp, serverPort);
// 之后处理客户端与服务器的数据交互就用这个socket转发就行了

// finally success!!!
} catch (Exception e) {
    e.printStackTrace();
}

8、JAVA中如何设置代理服务器,取消代理服务器

在JAVA中怎么设置代理服务器呢,非常简单
public void setServiceProxy(Config config) {
    this.config = config;
    System.setProperty("http.proxyHost", config.getProxyHost());
    System.setProperty("http.proxyPort", config.getProxyPort());
    System.setProperty("https.proxyHost", config.getProxyHost());
    System.setProperty("https.proxyPort", config.getProxyPort());
  }
然后在每一个HttpUrlConnection请求中,设置代理服务器用户名和密码,并进行Base64加密(看你代理服务器的要求,可能因代理服务器不同而不同),代码如下
private HttpURLConnection getProxyHttpConnection() throws IOException {
    String authorization = config.getProxyUser() + ":"
        + config.getProxyPassword();
    URL url = new URL(config.getRequestUrl());
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestProperty("Proxy-Authorization",
        "Basic " + Base64.encodeBase64String(authorization.getBytes()));
    return conn;
  }

9、Java 中怎样在程序中设置代理服务器

你的问题应该是:在java中通过编程设置代理服务器并访问网络,现在作答如下:

1,讲解一下基础知识:
HTTP:是应用层协议,是基于传输层协议的。
TCP: 是传输层协议,是基于网络层协议的。
IP: 是网络层协议。
一个TCP的连接要进行三次握手(就像转户口一样,不详说),HTTP只是一个应用协议,也就是相当于一个自定义协议,即其没有对底层的传输方式进行干涉,只是对数据内容格式进行了定义。

2,
我们再说说HTTP代理,从上可以理解,HTTP代理服务器就是这样一台机器:你把所有的HTTP请求都发到这个
HTTP代理服务器,然后这个HTTP代理服务器请求你要访问的最终地址,把响应回传给你。这里还要注意它代理的是HTTP协议,而HTTP又是基于
TCP的,也就是说这个服务器代理的是指定HTTP内容格式的TCP连接。再说下去也没意思了,看以下代码:
//以下地址是代理服务器的地址
Socket socket = new Socket("10.1.2.188", 80);
//写与的内容就是遵循HTTP请求协议格式的内容,请求百度
socket.getOutputStream().write(new String("GET http://www.baidu.com/ HTTP/1.1\r\n\r\n").getBytes());
byte[] bs = new byte[1024];
InputStream is = socket.getInputStream();
int i;
while ((i = is.read(bs)) > 0) {
System.out.println(new String(bs, 0, i));
}
is.close();
3,当然在Java中,有Proxy代理上网的使用,此时使用URL(HTTP)就不涉及Socket(TCP)了,看如下代码
//设置代理
System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost", "10.1.2.188");
System.setProperty("http.proxyPort", "80");

//直接访问目的地址
URL url = new URL("http://www.baidu.com");
URLConnection con = url.openConnection();
InputStreamReader isr = new InputStreamReader(con.getInputStream());
char[] cs = new char[1024];
int i = 0;
while ((i = isr.read(cs)) > 0) {
System.out.println(new String(cs, 0, i));
}
isr.close();

与java设置服务器代理相关的知识