Задать вопрос
@fuckinguser

Как проверить с помощью Python открыт ли определенный сайт на ПК или нет?

Мне нужно проверить с помощью языка программирования Python открыт ли определенный сайт на ПК или нет, пример с использованием библиотеки psutil:

for proc in psutil.process_iter():
name = proc.name()
if name == "pycharm64.exe": # но вместо наименования программы домен сайта
print(name, "запущен на ПК")
  • Вопрос задан
  • 766 просмотров
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
1. Получить список IP адресов, ассоциированных с целевым сайтом. В простейшем случае - через DNS запрос, но в некоторых случаях это может быть сложнее (например, сайт использует CDN).
2. Получить список активных TCP соединений, у которых удалённый порт 443 (опционально, 80). Определить удалённые адреса.
3. Проверить, пересекаются ли два множества адресов.
Этот подход обломается, если браузер использует прокси, или если на машине поднят VPN.

Альтернативно, установить системный прокси сервер, который будет отслеживать открываемые сайты. Но браузер не обязан его использовать, так что это тоже ненадёжно.
Ответ написан
EPIDEMIASH
@EPIDEMIASH
Человек швейцарский нож
import psutil
import urllib.request

def is_website_opened():
    website_url = "http://www.example.com"
    website_opened = False
    
    # Проверяем, запущен ли браузер, который используется для открытия веб-страницы
    for proc in psutil.process_iter():
        if proc.name() == "chrome.exe":
            try:
                # Получаем список открытых портов для процесса
                # и ищем порт 80 (стандартный HTTP-порт)
                for conn in proc.connections():
                    if conn.laddr.port == 80:
                        # Проверяем, доступность веб-страницы
                        urllib.request.urlopen(website_url)
                        website_opened = True
                        break
            except Exception as ex:
                # Происходит, если веб-страница не может быть получена.
                # Мы просто продолжаем поиск в портах.
                pass

    return website_opened
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы