База данных блокировщика рекламы, которую я использовал годами, со временем стала очень раздутой, и теперь она полна множества устаревших доменов (некоторые из них даже недействительны). Я хочу урезать это, но я не уверен, как лучше всего это сделать.

Я попытался создать пакетный файл, который анализирует файл и проверяет связь с каждым доменом, а затем, в зависимости от уровня ошибки, записывает имя домена в live или dead файл. Это достойное решение, но у него есть как минимум пара проблем:

  1. Он не учитывает серверы, которые сбрасывают эхо-запросы
  2. Даже с ключами -n 1 и -w 1000 многие домены все еще тратят 10 секунд
  3. Он тестирует по одному, поэтому может потребоваться очень много времени, чтобы закончить

У кого-нибудь есть какие-нибудь предложения, как проверить, жив ли список доменных имен? Требования:

  • Не имеет значения, является ли решение командной строкой или графическим интерфейсом
  • Я не слишком обеспокоен отсутствием некоторых серверов, которые отбрасывают ICMP (время важнее)
  • Он не должен тестировать слишком много сразу, или мой провайдер не будет счастлив (желательно настраивается)

1 ответ1

0

Могу ли я предложить Python? Обновлю этот ответ проверенным кодом, когда вернусь к своему ПК, но это будет выглядеть примерно так

import requests
with open("blocklist.txt", "r") as f:
    for n in f.readLines():
        r = requests.get(n)
        if r.status_code == 200:
            m = open("good.txt", "a")
            m.write(n)
            m.close()
        else:
            m = open("bad.txt", "a")
            m.write(n)
            m.close()

С blocklist.txt как:

google.com
testrgdjhdhdhdhhdh.com
example.com

И good.txt:

google.com
example.com

bad.txt:

testrgdjhdhdhdhhdh.com

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .