Check-host.net - получить информацию про IP по 5 гео базам - bash - python - 2026
Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2026
check-host.net предоставляет страницу /ip-info, где можно посмотреть информацию об IP-адресе из нескольких гео-баз одновременно. Данный скрипт автоматизирует сбор этих данных и выводит сводную таблицу.
Полный код
#!/usr/bin/env bash
read -rp "Введите IP: " IP
URL="https://check-host.net/ip-info?host=$IP"
TMP=$(mktemp)
echo
echo "========================================="
echo "GeoIP информация для $IP"
echo "Источник: Check-Host"
echo "========================================="
echo
if ! curl -fsSL "$URL" -o "$TMP"; then
echo "Ошибка загрузки страницы."
rm -f "$TMP"
exit 1
fi
python3 - "$TMP" <<'PY'
from bs4 import BeautifulSoup
import sys
import re
with open(sys.argv[1], encoding="utf-8", errors="ignore") as f:
html = f.read()
soup = BeautifulSoup(html, "html.parser")
wanted = [
"DB-IP",
"IPGeolocation.io",
"IP2Location",
"MaxMind GeoIP",
"IPInfo.io",
"CloudFlare CDN",
]
rows = []
for h in soup.find_all(["h2","h3","h4","h5","h6","strong","b"]):
text = " ".join(h.get_text(" ", strip=True).split())
for name in wanted:
if name.lower() not in text.lower():
continue
country = "-"
table = h.find_next("table")
if table:
for tr in table.find_all("tr"):
cols = tr.find_all(["td","th"])
if len(cols) < 2:
continue
key = cols[0].get_text(" ", strip=True).lower()
if key == "country":
country = cols[1].get_text(" ", strip=True)
break
rows.append((name, country))
break
if not rows:
print("Не удалось получить данные.")
sys.exit(1)
print(f'{"База":<20} Страна')
print("-" * 45)
countries = set()
for name, country in rows:
print(f'{name:<20} {country}')
if country != "-":
countries.add(country)
print("-" * 45)
if len(countries) == 1:
print(f"✔ Все базы совпадают ({next(iter(countries))})")
else:
print(f"⚠ Найдено {len(countries)} разных стран:")
for c in sorted(countries):
print(f" • {c}")
PY
rm -f "$TMP"
Описание работы
Скрипт последовательно выполняет следующие действия:
- Запрашивает у пользователя IP-адрес.
- Формирует URL вида https://check-host.net/ip-info?host=<IP>.
- Скачивает HTML-страницу при помощи curl.
- Передаёт HTML в Python-скрипт (встроенный heredoc), который использует BeautifulSoup для парсинга.
- Ищет на странице 6 гео-баз: DB-IP, IPGeolocation.io, IP2Location, MaxMind GeoIP, IPInfo.io, CloudFlare CDN.
- Для каждой найденной базы извлекает название страны из первой расположенной рядом таблицы (по ключу country).
- Выводит результат в виде таблицы и итоговый вердикт — совпадают ли базы.
Пример вывода
========================================= GeoIP информация для 8.8.8.8 Источник: Check-Host ========================================= База Страна --------------------------------------------- DB-IP United States IPGeolocation.io United States IP2Location United States MaxMind GeoIP United States IPInfo.io United States CloudFlare CDN United States --------------------------------------------- ✔ Все базы совпадают (United States)
Зависимости
- bash — оболочка для запуска.
- curl — загрузка HTML-страницы.
- python3 — интерпретатор Python.
- BeautifulSoup (bs4) — парсинг HTML (устанавливается через pip install beautifulsoup4).
- html.parser — встроенный парсер Python (не требует дополнительной установки).
Резюме
Скрипт представляет собой удобный инструмент для быстрой проверки геолокации IP-адреса по шести независимым базам данных через сервис check-host.net. Он позволяет наглядно увидеть, согласованы ли данные между разными провайдерами GeoIP-информации. Если базы расходятся — можно сделать вывод о возможной неточности или конфликте данных.
