精华内容
下载资源
问答
  • java 设置代理ip
    万次阅读
    2016-05-17 10:23:43

    java有两种方法可以设置代理ip,简单介绍一下优劣

    第一种,直接在JVM中设置:

    /*JVM设置代理*/
    System.getProperties().setProperty("http.proxyHost", ip);  
    System.getProperties().setProperty("http.proxyPort", "80");  

    这种设置的优势是快捷方便,且由于是JVM级别的设置,可以对整个项目起作用。当然这种设置方法有一个明显的劣势:当代理ip不可用时,会直接调用本地网络来进行连接。这个问题在很多使用场景中是非常致命的。

    第二种,使用SocketAddress网络代理

    /**
     * 通过代理对象连接
     * @param address
     * @return
     */
    SocketAddress addr = new InetSocketAddress(host, Integer.parseInt(port)); 
    Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
    try{
        URL url = new URL("http://www.baidu.com");
        URLConnection conn = url.openConnection(proxy);
        conn.setConnectTimeout(5000);
        conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; NT 5.1; GTB5; .NET CLR 2.0.50727; CIBA)");
        conn.getContent();
    }catch (Exception e) {
        e.printStackTrace();
    }

    建立一个Proxy对象,然后使用这个对象来进行连接。当代理失效时,会直接抛出异常。这种办法的优势是,在代理连接发生错误时,会抛出异常而并不是使用本地的连接继续访问。而劣势也很明显,你需要为每一次连接创建一个代理对象。

    最后是一个用于验证代理IP是否生效的抓取程序,抓取地址是:http://1212.ip138.com/ic.asp 可以直接看到访问的ip地址。需要注意的是,如果你使用的是透明代理,那么这个ip依然会显示为你的实际ip只有使用匿名代理时,该ip才会变成代理ip。

    以下是抓取程序:

        /**
         * 获得页面信息
         * @param address
         * @return
         */
        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访问次数限制问题
  • java动态设置IP

    千次阅读 2015-04-02 00:44:31
    工作需要要写一个spider访问XXX网站,但是由于我访问频率很高经常被XX网站封IP(我知道这是不道德的,但是没办法)。为了突破IP限制需要动态替换代理ip。  代码如下:  Java代码  import java.io...
    工作需要要写一个spider访问XXX网站,但是由于我访问频率很高经常被XX网站封IP(我知道这是不道德的,但是没办法)。为了突破IP限制需要动态替换代理ip。 

    代码如下: 
    Java代码   收藏代码
    1. import java.io.BufferedInputStream;  
    2. import java.io.IOException;  
    3. import java.net.URL;  
    4. import java.net.URLConnection;  
    5.   
    6. import org.apache.log4j.Logger;  
    7.   
    8. /**  
    9.  * @author Jason 
    10.  * @date  Oct 27, 2010 
    11.  * @version 1.0  
    12.  */  
    13. public class TestProxyIp  {  
    14.     private static final Logger log = Logger.getLogger(TestProxyIp.class);  
    15.       
    16.     public static void main(String[] args) throws IOException {  
    17.         System.setProperty("http.maxRedirects""50");  
    18.         System.getProperties().setProperty("proxySet""true");  
    19.         // 如果不设置,只要代理IP和代理端口正确,此项不设置也可以  
    20.         String ip = "93.91.200.146";  
    21.         ip = "221.130.18.5";  
    22.         ip = "221.130.23.135";  
    23.         ip = "221.130.18.78";  
    24.         ip = "221.130.23.134";  
    25.         ip = "221.130.18.49";  
    26.         ip = "111.1.32.36";  
    27.         ip = "221.130.18.49";  
    28.         ip = "221.130.18.49";  
    29.         System.getProperties().setProperty("http.proxyHost", ip);  
    30.         System.getProperties().setProperty("http.proxyPort""80");  
    31.           
    32.         //确定代理是否设置成功  
    33.         log.info(getHtml("http://www.ip138.com/ip2city.asp"));  
    34.           
    35.     }  
    36.       
    37.     private static String getHtml(String address){  
    38.         StringBuffer html = new StringBuffer();  
    39.         String result = null;  
    40.         try{  
    41.             URL url = new URL(address);  
    42.             URLConnection conn = url.openConnection();  
    43.             conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; NT 5.1; GTB5; .NET CLR 2.0.50727; CIBA)");  
    44.             BufferedInputStream in = new BufferedInputStream(conn.getInputStream());  
    45.               
    46.             try{  
    47.                 String inputLine;  
    48.                 byte[] buf = new byte[4096];  
    49.                 int bytesRead = 0;  
    50.                 while (bytesRead >= 0) {  
    51.                     inputLine = new String(buf, 0, bytesRead, "ISO-8859-1");  
    52.                     html.append(inputLine);  
    53.                     bytesRead = in.read(buf);  
    54.                     inputLine = null;  
    55.                 }  
    56.                 buf = null;  
    57.             }finally{  
    58.                 in.close();  
    59.                 conn = null;  
    60.                 url = null;  
    61.             }  
    62.             result = new String(html.toString().trim().getBytes("ISO-8859-1"), "gb2312").toLowerCase();  
    63.               
    64.         }catch (Exception e) {  
    65.             e.printStackTrace();  
    66.             return null;  
    67.         }finally{  
    68.             html = null;              
    69.         }  
    70.         return result;  
    71.     }  
    72. }  

    运行结果如下: 


    如果最后显示的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。 
    展开全文
  • JAVA实现修改本地IP地址(swing界面版),支持存储多个预设IP,可以切换使用(IO流实现),支持删除。
  • java获取Centos7服务器网卡ip 子网掩码 默认网关 DNS 同时设置网卡 及 重启网卡参考
  • java根据ip获取国家、地区名称,附带ip
  • Java语言HttpClient使用代理IP

    千次阅读 2019-12-19 10:01:03
    在访问一个网站时,有时我们不想让对方获取到我们的真实IP,这种情况下,就可以使用代理IP进行访问。 1、maven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <...

    在访问一个网站时,有时我们不想让对方获取到我们的真实IP,这种情况下,就可以使用代理IP进行访问。

    1、maven依赖

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.4.10</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>

    2、使用代理IP实例

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpHost;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    public class HttpProxy {
    	public static void main(String[] args) throws Exception {
    		// 创建HttpClient实例
    		CloseableHttpClient httpClient = HttpClients.createDefault(); 
    		
    		//创建Httpget实例 ,http://2018.ip138.com/ic.asp为该网址返回对应的ip
    		//以下为要访问的网址
    		HttpGet httpGet = new HttpGet("http://budwuv.v.vote8.cn"); 
    		
    		//代理IP设置,代理 ip查询地址:https://www.xicidaili.com/
    		HttpHost httpHost = new HttpHost("112.87.68.95",9999);
    		
    		RequestConfig requestConfig = RequestConfig.custom()
    				.setConnectTimeout(10000)//设置连接超时时间,单位毫秒
    				.setSocketTimeout(10000)//设置读取超时时间,单位毫秒
    				.setProxy(httpHost)//设置代理
    				.build();
    		
    		httpGet.setConfig(requestConfig);
    		//设置Http报文头信息
    		httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
    		     
    		CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求
    	
    		 if (response != null){
    	            HttpEntity entity = response.getEntity();  //获取返回实体
    	            if (entity != null){
    	            	System.out.println("网页内容为:");
    	                System.out.println(EntityUtils.toString(entity,"gbk"));
    	            }
    	        }
    	        if (response != null){
    	            response.close();
    	        }
    	        if (httpClient != null){
    	            httpClient.close();
    	        }
    	}
    }
    

    3、代理IP获取方式

    访问 http://www.xicidaili.com/,可在该网站上爬取最新的高匿代理IP,保存到本地;当一个IP被屏蔽或获取连接超时时,取出下一个IP,当本地IP数不足时再重新爬取,以此类推。

    4、验证举例

    以网上在线投票系统为例,在PC端访问“投票吧”创建投票活动,设置为“相同IP不允许不能在30分钟内重复投票”,发布投票活动http://budwuv.v.vote8.cn。

    正常访问投票网站,核心代码如下: 

    HttpGet httpGet = new HttpGet("http://budwuv.v.vote8.cn");
    
    RequestConfig requestConfig = RequestConfig.custom()
    .setConnectTimeout(10000)//设置连接超时时间,单位毫秒
    .setSocketTimeout(10000)//设置读取超时时间,单位毫秒
    .build();
    
    httpGet.setConfig(requestConfig);
    //设置Http报文头信息
    httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
    CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求

     页面截图如下:

      在这里插入图片描述

      在这里插入图片描述

    用设置代理的方式重新访问该网站,核心代码如下:

    HttpGet httpGet = new HttpGet("http://budwuv.v.vote8.cn");
    
    //代理IP设置
    HttpHost httpHost = new HttpHost("112.87.68.95",9999);
    
    RequestConfig requestConfig = RequestConfig.custom()
    .setConnectTimeout(10000)//设置连接超时时间,单位毫秒
    .setSocketTimeout(10000)//设置读取超时时间,单位毫秒
    .setProxy(httpHost)//设置代理
    .build();
    
    httpGet.setConfig(requestConfig);
    //设置Http报文头信息
    httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
    
    CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求

    该页面可以正常投票,截图如下:

      在这里插入图片描述

    展开全文
  • Java TCP/IP Socket编程原书第2版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
  • Java中使用ip2region获取IP的地址

    千次阅读 2022-01-30 19:13:51
    ip2region是准确率很高的 ip 地址定位库,本文介绍在Java中使用ip2region获取IP的地址

    ip2region

    ip2region——准确率 99.9% 的 ip 地址定位库,0.0x 毫秒级查询,数据库文件大小只有 1.5M,提供了 java、php、c、python、node.js、golang 查询绑定和 Binary、B 树、内存三种查询算法。

    特点

    1. 99.9%准确率,定时更新:

    数据聚合了一些知名 ip 到地名查询提供商的数据,这些是他们官方的的准确率,经测试着实比纯真啥的准确多了。

    每次聚合一下数据需要 1-2 天,会不定时更新。

    2. 标准化的数据格式:

    每条 ip 数据段都固定了格式:城市Id|国家|区域|省份|城市|ISP

    只有中国的数据精确到了城市,其他国家只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的大大小小的国家。

    (请忽略前面的城市 Id,个人项目需求)

    3. 体积小:

    生成的数据库文件 ip2region.db 只有 1.5M (1.2 版本前 3.5M)

    4. 多查询客户端的支持,0.0x 毫秒级别的查询

    已经集成的客户端有:java, php, c,python,php扩展,nodejs,golang。

    使用

            依赖引入

            <!-- ip定位地址 -->
            <dependency>
                <groupId>org.lionsoul</groupId>
                <artifactId>ip2region</artifactId>
                <version>1.7</version>
            </dependency>

           下载IP库 ip2region.db

                    下载地址

    ip2region: 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,数据库文件大小只有1.5M,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法 - Gitee.comicon-default.png?t=M0H8https://gitee.com/lionsoul/ip2region/tree/master/data                下载解压后只需要 data 目录下的 ip2region.db 

     ip2region.db 可以复制到 resources 目录下( maven 项目)

    代码

        //获取ip所在地址
        public static String getAddressByIp(String ip) {
            try {
                //db
                URL url = ip2regionTest.class.getClassLoader().getResource("ip2region.db");
                String dbPath = url.getFile();
                File file = new File(url.getFile());
                if (file.exists() == false) {
                    System.out.println("Error: Invalid ip2region.db file");
                }
    
                //查询算法
                int algorithm = DbSearcher.BTREE_ALGORITHM; //B-tree
                //int algorithm = DbSearcher.BINARY_ALGORITHM; //Binary
                //int algorithm = DbSearcher.MEMORY_ALGORITYM; //Memory
                DbConfig config = new DbConfig();
                DbSearcher searcher = new DbSearcher(config, dbPath);
                //define the method
                Method method = null;
                switch (algorithm) {
                    case DbSearcher.BTREE_ALGORITHM:
                        method = searcher.getClass().getMethod("btreeSearch", String.class);
                        break;
                    case DbSearcher.BINARY_ALGORITHM:
                        method = searcher.getClass().getMethod("binarySearch", String.class);
                        break;
                    case DbSearcher.MEMORY_ALGORITYM:
                        method = searcher.getClass().getMethod("memorySearch", String.class);
                        break;
                }
                DataBlock dataBlock = null;
                if (Util.isIpAddress(ip) == false) {
                    System.out.println("Error: Invalid ip address");
                }
                dataBlock = (DataBlock) method.invoke(searcher, ip);
                //address格式:中国|0|广东省|深圳市|电信
                String address = dataBlock.getRegion();
                //下两行 防止截取报错 在本方法catch
                String[] splitIpString = address.split("\\|");
                String succ = splitIpString[4];
                return address;
            } catch (Exception e) {
                e.printStackTrace();
                return "fail";
            }
        }

     main方法调用

            ip为14.215.177.38。网上免费查询ip地址显示该ip是在广东省广州市且运营商是电信

        public static void main(String[] args) {
            String addressByIp = getAddressByIp("14.215.177.38");
            System.out.println(addressByIp);
        }

    结果:

     结果正确,该ip查询与网上查询一致

    展开全文
  • java拦截ip和限制ip访问接口的次数

    千次阅读 2019-05-31 17:40:54
    本文出自付付讶的博客 ... 这两天因为公司需求需要加一个限制ip请求次数的功能,限制某些ip一天只能访问10次,现在总结一下(因为是老项目所以用的是servlet) 用到的jar包:commons-lang3-3.8.1.jar 用到...
  • Java 设置代理IP 访问网络

    千次阅读 2017-11-09 11:32:24
    一. 工具准备 为了能够验证Java程序是否真的通过代理访问网络,还是准备一个代理工具:fiddler,很好的一个能监视http、...import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream;
  • Java实现Ip代理池

    千次阅读 2019-01-19 14:49:20
    设置Ip代理很多时候都会有用到,尤其是在写爬虫相关项目的时候。虽然自己目前没有接触这种需求,但由于最近比较闲,就写着当作练习吧 爬取代理IP 爬取 关于爬取代理IP,国内首先想到的网站当然是 西刺代理 。首先写...
  • Java获取真实Ip地址

    千次阅读 多人点赞 2021-09-09 16:59:56
    Java获取真实Ip地址
  • java中为ChromeDriver设置代理IP

    千次阅读 2018-10-05 13:57:43
    // 设置代理ip String ip = "ip:port"; options.addArguments("--proxy-server=http://" + ip); WebDriver driver = new ChromeDriver(options); driver.get("http://www...
  • Java通过方法实现IP格式校验

    千次阅读 2022-03-25 08:46:43
    Java通过方法实现IP格式校验 代码如下: * @auther baijiayi * @Date 2022/3/23 9:00 */ public class IPCheckTest { /** * Ip校验 * @param ipAddress 单个ip * @return */ public static boolean ...
  • java获取客户端IP地址工具类

    千次阅读 2021-11-01 15:19:15
    代码如下自取: import lombok.extern.slf4j.Slf4j; ... import java.net.InetAddress;... * @Title 获取客户端ip地址类 * @Author YangWanJie * @Date 2021/6/30 16:08 * @versioin V1.0 **/ @Slf
  • java 比较IP大小 & 判断IP是否在IP段内

    千次阅读 2019-05-14 16:39:01
    public class IpUtil { ... /*验证IP是否属于某个IP段 * * ipSection IP段(以'-'分隔) * ip 所验证的IP号码 * */ public static boolean ipExistsInRange(String ip,String ipSection) {...
  • java实现IP归属地查询

    千次阅读 2019-02-25 16:27:31
    IP归属地查询 使用ip-attribution.dat文件实现IP归属地查询。 import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java...
  • Java获取当前ip地址

    万次阅读 2019-05-13 21:41:05
    import java.net.Inet4Address; import java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressInUse { public static void main(String[] args){ ... InetAddress ip4 =...
  • java根据ip获取经纬度城市地址

    千次阅读 2019-12-01 22:35:51
    IP地理位置使用 IP地理定位本质上是不精确的。位置通常靠近人口中心。GeoIP数据库提供的任何位置均不得用于识别特定地址或家庭。 使用Accuracy Radius作为我们为IP地址返回的纬度和经度坐标的地理位置精度的指示。IP...
  • java中selenium设置chrome浏览器为开发者模式与IP代理前言代码 前言 之前为公司写了个爬虫项目,有时候为了绕过网站的反爬机制需要用到ip代理以及设置浏览器为开发者模式,看了一些selenium官方文档,没发现有具体...
  • public class IpUtils { public static String getIpAddr(HttpServletRequest request) { if (request == null) { return "unknown"; } String ip = request.getHeader("x-forwarded-for... if (ip == null || .
  • 1.通常安装完Ubuntu系统后,通过命令ifconfig获取到的IP都是动态的 (1)动态IP,重新启动系统后IP会变 (2)通过设置静态IP,从而...windows如果人为设置一个IP,就不会改变 2.Ubuntu修改静态IP过程如下 (1)先...
  • Java IP地址解析工具ip2region

    千次阅读 2022-04-10 16:21:44
    ip2region 一、介绍 在移动互联网的应用中,经常需要根据用户的位置信息等做一些用户侧信息的统计分析。而要拿到用户的位置信息,一般有两个方法: GPS 定位的信息和用户 IP 地址。由于每个手机都不一定会打开 GPS...
  • Java实现 对ip白名单的限制

    万次阅读 2018-11-07 09:30:11
    有些项目的接口是需要权限访问,比如限制IP、做权限控制,等等方案,本文是限制ip权限设置访问策略。 先看测试效果: 测试: 注意访问需要输入:http://127.0.0.1:8981/ 在配置文件加上本地的ip 10.9.160.135 ...
  • IP正则表达式 ^(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5]))).)(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5]))).){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))$ 事例 pub...
  • java根据ip地址获取用户地理位置

    万次阅读 2019-04-25 17:00:07
    工作项目需要,根据用户向服务器请求的ip地址获取用户所在的地理位置。 具体代码      话不多说,直接上代码(作为一个负责任的程序员,我把import内容都贴贴出来了): /** * FileName: ...
  • Java验证代理ip是否成功

    千次阅读 2020-05-27 15:33:51
    前几天抓一个网站我觉得频率不高没想到竟然被封ip了 于是乎搞了个代理继续抓 一开始抓免费的高匿ip用着得了,后来发现抓来的都是废品不能用 md,浪费时间 于是找了个付费获取代理ip网站 就不打广告了 有试用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 742,539
精华内容 297,015
关键字:

java设置ip

java 订阅