阿里云修改域名模板-java 动态修改阿里云域名解析,用于解决家用宽带公网ip经常变动问题

需要有Java、Maven、Springboot、阿里域名使用经验阿里云修改域名模板,并拥有域名

pom 文件

阿里云域名信息修改_阿里的域名怎么改_阿里云修改域名模板


    4.0.0
    com.binz
    update-domain-ip
    0.0.1-SNAPSHOT
    jar
    update-domain-ip
    动态绑定ip到域名
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.0.RELEASE
    
    
        UTF-8
        UTF-8
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter
        
        
            com.aliyun
            aliyun-java-sdk-alidns
            2.0.7
        
        
            com.aliyun
            aliyun-java-sdk-core
            4.1.1
        
        
        
            cn.hutool
            hutool-http
            5.3.5
        
    
    
        update-domain-ip
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

java代码:UpdateDoaminIpStarted

阿里云域名信息修改_阿里云修改域名模板_阿里的域名怎么改

package com.binz;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.alidns.model.v20150109.DescribeSubDomainRecordsRequest;
import com.aliyuncs.alidns.model.v20150109.DescribeSubDomainRecordsResponse;
import com.aliyuncs.alidns.model.v20150109.DescribeSubDomainRecordsResponse.Record;
import com.aliyuncs.alidns.model.v20150109.UpdateDomainRecordRequest;
import com.aliyuncs.alidns.model.v20150109.UpdateDomainRecordResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import cn.hutool.http.HttpUtil;
@EnableScheduling
@SpringBootApplication
public class UpdateDoaminIpStarted {
    public static final String ACCESS_KEY_ID = "";//需要去阿里控制台 》 AccessKey管理 获取  
    public static final String ACCESS_KEY_SECRET = "";//需要去阿里控制台 》 AccessKey管理 获取 
    public static final String REGION_ID = "cn-hanghou";
    public static final String DOMIAN = "baidu.com";//域名  xxxx.com
    public static final Map UPDATE_DOMIANS;//需要修改的域名
    private static String CURRENT_IP = null;
    private static IAcsClient client = null;
    
    static {
        UPDATE_DOMIANS = new HashMap();
        UPDATE_DOMIANS.put("baidu.com", null);//根路径
        UPDATE_DOMIANS.put("mobile.baidu.com", null);
        UPDATE_DOMIANS.put("www.baidu.com", null);
        try {
            DefaultProfile.addEndpoint(REGION_ID,REGION_ID, "Alidns","alidns.aliyuncs.com");
        } catch (ClientException e) {
            e.printStackTrace();
        }
        IClientProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
        client = new DefaultAcsClient(profile);
    }
    
    public static Record getSubDomainRecord(String subDomain) {
        DescribeSubDomainRecordsRequest request = new DescribeSubDomainRecordsRequest();
        DescribeSubDomainRecordsResponse response;
        request.setSubDomain(subDomain);
        try {
            response = client.getAcsResponse(request);
            List domainRecords = response.getDomainRecords();
            // {RR=mobile, recordId=4031722341639808, line=default, domainName=baidu.com,
            return domainRecords.get(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    private static String pingAndGetIp() {
        try {
            Set keySet = UPDATE_DOMIANS.keySet();
            Process process = Runtime.getRuntime().exec("ping "+ keySet.toArray()[0]);
            InputStream inputStream = process.getInputStream();
            InputStreamReader reader=new InputStreamReader(inputStream,"gbk");
            BufferedReader reader2=new BufferedReader(reader);
            String readLine =null;
            int i=0;
            while((readLine= reader2.readLine())!=null && i== 0) {
                if(readLine.indexOf("(") != -1){
                    readLine =readLine.substring(readLine.indexOf("(")+1, readLine.indexOf(")"));
                    break;
                }
            }
            process.destroyForcibly();
            return readLine;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static void updateDomainIp() {
        String ip = getIp();
        if(CURRENT_IP == null) {
            CURRENT_IP = pingAndGetIp();
        }
        System.out.println("oldIp:"+CURRENT_IP+",newIp:"+ip);
        if(!ip.equals(CURRENT_IP)) {
            UpdateDomainRecordRequest request;
            UpdateDomainRecordResponse response;
            String aa = "";
            for (String updateDomian : UPDATE_DOMIANS.keySet()) {
                if(UPDATE_DOMIANS.get(updateDomian) == null) {
                    UPDATE_DOMIANS.put(updateDomian, getSubDomainRecord(updateDomian).getRecordId());
                }
                aa = updateDomian.replaceAll(DOMIAN, "").equals("") ? "@" : updateDomian.replaceAll("."+DOMIAN, "");
                request = new UpdateDomainRecordRequest();
                request.setRecordId(UPDATE_DOMIANS.get(updateDomian));
                request.setRR(aa);
                request.setType("A");
                request.setValue(ip);
                try {
                    response = client.getAcsResponse(request);
                    System.out.println("成功把"+updateDomian+"的域名的ip解析成"+ip+",历史ip为:"+CURRENT_IP);
                    System.out.println(response.getRequestId());
                } catch (ServerException e) {
                    e.printStackTrace();
                } catch (ClientException e) {
                    e.printStackTrace();
                }
            }
            
        }
    }
    public static String getIp() {
        String ip =  HttpUtil.get("http://ip.3322.net");
        return ip;
    }
    
    /**
     * 3分钟一次
     */
    @Scheduled(cron = "0 */3 * * * *")
    public void scheduled() {
        UpdateDoaminIpStarted.updateDomainIp();
    }
    public static void main(String[] args) {
//        updateDomainIp();//直接执行
        SpringApplication.run(UpdateDoaminIpStarted.class, args); //boot运行方式
    }
}

阿里的域名怎么改_阿里云域名信息修改_阿里云修改域名模板

maven打包后,在内网运行java -jarupdate-domain-ip.jar即可。 只要外网IP改变,它就会改变。 每 3 分钟扫描一次。 对于时效性要求较高的阿里云修改域名模板,可以提高扫描速度。 频率

阿里云域名信息修改_阿里的域名怎么改_阿里云修改域名模板

外部网络需要通过域名来访问。 IP改变也没关系。 无论如何,你只关心域名。