
官方推荐的两个工具,一个依赖于 perl ,我懒得装 perl 。另一个在 windows 上编译不过去。于是我就干脆随手拿 java 撸了一个。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.net.MalformedURLException; import java.net.Proxy; import java.net.URL; import java.net.URLConnection; import java.nio.charset.StandardCharsets; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.xml.bind.DatatypeConverter; public class UpdateDNS { static Pattern p = Pattern.compile(".*sohu_user_ip=\"([0-9\\.]+).*"); public static void main(String[] args) throws Exception { java.util.concurrent.ScheduledExecutorService exe = Executors.newScheduledThreadPool(1); exe.scheduleAtFixedRate(new Runnable() { @Override public void run() { try { String ip = getIP(); if (ip == null || ip.isEmpty()) return; Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 3128)); String authString = "dddd:dddd"; String encodedAuthString = DatatypeConverter .printBase64Binary(authString.getBytes(StandardCharsets.UTF_8)); String url = "https://domains.google.com/nic/update?hostname=h.ddd.com&myip=" + ip; URL oracle = new URL(url); URLConnection yc = oracle.openConnection(proxy); yc.setRequestProperty("Authorization", "Basic " + encodedAuthString); BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); StringBuilder sb = new StringBuilder(); String inputLine; while ((inputLine = in.readLine()) != null) { sb.append(inputLine); } in.close(); String cOntent= sb.toString(); System.out.println(content); } catch (Exception ex) { ex.printStackTrace(); } } }, 0, 10, TimeUnit.SECONDS); } private static String getIP() throws MalformedURLException, IOException { URL oracle = new URL("http://txt.go.sohu.com/ip/soip"); URLConnection yc = oracle.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); StringBuilder sb = new StringBuilder(); String inputLine; while ((inputLine = in.readLine()) != null) { sb.append(inputLine); } in.close(); String cOntent= sb.toString(); Matcher m = p.matcher(content); if (m.matches()) { return m.group(1); } return null; } } 1 lan894734188 2017-02-28 01:01:28 +08:00 via Android google domain 的? |
2 ryd994 2017-02-28 02:30:38 +08:00 via Android ddclient 不好么? 哦, Windows |
3 snnn OP @lan894734188 对 |