導航:首頁 > 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設置伺服器代理相關的知識