代碼如下:
- import java.io.BufferedInputStream;
- import java.io.IOException;
- import java.net.URL;
- import java.net.URLConnection;
- import org.apache.log4j.Logger;
- /**
- * @author Jason
- * @date Oct 27, 2010
- * @version 1.0
- */
- 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 = "93.91.200.146";
- ip = "221.130.18.5";
- ip = "221.130.23.135";
- ip = "221.130.18.78";
- ip = "221.130.23.134";
- ip = "221.130.18.49";
- ip = "111.1.32.36";
- ip = "221.130.18.49";
- ip = "221.130.18.49";
- System.getProperties().setProperty("http.proxyHost", ip);
- System.getProperties().setProperty("http.proxyPort", "80");
- //確定代理是否設置成功
- log.info(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; 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;
- }finally{
- html = null;
- }
- return result;
- }
- }
運行結果如下:
如果最後顯示的IP與本機網絡IP不一樣說明我們達到了代理的功能,我自己的IP是 119.6.69.202 ,現在訪問的IP是111.160.68.18說明成功了。
如果按照正常想象來看顯示的IP是最後一個,也就是ip = "221.130.18.49"; 結果卻是111.160.68.18。我想這應該是代理服務器的原因,不過這個沒有關係,達到我們想要的目的就行了。
使用動態IP需要注意的地方:
1、如果動態IP錯誤,會以本機網絡IP訪問。如果端口錯誤,會報錯。
2、代理IP哪裏來呢? 我是從優易ip代理軟件免費IP裏找的,然後存到自己本機。如果對方封了我現在的IP,那麼我就更換IP。