如何使用PowerShell查询DNS信息?

How to use PowerShell to lookup DNS information?

我想使用 PowerShell 自动执行查询 DNS 记录的过程;

由于我是GFW的幕后黑手,所以每个网站都需要几十个IP地址,所以有些地址不被屏蔽的几率比较大。

我找到了一个网站:www.robtex.com that suites my needs, it returns a large number of IP addresses, however its free API is limited: https://freeapi.robtex.com/pdns/forward/$webaddr,在网络浏览器中使用该网页有悖于自动化的目的;

我该如何解决?


是的,我被禁止提问所以我现在正在编辑我所有的问题,如果你认为我有改进请不要犹豫,如果没有,请随时发表评论!

我已经解决了

我是 PowerShell 7,我的解决方案需要 HTML 解析器库 PowerHTML 才能工作;

  • 要安装它,请在 PowerShell 中键入以下内容:

    Install-Module -Name PowerHTML
    

它提供 ConvertFrom-Html cmdlet,其输出是 HtmlAgilityPack.HtmlNode 对象。

  • 代码:

    $Website = $Args
    $IPv4 = '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'
    $IPv6 = '([0-9A-Fa-f]{1,4}\:)(([0-9A-Fa-f]{1,4})?\:){1,6}[0-9A-Fa-f]{1,4}'
    $html = ConvertFrom-Html -uri "https://www.robtex.com/dns-lookup/$Website"
    $IP=@()
    $html.SelectNodes('//table/tbody/tr/td/ul/li/a').InnerText | Where {$_ -match "$IPv4|$IPv6"} | %{if ($IP -notcontains $_) {$IP+=$_}}
    $html.SelectNodes('//table/tbody/tr/td/a').InnerText | Where {$_ -match "$IPv4|$IPv6"} | %{if ($IP -notcontains $_) {$IP+=$_}}
    $html.SelectNodes('//p/a').InnerText | Where {$_ -match "$IPv4|$IPv6"} | %{if ($IP -notcontains $_) {$IP+=$_}}
    $IP >"$PSScriptRoot${Website}_IP.txt"
    

另存为DNSQuery.ps1,用法示例:

.\DNSQuery.ps1 "www.google.com"