阿里云域名动态解析

前景说明:

你有一个阿里云的域名,想让它解析到你家用宽带动态ip上。

解决思路:

1、定时查看宽带的ip;

2、发现变化时,通过阿里云提供的sdk修改域名解析。

一、阿里云控制台创建AccessKey

官方文档:创建阿里云AccessKey_访问控制(RAM)-阿里云帮助中心 (aliyun.com)

二、阿里云 云解析

官方文档:云解析_SDK中心-阿里云OpenAPI开发者门户 (aliyun.com)

官方接口:UpdateDomainRecord_云解析_API调试-阿里云OpenAPI开发者门户 (aliyun.com)

DescribeDomainRecordInfo_云解析_API调试-阿里云OpenAPI开发者门户

三、上代码

1、pom.xml引包
   <dependencies><dependency><groupId>com.aliyun</groupId><artifactId>alidns20150109</artifactId><version>3.1.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>credentials-java</artifactId><version>0.3.0</version></dependency></dependencies>
2、获取外网ip的方法
package com.chhuang;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
import java.util.regex.Pattern;public class ExternalIPUtil {/*** IP 地址校验的正则表达式*/private static final Pattern IPV4_PATTERN = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");/*** 获取 IP 地址的服务列表*/private static final String[] IPV4_SERVICES = {"http://checkip.amazonaws.com/","https://ipv4.icanhazip.com/","http://bot.whatismyipaddress.com/"// and so on ...};//    线程池的 ExecutorService.invokeAny(callables) 方法用于并发执行多个线程,并拿到最快的执行成功的线程的返回值,
//    只要有一个执行成功,其他失败的任务都会忽略。但是如果全部失败,
//    例如本机根本就没有连外网,那么就会抛出 ExecutionException 异常。public static String get() throws ExecutionException, InterruptedException {List<Callable<String>> callables = new ArrayList<>();for (String ipService : IPV4_SERVICES) {callables.add(() -> get(ipService));}ExecutorService executorService = Executors.newCachedThreadPool();try {// 返回第一个成功获取的 IPreturn executorService.invokeAny(callables);} finally {executorService.shutdown();}}private static String get(String url) throws IOException {try (BufferedReader in = new BufferedReader(new InputStreamReader(new URL(url).openStream()))) {String ip = in.readLine();if (IPV4_PATTERN.matcher(ip).matches()) {return ip;} else {throw new IOException("invalid IPv4 address: " + ip);}}}
}
3、使用云解析
package com.chhuang;import com.aliyun.alidns20150109.Client;
import com.aliyun.alidns20150109.models.DescribeDomainRecordInfoRequest;
import com.aliyun.alidns20150109.models.DescribeDomainRecordInfoResponse;
import com.aliyun.alidns20150109.models.UpdateDomainRecordRequest;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.Common;
import com.aliyun.teautil.models.RuntimeOptions;import java.util.Random;/*** Hello world!**/
public class App {private static final String APP_ALIBABA_ID = "你自己的ALIBABA_CLOUD_ACCESS_KEY_ID";private static final String SECURITY_ALIBABA_KEY = "你自己的ALIBABA_CLOUD_ACCESS_KEY_SECRET";/*** 使用AK&SK初始化账号Client* @return Client* @throws Exception*/public static Client createClient() throws Exception {// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。Config config = new Config().setAccessKeyId(APP_ALIBABA_ID).setAccessKeySecret(SECURITY_ALIBABA_KEY);// Endpoint 请参考 https://api.aliyun.com/product/Alidnsconfig.endpoint = "alidns.cn-hangzhou.aliyuncs.com";return new Client(config);}public static void main( String[] args ) throws Exception {while (true) {Random random = new Random();Thread.sleep((random.nextInt(600) + 600) * 1000);// 获取外网ipString ip = ExternalIPUtil.get();System.out.println("ip=" + ip);// 更新域名解析updateDomain(ip);}}private static void updateDomain(String ip) throws Exception {Client client = App.createClient();// 获取解析记录的详细信息DescribeDomainRecordInfoRequest describeDomainRecordInfoRequest = new DescribeDomainRecordInfoRequest().setRecordId("你自己域名解析记录的recordId");RuntimeOptions runtime = new RuntimeOptions();try {// 复制代码运行请自行打印 API 的返回值DescribeDomainRecordInfoResponse response = client.describeDomainRecordInfoWithOptions(describeDomainRecordInfoRequest, runtime);String value = response.getBody().getValue();// 判断 ip 是否需要修改if (!ip.equals(value)) {UpdateDomainRecordRequest updateDomainRecordRequest = new UpdateDomainRecordRequest().setRecordId("你自己域名解析记录的recordId") // 通过阿里云后台,DescribeDomainRecords 获取解析记录.setRR("www").setType("A").setValue(ip).setTTL(600L);// 复制代码运行请自行打印 API 的返回值client.updateDomainRecordWithOptions(updateDomainRecordRequest, runtime);}} catch (TeaException error) {// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。// 错误 messageerror.printStackTrace();// 诊断地址System.out.println(error.getData().get("Recommend"));Common.assertAsString(error.message);} catch (Exception _error) {_error.printStackTrace();TeaException error = new TeaException(_error.getMessage(), _error);// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。// 诊断地址System.out.println(error.getData().get("Recommend"));Common.assertAsString(error.message);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能合约:概念与特点(了解什么是智能合约以及它的特点,如自动执行、不可篡改和可信任)

1.自动执行 智能合约通过预定义的代码和规则&#xff0c;在满足特定条件时自动执行。无需第三方介入&#xff0c;合约中的操作将在预定条件满足时自动触发。 2.不可篡改 智能合约的代码一旦部署在区块链上&#xff0c;便不可更改。这意味着合约一旦被创建&#xff0c;其中的规则…

DS进阶:AVL树和红黑树

一、AVL树 1.1 AVL树的概念 二叉搜索树&#xff08;BST&#xff09;虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-…

Spring Security mybatis nginx等组件预防注入攻击

防止注入攻击&#xff0c;特别是SQL注入&#xff0c;是保证应用程序安全的关键任务之一。在使用Spring Security、MyBatis和Nginx的技术栈中&#xff0c;可以通过多个层面的防护措施来确保应用的安全性。下面是各个组件在防止注入攻击方面可以采取的措施&#xff1a; 1. MyBat…

网站安全方案

1、网络入口层安全 防火墙配置 防火墙作为防御网络不良流量的第一道屏障&#xff0c;其配置和管理应符合以下策略&#xff1a; 定义全面的安全策略&#xff1a;详细定义哪些流量是合法的&#xff0c;哪些应被阻止&#xff0c;考虑到不同业务线的需求&#xff0c;如电子商务平台…

easyx库的学习(鼠标信息)

前言 本次博客是作为介绍easyx库的使用&#xff0c;最好是直接代码打到底&#xff0c;然后看效果即可 代码 int main() {initgraph(640, 480, EX_SHOWCONSOLE|EX_DBLCLKS);setbkcolor(RGB(231, 114, 227));cleardevice();//定义消息结构体ExMessage msg { 0 };//获取消息wh…

大语言模型微调过程中的 RLHF 和 RLAIF 有什么区别?

目前想要深入挖掘大型语言模型&#xff08;LLM&#xff09;的全部潜力需要模型与我们人类的目标和偏好保持一致。从而出现了两种方法&#xff1a;来自人类反馈的人力强化学习&#xff08;RLHF&#xff09;和来自人工智能反馈的人工智能驱动的强化学习&#xff08;RLAIF&#xf…

FPGA秋招-笔记整理(1)

一、关键路径 关键路径通常是指同步逻辑电路中&#xff0c;组合逻辑时延最大的路径&#xff08;这里我认为还需要加上布线的延迟&#xff09;&#xff0c;也就是说关键路径是对设计性能起决定性影响的时序路径。也就是静态时序报告中WNS&#xff08;Worst Nagative Slack&…

如何从架构层面降低公有云多可用区同时故障的概率

阿里云和腾讯云都曾出现过因一个组件故障而导致所有可用区同时瘫痪的情况。本文将探讨如何从架构设计的角度减小故障域&#xff0c;在故障发生时最小化业务损失&#xff0c;并以 Sealos 的稳定性实践为例&#xff0c;分享经验教训。 抛弃主从&#xff0c;拥抱点对点架构 从腾…

Linux之yum和vim的使用

一、yum的使用 yum 后面跟install要安装的文件名&#xff1a; 若你要安装的文件已经存在&#xff0c;则会出现&#xff1a; 要删除文件&#xff1a; yum remore文件名即可删除 在我们安装完lrzsz之后&#xff0c;可以用rz指令和sz指令&#xff1a; rz指令可以从window窗口中…

鸿蒙OpenHarmony【小型系统运行案例】 (基于Hi3516开发板)

运行 启动系统 在完成Hi3516DV300的烧录后&#xff0c;还需要设置BootLoader引导程序&#xff0c;才能运行OpenHarmony系统。 在Hi3516DV300任务中&#xff0c;单击Configure bootloader&#xff08;Boot OS&#xff09;进行配置即可。 说明&#xff1a; DevEco Device Tool…

MT8788智能模块简介_MTK联发科安卓核心板方案厂商

MT8788安卓核心板是一款具备超高性能和低功耗的4G全网通安卓智能模块。该模块采用联发科AIOT芯片平台&#xff0c;供货周期长。 MT8788核心板搭载了12nm制程的四个Cortex-A73处理器核心和四个Cortex-A53处理器核心&#xff0c;最高主频可达2.0GHz。板载内存容量可选为4GB64GB(也…

《系统架构设计师教程(第2版)》第15章-面向服务架构设计理论与实践-05-SOA设计模式

文章目录 1. 服务注册表模式1.1 服务注册表1.2 SOA治理功能1.3 注册表中的配置文件 2. 企业服务总线&#xff08;ESB&#xff09;模式3. Synchro ESB3. 微服务模式3.1 概述3.2 微服务架构模式方案3.2.1 聚合器微服务1&#xff09;概述2&#xff09;几种特殊的聚合微服务 3.2.2 …

OceanBase OLAP collation utf8mb4_bin 优先

在大数据系统中&#xff0c;如无特别需要&#xff0c;建议 collation 指定为 utf8mb4_bin。 utf8mb4_bin是一种二进制的排序规则&#xff0c;比较字符串时直接比较字符串的二进制值&#xff0c;不需要进行复杂的字符比较和排序运算&#xff0c;这样可以有效减少CPU的使用&…

.NET高级面试指南专题二十八【模板模式介绍,通过共享对象来最大程度地减少内存使用和提高性能】

模板模式是一种行为设计模式&#xff0c;它定义了一个算法的框架&#xff0c;将算法的具体步骤延迟到子类中实现。模板模式通过将共同的行为封装在一个模板方法中&#xff0c;并允许子类重写特定步骤的行为来实现算法的不同变体。 下面是模板模式的一些优点和缺点&#xff1a; …

Ubuntu20.04安装redis5.0.7

redis下载命令&#xff1a; wget https://download.redis.io/releases/redis-5.0.7.tar.gz 解压到 opt目录下 tar -zxvf redis-5.0.7.tar.gz -C /opt apt install -y gcc # 安装gccapt install make # 安装make 后面执行make一直报错 make报错后清除&#xff1a; make …

parallels desktop19.3最新版本软件新功能详细介绍

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件&#xff0c;它允许用户在Mac系统上同时运行多个操作系统&#xff0c;比如Windows、Linux等。通过这款软件&#xff0c;Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序&#xff0c;而无需额外的硬件设备…

分布式与一致性协议之拜占庭将军问题(三)

拜占庭将军问题 叛将先发送消息 如果是叛将楚先发送作战消息&#xff0c;干扰作战计划&#xff0c;结果会有所不同吗&#xff1f; 在第一轮作战信息协商中&#xff0c;楚向苏秦发送作战指令"进攻",向齐、燕发送作战指令"撤退"&#xff0c;如图所示(当然还…

腾讯云向量数据库-RAG介绍2

1.chunk拆分对最终效果的影响 2.改进知识的拆分方案 3.AI套件 4.相似性检索的关键&#xff1a;embedding技术 嵌入技术是相似性检索的关键&#xff0c;它能够将数据转换为向量表示&#xff0c;并通过比较向量之间的相似性来实现相似性检索&#xff1b;embedding&#xff1a;将…

Jackson 2.x 系列【30】Spring Boot 集成之数据脱敏

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 概述2. 实现思路3. 案例演示3.1 脱敏规则3.2 自…

解决VSCode中“#include错误,请更新includePath“问题

目录 1、问题原因 2、解决办法 1、问题原因 在编写C程序时&#xff0c;想引用头文件但是出现如下提示&#xff1a; &#xff08;1&#xff09;首先检查要引用的头文件是否存在&#xff0c;位于哪里。 &#xff08;2&#xff09;如果头文件存在&#xff0c;在编译时提醒VSCo…