我是靠谱客的博主 矮小高跟鞋,这篇文章主要介绍阿里云解析动态公网IP,现在分享给大家,希望可以做个参考。

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

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

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

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

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


关键代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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();// 获得本机公网IP System.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的全部内容,更多相关阿里云解析动态公网IP内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部