Как использовать PowerShell для поиска информации DNS?

Я хочу автоматизировать процесс запроса записей DNS с помощью PowerShell;

Поскольку я стою за GFW, мне нужны десятки IP-адресов для каждого веб-сайта, поэтому вероятность того, что некоторые адреса не будут заблокированы, выше.

Я нашел веб-сайт: www.robtex.com, который соответствует моим потребностям, он возвращает большое количество IP-адресов, однако его бесплатный API ограничен: https://freeapi.robtex.com/pdns/forward/$webaddr, и использование веб-страницы в веб-браузерах противоречит цели автоматизации;

Как я могу это решить?


Да, мне запрещено задавать вопросы, поэтому я сейчас редактирую все свои вопросы, если вы считаете, что я стал лучше, пожалуйста, не стесняйтесь голосовать, если нет, не стесняйтесь оставлять комментарии!


person Community    schedule 15.11.2020    source источник
comment
Итак, у меня есть идея: использовать пользовательские агенты и файлы cookie, чтобы заставить powershell маскироваться под браузер, отправлять запросы https на сервер, помещать данные в поле ввода, затем получать ответы и анализировать информацию, однако я еще не знаю код, это не должно быть сложно реализовать, кто-нибудь поможет мне, прежде чем я снова отправлю ответ? Сначала я не могу писать сложные коды, но если я увижу код (не ассемблерный, машинный или шестнадцатеричный), я смогу мгновенно его понять и написать похожие коды.   -  person    schedule 15.11.2020
comment
Это окольный способ сделать это, вместо этого я бы рассмотрел ваши проблемы с API. Что ограничивает вас только несколькими IP-адресами, использующими API?   -  person PMental    schedule 15.11.2020
comment
Пожалуйста, зайдите на сайт и убедитесь сами, на сайте указано, бесплатный API ограничен, это урезанная версия, премиум API работает лучше, но это будет стоить денег, у меня нет денег, а премиум не является вариант.   -  person    schedule 16.11.2020
comment
Сколько запросов вам нужно делать ежедневно/ежемесячно? Может быть другой API, который может подойти.   -  person PMental    schedule 16.11.2020
comment
Например. этот сайт предлагает 500 запросов в месяц в бесплатном плане: dns-lookup.whoisxmlapi.com/ API   -  person PMental    schedule 16.11.2020


Ответы (1)


Я уже решил это.

Я использую PowerShell 7, для работы моего решения требуется библиотека парсера HTML PowerHTML;

  • Чтобы установить его, введите в PowerShell следующее:

    Install-Module -Name PowerHTML
    

Он предлагает командлет ConvertFrom-Html, результатом которого является объект 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"
person Community    schedule 27.11.2020