Python + TightVNC + noVNC: удалённый рабочий стол
Назад  |  26.01.2026, 13:22:04  |  63
1) Скачать и установить Python:
https://www.python.org/downloads/

2) В cmd выполнить:
pip install websockify

3) Скачать и установить TightVNC:
https://www.tightvnc.com/download.php

|---------------- quiet_install_tightvnc.bat ----------------|
@echo off
msiexec /i tightvnc-2.8.85-gpl-setup-64bit.msi /quiet /norestart ^
ADDLOCAL=Server ^
SET_USEVNCAUTHENTICATION=1 VALUE_OF_USEVNCAUTHENTICATION=1 ^
SET_PASSWORD=1 VALUE_OF_PASSWORD=123 ^
SET_USECONTROLAUTHENTICATION=1 VALUE_OF_USECONTROLAUTHENTICATION=1 ^
SET_CONTROLPASSWORD=1 VALUE_OF_CONTROLPASSWORD=321 ^
VALUE_OF_REMOVEWALLPAPER=1 ^
SET_USEMIRRORDRIVER=1 VALUE_OF_USEMIRRORDRIVER=1 ^
SET_POLLINGINTERVAL=1 VALUE_OF_POLLINGINTERVAL=500 ^
SET_DISCONNECTCLIENTS=1 VALUE_OF_DISCONNECTCLIENTS=1
:: ADDLOCAL="Server,Viewer"
:: VALUE_OF_REMOVEWALLPAPER=1 - Убирает обои рабочего стола при подключении VNC-клиента.
:: SET_USEMIRRORDRIVER=1 VALUE_OF_USEMIRRORDRIVER=1 - Включает mirror driver (драйвер зеркального экрана).
:: SET_POLLINGINTERVAL=1 VALUE_OF_POLLINGINTERVAL=500 - Частота проверки экрана (в миллисекундах).
:: SET_DISCONNECTCLIENTS=1 VALUE_OF_DISCONNECTCLIENTS=1 - Новый подключился → старый вылетел
:: SET_RUNCONTROLINTERFACE=1 VALUE_OF_RUNCONTROLINTERFACE=0 - Скрыть иконку в трее (чтобы «не трогали»)
|------------------------------------------------------------|

Документация:
https://www.tightvnc.com/doc/win/TightVNC_2.7_for_Windows_Installing_from_MSI_Packages.pdf

4) Скачать noVNC и извлечь в папку web:
https://github.com/novnc/noVNC/releases

5) В cmd выполнить:
cd C:\Users\User\Desktop\noVNC
py novnc.py

|------------------------- novnc.py -------------------------|
import sys, os, socket, subprocess

def base_dir():
    exe = sys.executable if getattr(sys, 'frozen', False) else __file__
    return os.path.dirname(os.path.abspath(exe))

def local_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        s.connect(('8.8.8.8', 80))
        return s.getsockname()[0]
    finally:
        s.close()

BASE_DIR = base_dir()
IP = local_ip()
PORT_WEB = int(sys.argv[1]) if len(sys.argv) > 1 else 8080
PORT_VNC = int(sys.argv[2]) if len(sys.argv) > 2 else 5900
SSL_CRT = sys.argv[3] if len(sys.argv) > 3 else ''
SSL_KEY = sys.argv[4] if len(sys.argv) > 4 else ''
WEB_DIR = os.path.join(BASE_DIR, 'web')

try:
    if os.path.isfile(SSL_CRT) and os.path.isfile(SSL_KEY):
        SSL = f' --cert="{SSL_CRT}" --key="{SSL_KEY}"'
    else:
        SSL = ''
    print(f"noVNC URL: http{'s' if SSL else ''}://{IP}:{PORT_WEB}/?resize=scale&quality=4&compression=4&host={IP}&port={PORT_WEB}&password=123&autoconnect=1&reconnect=1")
    print(f"VNC port: {PORT_VNC}")
    print(f"Web dir: {WEB_DIR}")
    print(f"Web exists: {os.path.exists(WEB_DIR)}")
    cmd = f'netsh advfirewall firewall delete rule name="noVNC" >nul 2>&1 & '
    cmd += f'netsh advfirewall firewall add rule name="noVNC" dir=in action=allow protocol=TCP localport={PORT_WEB} >nul 2>&1 & '
    cmd += f'py -m websockify --web "{WEB_DIR}" {PORT_WEB} {IP}:{PORT_VNC}{SSL}'
    subprocess.run(cmd, shell=True)
except KeyboardInterrupt:
    print('Остановлено.')
except subprocess.CalledProcessError as e:
    print(f"Ошибка при запуске websockify: {e}")
|------------------------------------------------------------|

Пример URL:
http://192.168.0.110:8080/?resize=scale&quality=4&compression=4&host=192.168.0.110&port=8080&password=123&autoconnect=1&reconnect=1

Документация:
https://github.com/novnc/noVNC/blob/master/docs/EMBEDDING.md#parameters
Поделится:
*текст* - жирный, ~текст~ - курсивный, -текст- - зачеркнутый, _текст_ - подчеркнутый
IP-адрес: 216.73.216.210
Часовой пояс: Asia/Almaty
Подробнее

Сервисы

Страницы

Информация

Сейчас онлайн
Всего на сайте: 2
Пользователи: 0
Гости: 1
Роботы: 1