取域名CNAME 或A 记录解析值

  • 上边的这种方式获取解析记录在实践时十分耗时。下面推荐另外一种方式获取解析

需要导入dnsjava包

<dependency><groupId>dnsjava</groupId><artifactId>dnsjava</artifactId><version>3.5.1</version></dependency>
 /*** 获取域名解析** @param domain 域名* @param type   类型 A记录 或者 CNAME*/public static String getResolving(String domain, int Type.CNAME) {Resolver resolver;Lookup lookup;try {resolver = new SimpleResolver("114.114.114.114");lookup = new Lookup(domain, type);} catch (TextParseException | UnknownHostException e) {throw new RuntimeException(e);}lookup.setResolver(resolver);org.xbill.DNS.Cache cache = new org.xbill.DNS.Cache();lookup.setCache(cache);lookup.run();if (lookup.getResult() == Lookup.SUCCESSFUL) {String[] results = cache.toString().split("\\n");for (String result : results) {String rule = "(?<=\\[)(.+?)(?=.])";Pattern pattern = Pattern.compile(rule);Matcher matcher = pattern.matcher(result);while (matcher.find()) {return matcher.group();}}}return null;}返回结果:["01ae493e724a644f7cfd73a6f4fd8d1.cmcdxwvcbgdv3xxx.xxxx"]

上边的这种方式获取解析记录在实践时十分耗时。下面推荐另外一种方式获取解析

 /**** @param domainName 域名* @param server 部署项目的服务器ip ,可以使用 cat /etc/resolv.conf 查看nameserver 获得*/
private static List<String> getDigResults(String domainName, String server) {InputStream is = null;BufferedReader br = null;Process p = null;StringBuffer sbf = new StringBuffer();try {String cmd = MessageFormat.format("dig @{0} {1} +short", server, domainName);p = Runtime.getRuntime().exec(cmd);p.waitFor();is = p.getInputStream();br = new BufferedReader(new InputStreamReader(is, "utf-8"));String tmp;while ((tmp = br.readLine()) != null) {if (StringUtils.isNotBlank(tmp))if (tmp.charAt(tmp.length()-1) == '.') {sbf.append(tmp.substring(0, tmp.length() - 1) + ",");} else {sbf.append(tmp + ",");}}} catch (IOException e) {e.printStackTrace();} finally {IOUtils.closeQuietly(br);IOUtils.closeQuietly(is);p.destroy();return Arrays.asList(sbf.toString().split(","));}}

java获取域名CNAME 或A 记录解析值 lookup 和 dig 方式相关推荐

  1. 什么是A记录,子域名,CNAME别名,MX记录,TXT记录,SRV 记录,泛域名(泛解析),域名转向,域名绑定...

    什么是A记录,子域名,CNAME别名,MX记录,TXT记录,SRV 记录,泛域名(泛解析),域名转向,域名绑定 A记录 QUOTE: A (Address) 记录是用来指定主机名(或域名)对应的IP地 ...

  2. namesilo修改域名服务器,简单3步修改Namesilo域名DNS以及A记录解析教程

    上文中我们学习了如何购买namesio的域名没看过的可以回头看下[2016NameSilo新注册域名教程(支持支付宝)]有些朋友在不同的域名注册商注册到的域名之后喜欢都修改第三方DNS,然后都用统一的 ...

  3. 什么是DNS,A记录,子域名,CNAME别名,MX记录,TXT记录,SRV 记录,TTL值

    DNS DNS,Domain Name System或者Domain Name Service(域名系统或者域名服务).域名系统为Internet上的主机分配域名地址和IP地址.由于网络中的计算机都必 ...

  4. java 获取域名_Java获取域名,Java从URL地址中获取域名,Java从Request 获取域名

    Java  获取主域名方法有很多种,有的用截串方式,我用的一个投机取巧的方式,这个获取域名的方法比较简单,代码也较少. Java从URL地址中获取域名//这样获取的方式,不请求就能获取到域名 URL ...

  5. java获取域名Whois注册信息

    域名简介 国别域名(ccTLD:Country Code Top Level Domain)  常见的有cn.im.me.tv.co.gg.ee.tt.bb等等 通用顶级域名 (gTLD:generi ...

  6. java获取磁盘读取速度_记录屏幕Java磁盘速度

    您可能要考虑的一种选择是对多个线程进行处理.一个线程可以专用于截屏,而其他许多线程可以写入磁盘.由于写入磁盘不是占用大量CPU的操作,因此您可以让它们中的许多并发运行,每个写入一个不同的文件.以下程序 ...

  7. 【原创】Java获取CPU占用率、内存占用率最简单的方式

    先上代码,保证这是目前全网最简单的获取系统CPU占用率.内存占用率的方法 @Testpublic void testSystemUsage() {final long GB = 1024 * 1024 ...

  8. 关于java获取当前时间 和 时间的毫秒值

    获取当前时间的方法 //第一种方法 long totalMilliSeconds = System.currentTimeMillis(); //第二种方法 (常用) Date date = new ...

  9. java获取Win系统日志最后(最新)开关机时间记录等

    java获取Win系统日志开关机记录等 java实现代码在后面,没耐心看的小伙伴请玩后面划拉 今天看到一个比较有意思的需求. java实现获取win系统最近一次关机时间. 这里先谈一下解决思路,有问题 ...

最新文章

  1. python的 局部变量与全局变量
  2. css3的动画特效--动画序列(animation)
  3. FindPrivateKey X509
  4. 用C/C++扩展你的PHP
  5. Virtualization基础
  6. 关于Adapter的The content of the adapter has changed but ListView did not receive a notification.问题分析
  7. java 图片压缩100k_如何将图片压缩到100K以内,教你几种免费方法
  8. 用C语言实现面向对象的开发
  9. 慎用 supportedRuntime
  10. Centos6.6系统root用户密码恢复案例(转)
  11. ubuntu上 grafana + influxdb + telegraf 安装配置
  12. 一道不起眼的面试题,但被头条面试官玩出了花,48张图,2个动画,带你还原面试现场
  13. epoch、 iteration和batchsize的区别
  14. AB-PLC下载程序与上载程序详解
  15. Remix-IDE(一)
  16. Linux系统下ROMS安装流程与例程运行
  17. 第三代CAN-XL通信技术CiA 610有什么特点
  18. NLP(9): 机器学习介绍,朴素贝叶斯,python高阶函数应用
  19. 2022年的5G行业:“5G+”很火,5G网络迟迟未能普及
  20. 三十分钟理解:矩阵Cholesky分解,及其在求解线性方程组、矩阵逆的应用

热门文章

  1. 利用Controller Tester进行动态测试
  2. 20171026校内训练
  3. 实训记录(二)——分镜的制作!
  4. linux如何查看端口是否被占用
  5. java定时器、Spring定时器和Quartz定时器
  6. AD学习笔记(二)——PCB布局布线
  7. 1.JAVA猜数字游戏: 一个类A有两个成员变量v、num,v有一个初值100。 定义一个方法guess,对A类的成员变量v,用num进行猜。 *如果num比v大则提示大了,反之则提示小了.
  8. Elasticsearch terms查询
  9. 【腾讯轻量应用服务器上部署kafka并通过flink读取kafka数据】
  10. 教你32种摄影方式,发挥无限创意