有关java使用代理ip访问网站

时间:2021-12-21 17:02:38
网上找到了一段代码。但是使用后发现还是显示原本的ip。但是又看不出代码的错误。还请大神赐教。


import java.io.BufferedInputStream;
  import java.net.URL;
  import java.net.URLConnection;
  public class TestProxyIp {
  public static void main(String args[]){
  //System.getProperties().setProperty("proxySet", "true"); //如果不设置,只要代理IP和代理端口正确,此项不设置也可以
  System.getProperties().setProperty("http.proxyHost", "218.26.204.66");
  System.getProperties().setProperty("http.proxyPort", "8080");
  System.out.println(getHtml("http://www.ip138.com/ip2city.asp")); //判断代理是否设置成功
  }
  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; Windows 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, "ISO-8859-1"); 
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"), "gb2312").toLowerCase();
  }catch(Exception e){
  e.printStackTrace();
  return null;
  }
  html = null;
  return result;
  }
  }
更多 0

14 个解决方案

#1


我之前也是这么用的,system.setproperty这样不行。具体为什么,也请哪位知道的告诉我下。

关于你这个,我可以理解为爬虫,我实现过,我找代码去,稍等哈啊 有关java使用代理ip访问网站

#2



//设置代理IP和代理端口
        client.getHostConfiguration().setProxy(ipPort.getIp(), ipPort.getPort());

        //设置用户名和密码
        if (StringUtil.isNotEmpty(ipPort.getUsername())
                && StringUtil.isNotEmpty(ipPort.getPassword())) {
            Credentials upcreds = new UsernamePasswordCredentials(ipPort.getUsername(), ipPort.getPassword());
            client.getState().setProxyCredentials(AuthScope.ANY, upcreds);
        }


我是用httpclient做的,我想java源生的类应该也能支持,你自己试试。 有关java使用代理ip访问网站

#3


我用System.getProperties().setProperty("proxySet", "true");
System.getProperties().setProperty("http.proxyHost", "xxxx");
System.getProperties().setProperty("http.proxyPort", "8080");

可以的

#4


地址应该是System.out.println(getHtml(" http://iframe.ip138.com/ic.asp"));

不是System.out.println(getHtml(" http://www.ip138.com/ip2city.asp")); /

#5


引用 2 楼 javaloverkehui 的回复:

//设置代理IP和代理端口
        client.getHostConfiguration().setProxy(ipPort.getIp(), ipPort.getPort());

        //设置用户名和密码
        if (StringUtil.isNotEmpty(ipPort.getUsername())
                && StringUtil.isNotEmpty(ipPort.getPassword())) {
            Credentials upcreds = new UsernamePasswordCredentials(ipPort.getUsername(), ipPort.getPassword());
            client.getState().setProxyCredentials(AuthScope.ANY, upcreds);
        }


我是用httpclient做的,我想java源生的类应该也能支持,你自己试试。 有关java使用代理ip访问网站
多谢。我再研究研究。

#6


引用 4 楼 rui888 的回复:
地址应该是System.out.println(getHtml(" http://iframe.ip138.com/ic.asp"));

不是System.out.println(getHtml(" http://www.ip138.com/ip2city.asp")); /

一样还是显示原本的ip。那个代理ip和端口我用ie试过,是没问题的。会不会因为用的是wifi的问题,应该没什么关系。。。。

#7


引用 3 楼 rui888 的回复:
我用System.getProperties().setProperty("proxySet", "true");
System.getProperties().setProperty("http.proxyHost", "xxxx");
System.getProperties().setProperty("http.proxyPort", "8080");

可以的

你复制我的代码可以连上代理吗?

#8


你本机ip 和代理ip 不一样。 
现在显示要显示那个啊。 

#9


代理是永远的疼,java获取客户端ip,大材小用

#10


引用 8 楼 rui888 的回复:
你本机ip 和代理ip 不一样。 
现在显示要显示那个啊。 
我是希望显示代理ip。但是网站返回的还是原本的ip。

#11


引用 8 楼 rui888 的回复:
你本机ip 和代理ip 不一样。 
现在显示要显示那个啊。 
我现在用代理ip连一个可以显示ip的网站,但是网站返回内容显示我还是用本机ip访问的。问题就在这里。

#12


该回复于2015-07-13 08:25:28被管理员删除

#13


楼主问题解决了吗?求分享求分享啊 有关java使用代理ip访问网站

#14


楼主问题解决了吗?求分享求分享啊

#1


我之前也是这么用的,system.setproperty这样不行。具体为什么,也请哪位知道的告诉我下。

关于你这个,我可以理解为爬虫,我实现过,我找代码去,稍等哈啊 有关java使用代理ip访问网站

#2



//设置代理IP和代理端口
        client.getHostConfiguration().setProxy(ipPort.getIp(), ipPort.getPort());

        //设置用户名和密码
        if (StringUtil.isNotEmpty(ipPort.getUsername())
                && StringUtil.isNotEmpty(ipPort.getPassword())) {
            Credentials upcreds = new UsernamePasswordCredentials(ipPort.getUsername(), ipPort.getPassword());
            client.getState().setProxyCredentials(AuthScope.ANY, upcreds);
        }


我是用httpclient做的,我想java源生的类应该也能支持,你自己试试。 有关java使用代理ip访问网站

#3


我用System.getProperties().setProperty("proxySet", "true");
System.getProperties().setProperty("http.proxyHost", "xxxx");
System.getProperties().setProperty("http.proxyPort", "8080");

可以的

#4


地址应该是System.out.println(getHtml(" http://iframe.ip138.com/ic.asp"));

不是System.out.println(getHtml(" http://www.ip138.com/ip2city.asp")); /

#5


引用 2 楼 javaloverkehui 的回复:

//设置代理IP和代理端口
        client.getHostConfiguration().setProxy(ipPort.getIp(), ipPort.getPort());

        //设置用户名和密码
        if (StringUtil.isNotEmpty(ipPort.getUsername())
                && StringUtil.isNotEmpty(ipPort.getPassword())) {
            Credentials upcreds = new UsernamePasswordCredentials(ipPort.getUsername(), ipPort.getPassword());
            client.getState().setProxyCredentials(AuthScope.ANY, upcreds);
        }


我是用httpclient做的,我想java源生的类应该也能支持,你自己试试。 有关java使用代理ip访问网站
多谢。我再研究研究。

#6


引用 4 楼 rui888 的回复:
地址应该是System.out.println(getHtml(" http://iframe.ip138.com/ic.asp"));

不是System.out.println(getHtml(" http://www.ip138.com/ip2city.asp")); /

一样还是显示原本的ip。那个代理ip和端口我用ie试过,是没问题的。会不会因为用的是wifi的问题,应该没什么关系。。。。

#7


引用 3 楼 rui888 的回复:
我用System.getProperties().setProperty("proxySet", "true");
System.getProperties().setProperty("http.proxyHost", "xxxx");
System.getProperties().setProperty("http.proxyPort", "8080");

可以的

你复制我的代码可以连上代理吗?

#8


你本机ip 和代理ip 不一样。 
现在显示要显示那个啊。 

#9


代理是永远的疼,java获取客户端ip,大材小用

#10


引用 8 楼 rui888 的回复:
你本机ip 和代理ip 不一样。 
现在显示要显示那个啊。 
我是希望显示代理ip。但是网站返回的还是原本的ip。

#11


引用 8 楼 rui888 的回复:
你本机ip 和代理ip 不一样。 
现在显示要显示那个啊。 
我现在用代理ip连一个可以显示ip的网站,但是网站返回内容显示我还是用本机ip访问的。问题就在这里。

#12


该回复于2015-07-13 08:25:28被管理员删除

#13


楼主问题解决了吗?求分享求分享啊 有关java使用代理ip访问网站

#14


楼主问题解决了吗?求分享求分享啊