本文目錄一覽:
- 1、java HttpClient設置代理的話,用戶名和密碼怎麼設置?
- 2、java如何獲取用戶真實的ip
- 3、Java 編寫IP動態代理
- 4、java通過代理ip方式訪問接口返回為null
- 5、java中如何獲取用戶的IP地址及禁止此人
- 6、java程序如何綁定服務器IP?
java HttpClient設置代理的話,用戶名和密碼怎麼設置?
使用代理需要導入:commons-logging-1.1.jar,httpclient-4.0-beta2.jar ,httpcore-4.1-alpha1.jar 和 commons-codec-1.4.jar架包。
在連接代理時需要使用用戶名和密碼構造UsernamePasswordCredentials對象並作為參數傳遞給HttpClient對象。
具體用法如下:
public static void main(String args[])
{
StringBuffer sb = new StringBuffer();
//創建HttpClient實例
HttpClient client = getHttpClient();
//創建httpGet
HttpGet httpGet = new HttpGet(“”);
//執行
try {
HttpResponse response = client.execute(httpGet);
HttpEntity entry = response.getEntity();
if(entry != null)
{
InputStreamReader is = new InputStreamReader(entry.getContent());
BufferedReader br = new BufferedReader(is);
String str = null;
while((str = br.readLine()) != null)
{
sb.append(str.trim());
}
br.close();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sb.toString());
}
//設置代理
public static HttpClient getHttpClient() {
DefaultHttpClient httpClient = new DefaultHttpClient();
String proxyHost = “proxycn2.huawei.com”;
int proxyPort = 8080;
String userName = “china\\******”;
String password = “*******「
httpClient.getCredentialsProvider().setCredentials(
new AuthScope(proxyHost, proxyPort),
new UsernamePasswordCredentials(userName, password));
HttpHost proxy = new HttpHost(proxyHost,proxyPort);
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);
return httpClient;
}
java如何獲取用戶真實的ip
1、如果服務器如果沒有採用反向代理,而且客戶端沒有用正向代理的話,那麼可以獲取客戶端的真實IP地址request.getRemoteAddr()
2、如果服務器如果沒有採用反向代理,而且客戶端有用正向代理的話,那麼通過request.getRemoteAddr()獲取客戶端的IP地址是客戶端 的代理服務器的地址,並不是客戶端的真實地址,
3、如果客戶端使用的是多層代理的話,服務器獲得的客戶端地址是客戶端的最外圍代理服務器的地址如果服務器如果採用反向代理服務器,不管客戶端採用的是何種方式訪問服務器。
//獲得客戶端真實IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader(“x-forwarded-for”) == null) {
return request.getRemoteAddr();
}
return request.getHeader(“x-forwarded-for”);
}
//獲得客戶端真實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;
}
Java 編寫IP動態代理
package com.tan.test;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import org.apache.log4j.Logger;
public class TestProxyIp {
private static final Logger log = Logger.getLogger(TestProxyIp.class);
public static void main(String[] args) throws IOException {
System.setProperty(“http.maxRedirects”, “50”);
System.getProperties().setProperty(“proxySet”, “true”);
// 如果不設置,只要代理IP和代理端口正確,此項不設置也可以
String ip = “59.175.192.126”;
ip = “221.214.180.130”;
ip = “122.224.171.91”;
ip = “58.221.213.166”;
ip = “202.106.16.36”;
ip = “121.8.191.34”;
ip = “222.208.242.30”;
ip = “219.239.90.85”;
ip = “60.31.177.188”;
System.getProperties().setProperty(“http.proxyHost”, ip);
System.getProperties().setProperty(“http.proxyPort”, “3128”);
//確定代理是否設置成功
log.info(getHtml(“”));
//log.info(getHtml(“”));
}
private static String getHtml(String address){
StringBuffer html = new StringBuffer();
String result = null;
try{
URL url = new URL(address);
URLConnection conn = url.openConnection();
conn.setRequestProperty(“User-Agent”,”Mozilla/4.0 (compatible; MSIE 7.0; NT 5.1; GTB5; .NET CLR 2.0.50727; CIBA)”);
BufferedInputStream in = new BufferedInputStream(conn.getInputStream());
try{
String inputLine;
byte[] buf = new byte[4096];
int bytesRead = 0;
while (bytesRead = 0) {
inputLine = new String(buf, 0, bytesRead, “UTF-8”);
/*if (!””.equals(inputLine)) {
System.out.println(inputLine);
}*/
html.append(inputLine);
bytesRead = in.read(buf);
inputLine = null;
}
buf = null;
}finally{
in.close();
conn = null;
url = null;
}
//result = new String(html.toString().trim().getBytes(“ISO-8859-1”), “UTF-8”).toLowerCase();
//result=new String(html.toString().trim().getBytes(“ISO-8859-1”), “GBK”);
}catch (Exception e) {
e.printStackTrace();
return null;
}/*finally{
html = null;
}*/
return html.toString();
}
}
但是找不到有用的動態ip。
java通過代理ip方式訪問接口返回為null
自動報錯。null是Java中的關鍵字。null==0x0表示內存中編號為0的地址。該地址受到系統保護,任何程序讀取,寫入0x0地址,系統直接殺死程序會自動報錯。一般用於在開發中初始化引用數據類型的變量,利用null報錯。NullPointerException。null是一種特殊的值,可以把null賦予任何引用類型,也可以把null轉化成任何類型。但是僅僅限於引用類型,不包括基本數據類型。
java中如何獲取用戶的IP地址及禁止此人
樓上的方法是不合理的。第一,如果用戶使用代理,是無法獲得真實Ip的0;第二,IF語句不能保證禁止IP,而且很多網站並不需要登錄的。給樓主些方法,可供參考。
1。 獲取用戶IP
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader(“x-forwarded-for”) == null) {
return request.getRemoteAddr();
}
return request.getHeader(“x-forwarded-for”);
}
這種方法總是獲得用戶的真實IP
2。禁止IP,可以考慮從服務器下手
(1) 如果用的是tomcat,那麼在tomcat_home/conf/server.xml中的host/host之間加一行代碼:
Valve className=”org.apache.catalina.valves.RemoteAddrValve” deny=”192.168.1.1″/
這樣192.168.1.1這個ip訪問webapp時會收到 403 錯誤
(2) 如果是apache那麼:
Directory /var/web/dir1
Allow from all
Deny from 111.111.111.111
/Directory
上面限制單個IP,限制IP段用*號代替。如111.111.111.*
(3) 或者樓主也可以像樓上說的用代碼實現,給你個JS代碼:
SCRIPT LANGUAGE=”java script”
!– Begin
netscape = (navigator.appName.indexOf(“Netscape”) != -1);
version4 = (navigator.appVersion.indexOf(“4.”) != -1);
if (netscape version4) {
ip = “” + java.net.InetAddress.getLocalHost().getHostAddress();
if (ip.indexOf(“235.12”) = -1)
// 這是想要禁止訪問的IP例如: 235.12.xxx.xxx
{
alert(“You are not permitted to access this site.”);
history.go(-1);
}
}
// End —
/script
將以上代碼加入到head區域中。
java程序如何綁定服務器IP?
你把這個方法寫進你的程序,程序開始後先獲取IP,然後判斷IP是否和你的一致,如果不一致直接return;即可.
/**
* 獲取外網IP
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ipAddress = null;
// ipAddress = this.getRequest().getRemoteAddr();
ipAddress = request.getHeader(“x-forwarded-for”);
if (ipAddress == null || ipAddress.length() == 0
|| “unknown”.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader(“Proxy-Client-IP”);
}
if (ipAddress == null || ipAddress.length() == 0
|| “unknown”.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader(“WL-Proxy-Client-IP”);
}
if (ipAddress == null || ipAddress.length() == 0
|| “unknown”.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if (ipAddress.equals(“127.0.0.1”)) {
// 根據網卡取本機配置的IP
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress = inet.getHostAddress();
}
}
// 對於通過多個代理的情況,第一個IP為客戶端真實IP,多個IP按照’,’分割
if (ipAddress != null ipAddress.length() 15) { // “***.***.***.***”.length()
// = 15
if (ipAddress.indexOf(“,”) 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(“,”));
}
}
return ipAddress;
}
————————————————
版權聲明:本文為CSDN博主「秋9」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:
原創文章,作者:AYJDJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/330582.html