Мой журнал маршрутизатора отмечает активность по IP-адресу, но вместо этого я хочу увидеть соответствующие URL-адреса. Есть ли способ получить URL-адреса из IP-адресов - в пакетном режиме / пакетно - без необходимости делать это вручную / индивидуально по одной строке за раз?

2 ответа2

1

Если у вас есть список, вы можете сделать это довольно легко на любой ОС, используя встроенный в Python модуль socket .

import socket
socket.gethostbyaddr('198.252.206.16')

Это возвращает:

('stackoverflow.com', ['16.206.252.198.in-addr.arpa'], ['198.252.206.16'])

Итак, создайте скрипт, который совсем не будет сложным, просто укажите в файле ip на строку и сделайте что-то вроде:

import socket

fi = open('iplist.txt')
for line in fi.readlines():
    print( socket.gethostbyaddr( line )[0] )
fi.close()

Конечно, вы можете настроить вывод так, чтобы записать IP и доменное имя в другой файл, если хотите.

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

0

Предположим, у вас есть текстовый файл ips.txt со списком IP-адресов:

$ cat ips.txt | xargs host

Или вы можете написать элегантный скрипт bash для форматирования результатов:

for ip in $(cat ips.txt); do
    domain_names=$(host $ip | grep "domain name" | awk '{print $5}' | tr ".\\n" " ")

    # test first char of domain names
    if [ -n ${domain_names:0:1} ]; then
        echo "$ip $domain_names" 
    else
        echo "$ip not found"
    fi
done

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