在阿里云上买的域名: *******.love

现在都是动态IP,每次IP变了就得从新在阿里云后台改。

用阿里云解析提供的接口,可以自动修改解析的IP。

思路是每次开机轮询IP是否变化,如果变化了,就按接口文档提供的格式,发一个post请求实现修改。这个修改会有几分钟的间隔才会生效。

这样在家开启这个程序,或者导出exe放启动文件里,开机启动。便可以实时更新域名对应的ip地址。

关键代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
import java.util.List;import com.aliyun.api.AliyunClient;
import com.aliyun.api.AliyunConstants;
import com.aliyun.api.DefaultAliyunClient;
import com.aliyun.api.dns.dns20150109.request.DescribeSubDomainRecordsRequest;
import com.aliyun.api.dns.dns20150109.request.UpdateDomainRecordRequest;
import com.aliyun.api.dns.dns20150109.response.DescribeSubDomainRecordsResponse;
import com.aliyun.api.dns.dns20150109.response.UpdateDomainRecordResponse;
import com.aliyun.api.domain.Record;public class DemoListDomains {private static AliyunClient client;static {String serverUrl = "http://dns.aliyuncs.com/";String accessKeyId = "yourId";String accessKeySecret = "yourSecret";client = new DefaultAliyunClient(serverUrl, accessKeyId, accessKeySecret, AliyunConstants.FORMAT_JSON);}public static void main(String[] args) {while(true){try {// 获取域名信息DescribeSubDomainRecordsRequest ddi_req = new DescribeSubDomainRecordsRequest();ddi_req.setTimestamp(new Date().getTime());DescribeSubDomainRecordsResponse ddi_resp = new DescribeSubDomainRecordsResponse();ddi_req.setSubDomain("your域名");ddi_resp = client.execute(ddi_req);List<Record> list = ddi_resp.getDomainRecords();boolean changed = false;for (Record record : list) {String ip = getMyIPOutter();// 获得本机公网IPSystem.out.println("old_ip : " + record.getValue());System.out.println("outter_ip : " + ip);if (!ip.equals(record.getValue())) {// 根据传入参数修改解析记录UpdateDomainRecordRequest udr_req = new UpdateDomainRecordRequest();udr_req.setTimestamp(new Date().getTime());udr_req.setRecordId(record.getRecordId());udr_req.setrR(record.getrR());udr_req.setValue(ip);udr_req.setType(record.getType());udr_req.settTL(record.gettTL());udr_req.setPriority(record.getPriority());udr_req.setLine(record.getLine());UpdateDomainRecordResponse udr_resp = new UpdateDomainRecordResponse();udr_resp = client.execute(udr_req);if (udr_resp.getErrorCode() == null) {System.out.println("success");changed = true;} else {System.out.println("error");}}}if (!changed) {System.out.println("need not change");}} catch (Exception e) {e.printStackTrace();System.out.println("error");}try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}}}private static String getMyIPOutter() throws IOException {InputStream ins = null;try {URL url = new URL("http://1212.ip138.com/ic.asp");URLConnection con = url.openConnection();ins = con.getInputStream();InputStreamReader isReader = new InputStreamReader(ins, "GB2312");BufferedReader bReader = new BufferedReader(isReader);StringBuffer webContent = new StringBuffer();String str = null;while ((str = bReader.readLine()) != null) {if (str.contains("您的IP是:[")) {webContent.append(str);break;}}int start = webContent.indexOf("[") + 1;int end = webContent.indexOf("]");return webContent.substring(start, end);} finally {if (ins != null) {ins.close();}}}@SuppressWarnings("unused")private static String getMyIPLocal() throws IOException {InetAddress ia = InetAddress.getLocalHost();return ia.getHostAddress();}
}

效果:

需要导入两个jar:一个阿里云官方的sdk,一个commons-logging-1.2.jar

阿里云解析动态公网IP相关推荐

  1. flask部署阿里云服务器,公网ip访问不了(一些问题及解答)

    flask部署阿里云服务器,公网ip访问不了(新手踩坑之路) 好朋友,你是不是一个后端初学者?相信到目前为止,你已经拥有一定的后端基础,在发现单机本地的后端开发已经无法满足你,于是你刚买一个云服务器. ...

  2. 阿里云服务器的公网ip访问不到的问题

    原因分析 今天搭载了一台阿里云服务器,迅速搭载了一套LAMP,但是使用给定的公网ip并不能直接访问到自己的服务器页面,四处检查确认配置没有问题,且ICAM在本机可以ping通服务器,最终找到了原因 进 ...

  3. 阿里云相关-弹性公网IP

    1.弹性公网IP定义 EIP(Elastic IP Address)是可以独立购买和持有的公网IP地址资源.可以绑定专有网络类型的ECS实例.专有网络类型的私网SLB实例.专有网络类型的辅助弹性网卡. ...

  4. ping不通阿里云服务器的公网ip的解决

    买了1年的阿里云的服务器,但是舍友ping我的公网ip时候,发现ping不通,一直显示的是请求超时.我自己在阿里云的管理控制台页面,输入了centos7的root账户和实例的登录密码,是可以进了cen ...

  5. 阿里云服务器没有公网IP

    ECS服务器在购买时没有选择分配公网IP,原因是按流量计费的带宽默认是0M,没有改. 有两种方式解决,一种是弹性IP,但是要付费. 第二种是升降配,更改ECS的配置,带宽那里调整带宽.不付费. 很明显 ...

  6. 家庭宽带 动态公网IP,使用腾讯云DDNS实现实时更新DNS解析记录

    解决DDNS问题 动态公网IP 环境说明: 我是家庭宽带 只能申请到动态的公网ip,好处是不花钱,弊端是每次重启光猫,都会重新获取一个新的公网IP 为解决此办法,我尝试了很多个DDNS的方案. 包括但 ...

  7. 阿里云域名 动态ip绑定 python方案

    阿里云域名 动态ip绑定 python方案 一.配置config.json 二.代码 三.打包执行 思路:阿里云提供dns域名解析api,查出外网ip,定时更新域名解析. 一.配置config.jso ...

  8. 阿里云DNS动态解析:解决内网服务外网访问

    阿里云DNS动态解析:解决内网服务外网访问 目录 注册阿里云账号获取AccessKeyId,AccessKeySecret并授权 阿里云关于DNS解析的SDK及API文档 代码实现 目录 注册阿里云账 ...

  9. 腾讯云+动态公网IP+黑裙

    腾讯云+动态公网IP+黑裙 文章目录 确定是否为公网IP 腾讯云的申请和操作 路由的操作 NAS的操作 SSL的操作 文章目录 确定是否为公网IP 1)点击链接 http://www.net.cn/s ...

最新文章

  1. Java常见面试题(持续更新)
  2. java log 封装_工具类之LogUtils
  3. java填空题 在非静态成员方法中_Java学习(四): 类的使用
  4. SSM综合练习表结构介绍
  5. ant文件放在ps的哪里_ant design vue按需导入icons
  6. sql 计算两个小数乘积_数学篇|学会这些数学计算技巧,想不满分都难!
  7. windows dc linux,active-directory – Linux AD集成,使用Windows Server 2012 DC时无法登录
  8. linux资源管理器编写,Linux系统资源管理器.doc
  9. 不会写代码也可以, 手把手教你制作炫酷生日祝福网页(程序员专属情人节表白网站)
  10. FileUtils(文件读写操作工具类)
  11. matlab前馈仿真,前馈-反馈控制系统的具体分析及其MATLAB/Simulink.PDF
  12. win10如何删除计算机用户,Win10系统如何删除账户?Win10系统删除账户的方法
  13. 英特尔最新超级计算机,全球超级计算机500强三分之二使用英特尔的处理器
  14. 数字验证的正则表达式
  15. 国产操作系统调研 -- 银河麒麟4.0.2
  16. 基于FPGA的HDMI显示(二)
  17. mvc直接在html页面预览pdf,Asp.net MVC 实现在线预览word、excel、ppt、pdf文件
  18. 实现rsyslog外发
  19. Axure中怎么画斜线和波浪曲线?
  20. 电销外呼系统主要有哪些作用?

热门文章

  1. linux系统外接硬盘_外置usb硬盘安装Ubuntu即插即用配置
  2. 【VB脚本备忘】【for PPT】规范表格格式(含OFFICE内置编辑器BUG描述)
  3. clickhouse查询NaN使用isNaN函数处理
  4. 浙江最新食品安全管理员证考试题库及答案
  5. html标签video资源占用,使用HTML5 video标签的一系列问题
  6. excel下拉序号变为1
  7. Shiro框架的简介
  8. 域名 IP 对应关系
  9. ThinkPHP6 批量字段查询
  10. SegmentFault 隐藏技能之发家致富篇:回答赞赏 讲座佣金