Поиск URL-адресов из списка IP-адресов

0

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

Франциско
источник
1
@Franciso - Вы понимаете, что несколько веб-сайтов могут иметь один и тот же IP-адрес. То, что вы хотите, нереально.
Ramhound
Вы можете иметь проблемы с общими размещенных сайтов, если кто - то побывал 198.252.206.16 они идут на stackoverflow.com, workplace.stackexchange.com, cs.stackexchange.com, dsp.stackexchange.com, crypto.stackexchange.com, movies.stackexchange.com, raspberrypi.stackexchange.com, academia.stackexchange.com, mechanics.stackexchange.com, history.stackexchange.com, biology.stackexchange.com, outdoors.stackexchange.com, bitcoin.stackexchange.com, quant.stackexchange.com, bricks.stackexchange.com, или pm.stackexchange.com?
Скотт Чемберлен
@ Скотт, но все же, IP-адреса прямо на "главной странице". Конечно, это не даст точного имени, но для некоторых целей этого может быть достаточно. Какой у вас производитель роутера и ОС? Это может помочь тем, кто отвечает.
Доктор Рейхард
На какой ОС вы используете?
50-3

Ответы:

1

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

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-адрес (включая субдомены и тому подобное).

nerdwaller
источник
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
shawmzhu
источник
Что заставляет вас думать, что OP использует Linux в паре с BASH? Я думаю, что это фундаментальный недостаток в вашем ответе, даже если он может сработать (не проверял, но я предполагаю, что вы это сделали до публикации).
nerdwaller