最近爬虫项目中被封,服务器上绑定了多个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 或者点击 微儿博客
相关推荐
Java获取Linux服务器上的IP操作 Java获取Linux服务器上的IP操作是Java开发中的一项重要任务。然而,在Linux服务器上获取IP地址却存在一些问题。在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux...
在IT领域,了解和获取本机IP地址以及外网IP地址是常见的需求,尤其是在网络编程、服务器配置或者网络诊断中。下面将详细解释这两个概念及其获取方法。 首先,我们要理解什么是"本机IP"和"外网IP"。 1. 本机IP...
该程序的核心目标是实现邮件主机自动检测其内网IP和外网IP,并将这些信息定时发送至指定的邮箱地址,以便于用户监控网络环境的变化。这个功能在远程办公、服务器管理、网络安全监控等多个场景中非常实用。下面我们将...
在VMware中配置Linux系统以实现局域网和外网访问是每个Linux用户的基本技能,尤其是对于初学者来说,这一步至关重要。以下是一份详细的步骤指南,帮助您完成这一过程。 首先,确保您的VMware虚拟机已经安装了Linux...
- 再次尝试从外网访问Tomcat:`http://[Linux IP地址]:8080`。 #### 四、总结 通过以上步骤,我们已经在Linux环境中成功配置了Java运行环境并部署了Tomcat服务器。这对于初学者来说是一个很好的实践过程,有助于...
阿里云服务器安装配置Tomcat以及添加外网访问端口的完整流程可以分为几个关键步骤,涉及到的IT知识点包括Java环境的配置、Tomcat的安装和配置、安全组规则的设置以及端口映射和防火墙操作。下面将详细介绍这些步骤及...
### Java实现SNMP获取OID值:深入解析与代码示例 #### SNMP协议简介与OID概念 简单网络管理协议(SNMP)是一种应用层协议,用于收集和组织有关网络设备的信息,如路由器、交换机和服务器等,并对其进行管理。SNMP...
- **外网IP**:当应用通过Internet连接到Web服务,返回的IP应该是客户端的公共(外网)IP,这是其他网络用户能看到的IP地址。 5. **Flex代码示例**: 在Flex应用中,你可以使用`URLLoader`类来发送HTTP请求并接收...
21. **压缩和解压,以及Java网络编程**:介绍了在Linux下进行文件压缩和解压的工具,如gzip、tar等,并讲解了Java在Linux环境下的网络编程。 以上就是Linux开发技术的初步学习内容,通过这一系列教程,初学者可以...
如果要在Linux或MacOS环境下运行,需要替换相应的命令或使用跨平台的方法(例如使用Java的`NetworkInterface`类)。 2. **安全性和权限问题**: - 在实际应用中,直接执行系统命令可能会带来安全风险。此外,在...
除了命令行方式外,还可以通过编程语言(如Java)来获取Linux系统的IP地址。以下是一个简单的示例代码: ```java public static String getLinuxLocalIp() throws SocketException { String ip = ""; try { for ...
这段配置设置了一个名为"SYSLOG"的appender,将日志发送到指定的syslog服务器,使用`LOCAL0`设施,并添加了应用名称作为标签。 如果你选择使用`java.util.logging`,可以创建一个`Handler`来实现syslog日志发送: ...
"Android获取实时连接热点的设备IP" Android获取实时连接热点的设备IP是指在Android系统中获取当前热点连接的设备IP地址的相关技术。主要涉及到Android系统中获取Wifi热点设备的Ip地址的代码实现。 知识点一:/...
例如,你可以指定绑定的IP地址,端口号,以及是否允许外网访问。 Elasticsearch与Kibana、Logstash和Beats等工具配合使用,构成了著名的ELK(Elasticsearch, Logstash, Kibana)堆栈。Logstash负责收集、解析和转换...
这个函数通过创建一个UDP套接字并连接到Google的DNS服务器(8.8.8.8),然后获取套接字的本地地址,从而得到本机的外网IP。如果只想获取内网IP,可以省略连接步骤,直接查询本地接口。 在Java中,可以使用`java.net...
总的来说,Linux下Weblogic 9的集群配置是一个复杂但至关重要的过程,需要对网络、操作系统、Web服务器和Java EE概念有深入理解。正确的配置能大大提高服务的可用性和性能,同时降低单点故障的风险,确保业务的连续...
第6章:简要的介绍了一下TCP/IP协议在Windows和LINUX操作系统下的实现原理TCP/IP协议的二进制代码。 下篇包含以下6章内容: 第7章:介绍了网络程序设计有关的基础知识、一个网络程序入门实例和Winsock中编写网络程序...
7. **API和SDK支持**:Nacos提供了丰富的Java API和客户端SDK,使得开发者可以轻松集成到自己的应用中,进行服务注册、配置变更监听等操作。 8. **监控与健康检查**:Nacos内置了健康检查机制,能够实时监控服务...
【阿里云Linux启动Tomcat并实现外网访问】 在阿里云上部署Java应用程序时,通常会使用Apache Tomcat作为应用服务器。这篇指南将详细介绍如何在阿里云Linux服务器上启动Tomcat,并配置使其能够被外网访问。以下是...
NAT模式下,虚拟机可以访问外网但不能与其他物理主机通信,这种方式不会造成IP冲突。主机模式则使虚拟机成为一个独立的主机,无法访问外网。 在安装虚拟机和CentOS系统的具体步骤中,首先要进入BIOS设置虚拟化,...