導航:首頁 > 編程語言 > https代理java

https代理java

發布時間:2022-10-02 16:35:37

java後台程序怎麼用https協議

嗨 你好
據網上了解到:

在JSP里,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。
如果使用了反向代理軟體,將:2046/ 的URL反向代理為 / 的URL時,用request.getRemoteAddr()方法獲取的IP地址是:127.0.0.1或192.168.1.110,而並不是客戶端的真實IP。
經過代理以後,由於在客戶端和服務之間增加了中間層,因此伺服器無法直接拿到客戶端的IP,伺服器端應用也無法直接通過轉發請求的地址返回給客戶端。但是在轉發請求的HTTP頭信息中,增加了X-FORWARDED-FOR信息。用以跟蹤原有的客戶端IP地址和原來客戶端請求的伺服器地址。當我們訪問 /index.jsp/ 時,其實並不是我們瀏覽器真正訪問到了伺服器上的index.jsp文件,而是先由代理伺服器去訪問:2046/index.jsp ,代理伺服器再將訪問到的結果返回給我們的瀏覽器,因為是代理伺服器去訪問index.jsp的,所以index.jsp中通過request.getRemoteAddr()的方法獲取的IP實際上是代理伺服器的地址,並不是客戶端的IP地址。
於是可得出獲得客戶端真實IP地址的方法一:
public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); }

可是當我訪問 /index.jsp/ 時,返回的IP地址始終是unknown,也並不是如上所示的127.0.0.1或192.168.1.110了,而我訪問:2046/index.jsp 時,則能返回客戶端的真實IP地址,寫了個方法去驗證。原因出在了Squid上。squid.conf 的配製文件forwarded_for 項默認是為on,如果 forwarded_for 設成了 off 則:X-Forwarded-For: unknown
於是可得出獲得客戶端真實IP地址的方法二:
public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; }

可是,如果通過了多級反向代理的話,X-Forwarded-For的值並不止一個,而是一串Ip值,究竟哪個才是真正的用戶端的真實IP呢?
答案是取X-Forwarded-For中第一個非unknown的有效IP字元串。
如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100用戶真實IP為: 192.168.1.110
希望可以幫到你的忙
祝你學習愉快
-

Ⅱ 如何用JAVA實現HTTPS客戶端

import java.io.*;
import java.net.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.*;
public class TrustSSL {
private static class TrustAnyTrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[] {};
}
}
private static class TrustAnyHostnameVerifier implements HostnameVerifier {
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
public static void main(String[] args) throws Exception {
InputStream in = null;
OutputStream out = null;
byte[] buffer = new byte[4096];
String str_return = "";
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
new java.security.SecureRandom());
URL console = new URL(
"https://192.168.1.188/test.php?username=測試");
HttpsURLConnection conn = (HttpsURLConnection) console
.openConnection();
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.connect();
InputStream is = conn.getInputStream();
DataInputStream indata = new DataInputStream(is);
String ret = "";
while (ret != null) {
ret = indata.readLine();
if (ret != null && !ret.trim().equals("")) {
str_return = str_return
+ new String(ret.getBytes("ISO-8859-1"), "GBK");
}
}
conn.disconnect();
} catch (ConnectException e) {
System.out.println("ConnectException");
System.out.println(e);
throw e;
} catch (IOException e) {
System.out.println("IOException");
System.out.println(e);
throw e;
} finally {
try {
in.close();
} catch (Exception e) {
}
try {
out.close();
} catch (Exception e) {
}
}
System.out.println(str_return);
}
}

Ⅲ java爬蟲訪問https,本地開發是win7系統,可以正常爬到數據,上傳到linux伺服器不能獲取數據,怎麼解決

可能是字元串編碼問題。

Ⅳ 新站准備上線了,怎麼把IP埠訪問改成域名呢 需要改成https訪問

域名解析的話還是正常解析,在域名管理台把域名解析到指定IP。
https協議則不一樣,它是加密連接,需要證書簽發機構頒發相應的證書,否則連接不會被瀏覽器信任,而這種證書每個IP只能簽發一個
https的埠和http的不同,是443埠,需要申請SSL證書(收費,免費也有,很少),是SSL+HTTP的,把SSL部署到伺服器,做配置就可以了。

Ⅳ java 訪問不到本地的proxy

這個是 apache httpclient 的代碼
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope("localhost", 8080),
new UsernamePasswordCredentials("username", "password"));
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider).build();
try {
HttpHost target = new HttpHost("www.verisign.com", 443, "https");
HttpHost proxy = new HttpHost("localhost", 8080);

RequestConfig config = RequestConfig.custom()
.setProxy(proxy)
.build();
HttpGet httpget = new HttpGet("/");
httpget.setConfig(config);

System.out.println("Executing request " + httpget.getRequestLine() + " to " + target + " via " + proxy);

CloseableHttpResponse response = httpclient.execute(target, httpget);
try {
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
EntityUtils.consume(response.getEntity());
} finally {
response.close();
}
} finally {
httpclient.close();
}

因為 不給發鏈接,你去 apache httpcomponents 的網站,找 httpclient ,example 裡面都有的

Ⅵ Java 中怎樣在程序中設置代理伺服器

importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.net.Authenticator;
importjava.net.HttpURLConnection;
importjava.net.InetSocketAddress;
importjava.net.PasswordAuthentication;
importjava.net.Proxy;
importjava.net.URL;

publicclassProxyDemo2{
publicstaticvoidmain(String[]args)throwsException{
URLurl=newURL("http://www.3lai8.com");
///創建代理伺服器
InetSocketAddressaddr=newInetSocketAddress("192.168.0.254",8080);
//Proxyproxy=newProxy(Proxy.Type.SOCKS,addr);//Socket代理
Proxyproxy=newProxy(Proxy.Type.HTTP,addr);//http代理
Authenticator.setDefault(newMyAuthenticator("username","password"));//設置代理的用戶和密碼
HttpURLConnectionconnection=(HttpURLConnection)url.openConnection(proxy);//設置代理訪問
InputStreamReaderin=newInputStreamReader(connection.getInputStream());
BufferedReaderreader=newBufferedReader(in);
while(true){
Strings=reader.readLine();
if(s!=null){
System.out.println(s);
}
}
}

{
privateStringuser="";
privateStringpassword="";

publicMyAuthenticator(Stringuser,Stringpassword){
this.user=user;
this.password=password;
}

(){
(user,password.toCharArray());
}
}

}

Ⅶ 怎樣用apache xampp配置https反向代理

如何開啟apache虛擬目錄反向代理 現有2個項目,A:php項目,B:java項目。由於域名解析只能使用80埠,因此需要apache來反向代理。apache使用80埠,tomcat使用8080. apache下httpd.conf中開啟以下模塊: # Virtual hosts 載入虛擬主機功能

Ⅷ 如何更換IP

可以嘗試使用代理伺服器,以及用瀏覽器隱藏等方法。以下是我找到的資料,希望能對你有所幫助。

用瀏覽器隱藏IP地址的方法

代理伺服器的一個突出作用就是隱藏本機IP地址。

我們先看看如何知道自己上網時的真實IP地址?
瀏覽器中先不設置代理伺服器,連上Internet網後用下列方法之一獲得:

方法1.在屏幕左下部托盤區對網路撥號連接圖標(ADSL)點擊滑鼠右鍵,選「狀態→詳細信息→客戶IP地址」就悄愕納賢鳧P。

方法2.對MyIE3.2DC瀏覽器在界面頂部的菜單欄點擊「工具」,勾選「顯示本機IP地址」。
對TouchNet 1.28 英文版在菜單欄點擊「Tools→IP Tools→My IP to Clipboard」。

方法3.在線檢測:中國大陸用戶:h++p://ip.loveroot.com/
海外地區用戶:h++p://216.92.207.177/pr.htm
內網用戶由此知道本區域網伺服器上網的真實IP。

然後談如何隱藏本機的真實地址?
方法很多,一個簡單的方法就是用瀏覽器設置代理伺服器,即首先關閉瀏覽器的Java功能;其次瀏覽器使用合適的代理伺服器;最後不要忘了測試。

一、關閉Java程序。

Java Applet是動態運行的一些子程序,一般用於動畫和旋轉文字,能使網頁看起來更生動、漂亮。但是這些程序的運行不僅會大大影響下載速度,而且有安全漏洞。瀏覽的網站利用Java Applet等程序容易得到你的本機的IP等多項有關個人的信息,這是在你沒有選擇也沒有點擊任何東西的情況下進行的。
因此,如果你想隱藏IP,在瀏覽器中不要打開Java功能,否則連接回到網站伺服器的applet子程序會泄露你本機的IP地址。一些普通的免費匿名頁面代理,如Anonymizer、Proxymate也不能解決此問題。

下面是部分瀏覽器禁止運行Java程序的步驟。

IE 6.0 sp1
在界面頂部的菜單欄點擊「工具→Internet選項→安全→自定義級別→腳本」,對「Java小程序腳本」選項點選禁用。

MyIE 3.2DC
在界面頂部的菜單欄點擊「選項→MyIE選項→下載」,不要勾選「允許Java Applet」。並檢查工具欄的圖標「下載圖片」旁點擊按鈕,確定沒有勾選「允許Java Applet(當前窗口)」。

GreenBrowser 2.2 build 429
在界面頂部的菜單欄點擊「工具」→GreenBrowser選項→下載」,不要勾選「允許Java」 。同樣在工具欄的圖標「顯示圖片」旁點擊按鈕,確定沒有勾選「允許Java(J)」。

TouchNet 1.28 英文版
在界面頂部的菜單欄點擊「Options →TouchNet Options→Download」,勾選「Disable Java」 。

Sleipnir 1.54 漢化版
在界面底部點擊「允許/禁止Java」圖標,變灰即生效。

Mozilla Firefox 0.8 繁體中文版
在界面頂部的菜單欄點擊「工具→選項→網頁」,不要勾選「可使用Java」。

當然,為獲得較高安全性可以將IE類瀏覽器ActiveX功能、Java功能和腳本功能全部關閉,將非IE類瀏覽器Java和Javascript功能關閉,只是這樣就限制了許多網站、論壇的功能,網頁的特效也不能顯示。

二、選用合適的代理。
在瀏覽器關閉了Java功能的基礎上,還要設置代理伺服器。

1.選用http代理。應選用匿名代理和加密代理才行。選用匿名代理,對網路服務商ISP(如電信、網通、鐵通)來說,知道你去的是代理伺服器,對訪問的網站來說,他不知道你的真實所在;選用加密代理,即支持SSL的安全代理,連域名和傳輸內容都加密。只要是用加密代理訪問加密網站(形如https://IP或域名),其加密強度無法破解,網路服務商ISP和網關無法知道流經的信息內容,你的數據安全和隱私得到強大的保護。

注意:加密代理可以是透明代理和非匿名代理,但須支持SSL並且訪問加密網站才能加密;因驗證工具的不同,有的代理分lev1、lev2,屬於高度匿名和匿名代理,lev3 多數是匿名,lev3以上的代理屬透明代理。

2.選用socks代理,無論是socks 4/4a/5中的任一種,均可隱藏本機的真實IP地址,並且全部支持訪問https的加密網站。socks代理不象http代理要區分支持SSL的代理,才能訪問加密網站。

有關設置請閱「瀏覽器的代理功能」。

三、在線測試IP。
完成上述兩步,測試是否隱藏了你的IP可到下列網頁查看,如果網頁不能顯示IP(Your Domain name[Real IP]不能顯示)或顯示的不是你本機真實的IP地址,說明隱藏成功。

測試網頁1:h++p://www.stilllistener.com/checkpoint1/Java/

測試網頁2:h++p://ipid.shat.net/

需要指出,使用代理伺服器可以對你的ISP保留一點隱私

Ⅸ JAVA中如何設置代理伺服器,取消代理伺服器

在JAVA中怎麼設置代理伺服器呢,非常簡單
publicvoidsetServiceProxy(Configconfig){
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加密(看你代理伺服器的要求,可能因代理伺服器不同而不同),代碼如下
()throwsIOException{
Stringauthorization=config.getProxyUser()+":"
+config.getProxyPassword();
URLurl=newURL(config.getRequestUrl());
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setRequestProperty("Proxy-Authorization",
"Basic"+Base64.encodeBase64String(authorization.getBytes()));
returnconn;
}

Ⅹ 創建連接是HttpsURLConnection,怎麼設置代理伺服器

java設置代理

packagecom.path.test;

importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.FileOutputStream;
importjava.net.URL;
importjava.net.URLConnection;

publicclassTURLConnection{
publicstaticvoidmain(Stringargs[])throwsException
{

//設置代理上外網
System.getProperties().put("proxySet","true");
System.getProperties().put("proxyHost","172.31.170.14");
System.getProperties().put("proxyPort","8080");

/*

如果需要驗證用戶

//Authenticator.setDefault(newMyAuthenticator());

*/
URLurl=newURL("http://www.csdn.net");
URLConnectionurlCon=url.openConnection();

/*
*方法1,一次過讀取所有信息
*/
BufferedInputStreambis=newBufferedInputStream(urlCon.getInputStream());
BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream("C:aa.htm"));

byteb[]=newbyte[bis.available()];
bis.read(b);
bos.write(b);
bos.flush();

bis.close();
bos.close();

閱讀全文

與https代理java相關的資料

熱點內容
程序員級別數學演算法邏輯 瀏覽:899
2k21公園怎麼換伺服器 瀏覽:724
php釋放資料庫連接 瀏覽:722
php網頁抓取工具 瀏覽:726
android設置對齊方式 瀏覽:23
linux創建網頁 瀏覽:280
凈化車間門演算法 瀏覽:934
安卓怎麼搞jpg 瀏覽:546
如來佛祖命令雷神去下界 瀏覽:856
新電腦管家下載好怎麼解壓 瀏覽:530
php獲取介面數據 瀏覽:767
最後的命令 瀏覽:921
如何添加手機app桌面快捷圖標 瀏覽:427
ui設計師與程序員 瀏覽:417
壽司pdf 瀏覽:828
pythonbg是什麼 瀏覽:248
c數值演算法程序大全 瀏覽:787
android整點報時 瀏覽:221
稀土pdf 瀏覽:536
單片機電子鎖 瀏覽:596