java设置Linux外网出口ip

最近爬虫项目中被封,服务器上绑定了多个ip,就想着怎样才能把多个ip都利用起来,想过设置成代理服务器的想法,但是由于某些原因放弃,所以采用动态改变服务器出口ip的方式将多个ip利用起来。

首先获取服务器绑定的ip

public static void getLocalIps(){
	try {
        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = en.nextElement();
            String name = intf.getName();
            if (!name.contains("docker") && !name.contains("lo")) {
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) {
                        String ipaddress = inetAddress.getHostAddress().toString();
                        if (!ipaddress.contains("::") && !ipaddress.contains("0:0:") && !ipaddress.contains("fe80")) {
                            localIps.add(ipaddress);
                        }
                    }
                }
            }
        }
    } catch (SocketException ex) {
        System.out.println("获取ip地址异常");
        ex.printStackTrace();
    }
}

编写切换linux出口ip的脚本

#!/bin/sh
iptables -t nat -I POSTROUTING -o eth0 -d 0.0.0.0/0 -s 192.168.0.1 -j SNAT --to-source $1

使用java调用shell脚本,切换出口ip

public static void setOutIp(){
    for (String ip : localIps) {
        try {
            Runtime.getRuntime().exec(ApplicationConfig.prop.getProperty("ipshell")+" "+ip);
            logger.info("设置出口ip:"+ip);
            if(checkIpCanUsed(null, null)){//查看ip是否可用
                return;
            }
        } catch (IOException e) {
            logger.error(e.getMessage());
        }
    }
}

附:查看linux出口ip的方法

curl icanhazip.com
curl ifconfig.me
curl curlmyip.com
curl ip.appspot.com
curl ipinfo.io/ip
curl ipecho.net/plain
curl www.trackip.net/i

本文由微儿博客原创,博客地址:www.weare.net.cn 或者点击 微儿博客

时间: 2024-10-14 00:18:37

java设置Linux外网出口ip的相关文章

查看外网出口IP &amp;&amp; Traceroute

一.CentOS 查看外网出口IP 1---------------- # curl ifconfig.me 2----------------# curl icanhazip.com 二.Traceroute最简单的基本用法是:traceroute hostname Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field).首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括

在虚拟机发布网站,设置服务器外网访问ip端口号

这是虚机上的发布网站的网站端口号 这一步要在实机设置 做完这一步,在外网就可以访问你刚刚发布的站点了

linux下查看外网出口IP

一. [[email protected] ~]# curl ifconfig.me124.193.193.25 [[email protected] ~]# curl ifconfig.me/allip_addr: 124.193.193.25remote_host: user_agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.1 Basic ECC zlib/1.2.3 libidn/1.18 libss

java 获取公网(外网IP)很实用!

package com.lovo.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class PublicInterIp { /** * @param args * @throws Exception */ public S

Linux下如何知道自己外网的IP

大家都清楚,windows下,可以在百度里面直接查到外网的IP地址信息,但是Linux命令行下如何操作了. 在命令行下做了下测试,结果如下: [email protected]:[/home/zhang3]curl ifconfig.sh 183.129.141.155 [email protected]:[/home/zhang3]curl http://iframe.ip138.com/ic.asp <head><title>Object moved</title>

Mysql设置允许外网访问(图文)

Mysql设置允许外网访问(图文) 1.打开mysql.exe(MySQL Command Line Client),输入密码 2.输入:use mysql; 3.查询host输入: select user,host from user; 4.创建host(如果有"%"这个host值,则跳过这一步) 如果没有"%"这个host值,就执行下面这两句:mysql> update user set host='%' where user='root';mysql&g

获得客户端内网、外网的ip

1.获得外网的ip代码 function get_online_ip() { $onlineip = ''; if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HT

外网固定IP如何访问后台--haproxy

外网固定IP访问后台 在负载均衡haproxy的配置文件中加上以下一条acl即可 #acl trust_network src 10.0.0.0/8 需要访问后台的人就可以通过10.0.0.0/8 这台服务器访问后台

苹果iphone8plus***怎么设置上外网免费推荐国外iphone8plus***×××设置方法流

苹果iphone8plus***怎么设置上外网免费推荐国外iphone8plus***×××设置方法流程 苹果iphone8plus及以上版本已经下架了或者取消了×××功能,所以您需要购买×××服务,下载IOS专用加速器 国外***推荐地址请添加链接描述:点击查看请添加链接描述 国外***推荐备用地址1请添加链接描述 国外***推荐备用地址2资源分享交流群QQ群:513265050 国内××× 几乎全部沦陷,即使有也会被封杀或者存在跑路风险.大家不要在费力寻找新的软件,大多不会存活多久,建议直接