Forma eficiente y efectiva de probar nombres de dominio por lotes

0

La base de datos de bloqueadores de anuncios que he estado usando durante años se ha hinchado mucho con el tiempo, y ahora está llena de muchos dominios obsoletos (algunos ni siquiera son válidos). Quiero recortarlo, pero no estoy seguro de cómo hacerlo mejor.

Lo que intenté fue crear un archivo por lotes que analice el archivo y haga ping a cada dominio, luego, dependiendo del nivel de error, escribe el nombre de dominio en el archivo liveo dead. Esta es una solución decente, pero tiene al menos un par de problemas:

  1. No tiene en cuenta los servidores que descartan pings
  2. Incluso con los interruptores -n 1y -w 1000, muchos dominios aún tardan 10 segundos en agotar el tiempo de espera
  3. Prueba uno a la vez, por lo que puede llevar mucho tiempo terminar

¿Alguien tiene alguna sugerencia sobre cómo probar si una lista de nombres de dominio está viva? Requisitos:

  • No importa si la solución es línea de comandos o GUI
  • No estoy demasiado preocupado por perder algunos servidores que descartan ICMP (el tiempo es más importante)
  • No debería probar demasiados a la vez, o mi ISP no estará contento (preferiblemente configurable)
Synetech
fuente
Si bien un monitor de sitio web debería funcionar (los servidores de anuncios realmente no sirven FTP o lo que sea), una herramienta en línea no funcionará porque están destinados a monitorear continuamente uno o dos dominios, no verificar muchos dominios al mismo tiempo.
Synetech
No haga ping, sino que haga una búsqueda de DNS. si el dominio bloquea ICMP / ECHO o está temporalmente fuera de servicio, no recibirá una respuesta. Sin embargo, tenga en cuenta que una falla en la búsqueda de un nombre DNS toma al menos 2 segundos por intento (el ping se comportará igual, ya que está comenzando con los nombres). El tacto exacto que tomaría depende de la cadena de herramientas que ya esté en uso, con su analizador y todo.
Frank Thomas
@FrankThomas ¿Cómo hacer una búsqueda de DNS confirma que el sitio está activamente "vivo"?
Ƭᴇcʜιᴇ007
@ Techie007, la pregunta que plantea la operación, no es si el sitio está vivo o no, sino si las entradas en la base de datos siguen siendo válidas. Ya reconocen que un ping no es una prueba válida para "en vivo", por lo que dado que estamos enfocados en una base de datos de nombres de dominio, probarlos parece ser el enfoque más acertado.
Frank Thomas

Respuestas:

0

¿Puedo sugerir python? Actualizaré esta respuesta con el código probado cuando vuelva a mi PC, pero se vería algo así

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()

Con blocklist.txt como:

google.com
testrgdjhdhdhdhhdh.com
example.com

Y good.txt:

google.com
example.com

bad.txt:

testrgdjhdhdhdhhdh.com
Jay Williams
fuente