`
kakaluyi
  • 浏览: 444463 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

用java实现代理

阅读更多
  1. package com.kuaff.jdk5package;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.net.InetSocketAddress;
  5. import java.net.MalformedURLException;
  6. import java.net.Proxy;
  7. import java.net.ProxySelector;
  8. import java.net.SocketAddress;
  9. import java.net.URI;
  10. import java.net.URISyntaxException;
  11. import java.net.URL;
  12. import java.net.URLConnection;
  13. import java.util.List;
  14. import java.util.Properties;
  15. public class NetProxy
  16. {
  17.     // 测试本地JVM的网络缺省配置
  18.     public void setLocalProxy()
  19.     {
  20.         Properties prop = System.getProperties();
  21.        //设置http访问要使用的代理服务器的地址
  22.         prop.setProperty("http.proxyHost""10.10.0.96");
  23.        //设置http访问要使用的代理服务器的端口
  24.         prop.setProperty("http.proxyPort""8080");
  25.        //设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔
  26.         prop.setProperty("http.nonProxyHosts""localhost|10.10.*");
  27.        //设置安全访问使用的代理服务器地址与端口
  28.        //它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问
  29.         prop.setProperty("https.proxyHost""10.10.0.96");
  30.         prop.setProperty("https.proxyPort""443");
  31.         //使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
  32.         prop.setProperty("ftp.proxyHost""10.10.0.96");
  33.         prop.setProperty("ftp.proxyPort""2121");
  34.         prop.setProperty("ftp.nonProxyHosts""localhost|10.10.*");
  35.         //socks代理服务器的地址与端口
  36.         prop.setProperty("socksProxyHost""10.10.0.96");
  37.         prop.setProperty("socksProxyPort""1080");
  38.     }
  39.     // 清除proxy设置
  40.     public void removeLocalProxy()
  41.     {
  42.         Properties prop = System.getProperties();
  43.         prop.remove("http.proxyHost");
  44.         prop.remove("http.proxyPort");
  45.         prop.remove("http.nonProxyHosts");
  46.         prop.remove("https.proxyHost");
  47.         prop.remove("https.proxyPort");
  48.         prop.remove("ftp.proxyHost");
  49.         prop.remove("ftp.proxyPort");
  50.         prop.remove("ftp.nonProxyHosts");
  51.         prop.remove("socksProxyHost");
  52.         prop.remove("socksProxyPort");
  53.     }
  54.     //
  55.     // 测试http
  56.     public void showHttpProxy(Object... proxy)
  57.     {
  58.         URL url = null;
  59.         try
  60.         {
  61.             url = new URL("http://blog.csdn.com/smallnest");
  62.         }
  63.         catch (MalformedURLException e)
  64.         {
  65.             return;
  66.         }
  67.         try
  68.         {
  69.             URLConnection conn = null;
  70.             switch (proxy.length)
  71.             {
  72.             case 0:
  73.                 conn = url.openConnection();
  74.                 break;
  75.             case 1:
  76.                 conn = url.openConnection((Proxy) proxy[0]);
  77.                 break;
  78.             default:
  79.                 break;
  80.             }
  81.             if (conn == null)
  82.                 return;
  83.             conn.setConnectTimeout(3000); // 设置连接超时时间
  84.             InputStream in = conn.getInputStream();
  85.             byte[] b = new byte[1024];
  86.             try
  87.             {
  88.                 while (in.read(b) > 0)
  89.                 {
  90.                     System.out.println(new String(b));
  91.                 }
  92.             }
  93.             catch (IOException e1)
  94.             {
  95.             }
  96.         }
  97.         catch (IOException e1)
  98.         {
  99.             e1.printStackTrace();
  100.         }
  101.     }
  102.     // 测试ftp
  103.     public void showFtpProxy(Object... proxy)
  104.     {
  105.         URL url = null;
  106.         try
  107.         {
  108.             url = new URL("ftp://ftp.tsinghua.edu.cn");
  109.         }
  110.         catch (MalformedURLException e)
  111.         {
  112.             return;
  113.         }
  114.         try
  115.         {
  116.             URLConnection conn = null;
  117.             switch (proxy.length)
  118.             {
  119.             case 0:
  120.                 conn = url.openConnection();
  121.                 break;
  122.             case 1:
  123.                 conn = url.openConnection((Proxy) proxy[0]);
  124.                 break;
  125.             default:
  126.                 break;
  127.             }
  128.             if (conn == null)
  129.                 return;
  130.             conn.setConnectTimeout(3000); // 设置连接超时时间
  131.             InputStream in = conn.getInputStream();
  132.             byte[] b = new byte[1024];
  133.             try
  134.             {
  135.                 while (in.read(b) > 0)
  136.                 {
  137.                     System.out.println(new String(b));
  138.                 }
  139.             }
  140.             catch (IOException e1)
  141.             {
  142.             }
  143.         }
  144.         catch (IOException e1)
  145.         {
  146.             e1.printStackTrace();
  147.         }
  148.     }
  149.     // 得到一个proxy
  150.     public Proxy getProxy(Proxy.Type type, String host, int port)
  151.     {
  152.         SocketAddress addr = new InetSocketAddress(host,port);
  153.         Proxy typeProxy = new Proxy(type, addr);
  154.         return typeProxy;
  155.     }
  156.     public static void main(String[] args)
  157.     {
  158.         NetProxy proxy = new NetProxy();
  159.         //测试代理服务器
  160.         proxy.setLocalProxy();
  161.         proxy.showHttpProxy();
  162.         //下面两行是清除系统属性,而通过Proxy类指定代理服务器
  163.         // proxy.removeLocalProxy
  164.         //proxy.showHttpProxy(proxy.getProxy(Proxy.Type.SOCKS,"10.10.0.96",1080));
  165.         
  166.                 
  167.     }
  168. }
分享到:
评论

相关推荐

    用Java实现的代理模式之动态代理

    在Java中,代理模式有静态代理和动态代理两种实现方式。本篇将重点讨论"动态代理",这是一种在运行时创建代理对象的技术,使得我们可以在程序运行过程中,根据需要动态地生成具有额外功能的代理类。 动态代理主要由...

    java实现代理模式

    用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明

    java实现免费代理IP的获取方式 并实时校验代理IP是否有效

    Java 实现免费代理IP的获取方式 并动态实时校验是否有效,java文件项目内含有Jsoup的Jar包(Jsoup是加工过的,含请求),有2个主入口程序: 其一:用于请求代理IP,并立即校验是否是一个有效的代理IP,如果有效,...

    java多线程代理IP池

    多线程代理IP池,一直看到有关这方面的技术,最近实现了一个。简单的来说,启动后,会一直定时的获取代理ip,并自动检测代理ip的活跃度。运用多线程的技术,在极短的时间内获取大量的ip进行筛选。架构也比较清楚,...

    Java实现的反向代理程序(源码版)

    使用Java编写的反向代理程序(源代码),通过简单的参数配置即可实现某些特定站点的反向代理,并在此过程中改变一些站点的特定行为。例如:允许特点站点跨域访问被代理的站点,或者屏蔽被代理站点识别请求访问客户端...

    Java动态代理两种实现方式

    而Cglib则不需要目标对象实现接口,通过继承目标类实现代理,因此适用于没有接口或不希望修改原有代码的情况。不过,Cglib生成代理类的速度比JDK慢,且内存占用稍高。 总结来说,Java动态代理为开发者提供了灵活的...

    用Java动态代理实现AOP

    在本文中,我们将通过一个简单的例子来展示如何使用Java动态代理实现AOP。首先,我们定义了一个business接口和一个实现类BusinessObject,BusinessObject中包含了商业逻辑代码和日志记录代码。 ```java public ...

    JAVA实现动态代理的简单流程

    在深入探讨Java动态代理的实现过程之前,我们首先需要理解动态代理的基本概念及其在Java中的应用价值。动态代理,顾名思义,是在运行时动态创建代理对象的一种机制,它无需在编译期就确定代理类的具体实现,而是通过...

    java实现的代理服务器

    在Java中实现代理服务器,我们可以利用Java的Socket编程接口。`HttpProxy.java` 和 `SubHttpProxy.java` 这两个文件很可能包含了代理服务器的核心代码。`HttpProxy.java` 可能是主程序,负责监听客户端的HTTP请求并...

    Java实现动态代理

    Java中的动态代理主要有两种实现方式:JDK动态代理和CGLIB动态代理。 1. **JDK动态代理**: JDK动态代理是基于接口的,它通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。...

    基于Java实现的代理服务器

    Java 实现的代理服务器是一种网络通信工具,它允许客户端通过该服务器作为中介与目标服务器进行交互,从而隐藏了客户端的真实身份或提供了额外的安全性。在本项目中,我们主要关注的是实现了 SOCKS4 和 SOCKS5 协议...

    java 动态代理实现AOP

    ### Java动态代理实现AOP详解 #### 一、引言 随着软件开发复杂度的提升,传统的面向对象编程(OOP)已经...总之,通过本篇文章的学习,读者应该能够理解和掌握如何使用Java动态代理来实现AOP的基本原理及实践操作。

    java实现的代理程序源码

    在Java中,可以使用`java.net.Socket`类实现FTP代理,同时,`org.apache.commons.net.ftp.FTPClient`库提供了一个强大的FTP客户端实现,可以方便地处理各种FTP操作。 **Telnet代理** Telnet是一种远程登录协议,...

    用Java动态代理实现委托模式

    下面我们将详细探讨如何使用Java动态代理实现委托模式,以及相关的源码和工具应用。 首先,理解委托模式的基本概念。委托模式通常由三部分组成:委托者(Delegate)、被委托者(Subject)和客户端(Client)。委托...

    java动态代理实现详解

    Java 动态代理是Java平台提供的一种强大的工具,它允许我们在运行时动态生成代理类,这些代理类可以实现一组指定的接口,同时还能在方法调用前后添加自定义的行为。这种机制大大简化了面向切面编程(AOP)和事件监听...

    Java代理模式Java动态代理

    Java动态代理主要用于创建代理对象,这些代理对象可以实现在特定时刻的行为增强。 **1. Java动态代理类的位置** Java动态代理类位于`java.lang.reflect`包下,主要包括`InvocationHandler`接口和`Proxy`类。 **2....

    使用java动态代理技术实现简单的AOP切面编程实例

    在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。 **AOP概述** 面向切面编程(Aspect Oriented Programming,AOP)是一种编程范式,旨在将横切关注点...

    java操作IE代理

    这个"java操作IE代理"的主题涉及到如何在Java程序中控制IE的网络代理设置,这通常需要利用特定的库和方法来实现。下面将详细介绍这个知识点。 首先,"registry.jar"可能是一个包含了对Windows注册表操作功能的Java...

    Java实现的反向代理程序(编译版)

    使用Java编写的反向代理程序,通过简单的参数配置即可实现某些特定站点的反向代理,并在此过程中改变一些站点的特定行为。例如:允许特点站点跨域访问被代理的站点,或者屏蔽被代理站点识别请求访问客户端的类型...

Global site tag (gtag.js) - Google Analytics