#python #dns #subdomain #google-search
Вопрос:
Я хочу перечислить все поддомены данного домена второго уровня.домен верхнего уровня (2LD.1LD) , например .edu.uk
, или .gov.us
с помощью python
Я использую dns
пакет на python
import dns.resolver
answers = dns.resolver.query('stackoverflow.com', 'MX')
for rdata in answers:
print('Host', rdata.exchange, 'has preference', rdata.preference)
Но это не может работать с dns.resolver.query('edu.uk', 'MX')
Я также использую googlesearch
from googlesearch import search
res = search("site:edu.uk",num_results=1000)
print((res))
Но он отвечает только на 100 результатов.
Мне нужен результат, в котором есть все поддомены (я думаю, что это очень большой результат). Как я могу это сделать? Спасибо всем
Комментарии:
1. Ваш вопрос на самом деле не о программировании, как объяснил Уэс. Но для «Я хочу результат, у которого есть все поддомены», было бы полезно объяснить, зачем вам это нужно. И если это вообще (любой TLD), или какие-то конкретные по конкретным причинам. Например, если это для какого-то исследования, вы, возможно, можете оспорить это в реестре, и они могут предоставить вам доступ к соответствующим данным. Или нет. Все зависит от того, что именно вы имеете в виду, прежде чем даже пытаться решить проблемы с помощью технических решений.
Ответ №1:
Простой ответ: вы не можете. Невозможно запросить содержимое всего домена, независимо от уровня. Некоторые (только некоторые, например, root) позволяют передавать зону с помощью передачи AXFR (попробуйте: dig @b.root-servers.net axfr .
если у вас установлены утилиты привязки). Но в целом протокол DNS теперь позволяет вам всегда получать содержимое дерева записей DNS. Вы можете догадаться о некоторых из них, например, вы указали выше, что в некоторых зонах могут быть MX
записи, что часто верно (пример исключения: ни у одного ДВУ нет MX
записи). Вы можете догадаться, что большинство доменов имеют www
префикс с A
или AAAA
запись, но даже в этом нельзя быть уверенным.
Короче говоря: ваша проблема не в python, а в самом протоколе DNS. Ни на одном языке невозможно получить полный список содержимого зоны, если владелец этой зоны этого не хочет.
[примечание: Зоны, подписанные DNSSEC, с доказательством несуществования записей NSEC позволяют вам «обходить» зону для имен записей, но я не советую вам вообще пытаться злоупотреблять этой функцией-мы запускаем сканер DNS, и даже мы не используем этот подход при поиске подписанных доменов-это вызовет много законных писем с ненавистью]
Комментарии:
1. Просто добавлю, что не все зарегистрированные домены публикуются, поэтому, даже если бы вы могли получить все данные DNS либо через AXFR, opendata, список ежедневно публикуемых имен, NSEC, и так далее, вы все равно не получите все зарегистрированные имена. Только опубликованные. Четкой статистики по этой разнице нет, но я бы использовал показатель от 1 до 5% имен, зарегистрированных, но не опубликованных. В зависимости от того, зачем нужен список «всех» имен, это может быть важно или нет.
Ответ №2:
На некоторых веб-сайтах есть /robot.txt чтобы перечислить URL-адреса для обхода Google. Если вам разрешено, альтернативой является использование burpsuite и списка поддоменов для их сканирования.
Комментарии:
1. 1)
robots.txt
дает поручения роботы ползти/ползать не соответствующие разделы сайтов 2), поэтому я думаю, что вы путаете сsitemap.xml
которыми действительно предназначено в список «всех» URL-адреса на веб-сайт для поисковых систем, чтобы найти их (вы знаете, что есть больше чем один поисковик, там, не нужно ориентироваться на один), но 3) все, что не может даже начнете давать идеи «все домены в рамках данного дву». Если у вас есть конкретная идея, вы, возможно, захотите расширить свой ответ, потому что в его нынешнем виде он вообще не отвечает на поставленный вопрос.