Защита от скачивания html веб сервера на esp32 есть?

а почему ?))) это будет только в моей библии, и не всплывет в сети, чужой код всегда интересный, а вот материалы не нужны, их в сети и так наверное найти можно…

все таки не укладывается это у меня в голове… на есп32 нет же браузера, и если его нет, то это не значит же что я не могу добавить флаг, который активирую, и работа сервера запуститься так же как я бы сделал это через графический интерфейс на пк…
далее проделав работу сервер отдает информацию вывода другому серверу, который уже грузится в браузер, и выводится там…
и тот который грузится в браузер, не имеет полного доступа к первому серверу, на котором уже есть дополнительные скрипты….
не понимаю чего я не учитываю… вроде это реально сделать кодом…

Если динамически генерить на странице фейковые ссылки движком, то можно навсегда запустить wget и он не скачает сайт, где есть бесконечное количество входящих ссылок. HTML bomb практиковалось достаточно давно.

Вот тебе исходный код программы, которая рекурсивно скачивает сайты.

Браузер - это программа, которая визуализирует на экран все то, что отдал ему сервер. Он получает html, грузит картинки, скачивает javascript (тут вам надо почитать про html). Потом собирает Dom, цепляет в нужные места javascript, рендит картинки и т.д.

Иди почитай сначала книжки, а потом берись реализовывать, поскольку понимания у тебя пока 0.

Ну, не знаю, так исторически сложилось.

Воспитание! А ведь мог и “бритвочкой полоснуть” коня в ванной с огурцами изобразить.

кажется еще и так не работает… с 2 серверами, происходят тоже ошибки, слишком много скриптов там… стоит хоть что то подправить в коде (например отправку данных) и он перестает работать…

хотя более легкий сервер вроде как скрывает часть js скриптов, придется с помощью слабоумия и отваги, решать ошибку за ошибкой перенося код на апк…

если скрипты сложные, с использованием локальных библиотек, не работает… или я просто не знаю как сделать, как бы сказал один персонаж, блин блинский)))

наверное не надо терять время, и идти пыхтеть над апк))) всем спс за ответы и идеи

Сделай javascript, который тащит данные в div отдельно с url, которого нет в тексте самого javascript, а он формируется путем сложения строк, а потом обращается. Тем самым ты при сохранении исходного текста html спрячешь url куда обращается javascript. При переносе на другой сервер код автоматически перестанет работать. Но при сохранении в браузере содержимого страницы данные все равно будут полностью присутствовать. Тем самым ты затруднишь простым способом перенос сервера.

Можно вообще генерить javascript при его скачивании браузером. Например вставить url с адресом сервера и адресом клиента в исходный текст с последующей проверкой.

Можно вообще всю страницу генерить при её скачивании – я ему про CGI написал ещё в первых постах.

Для модулей это даже проще, чем тащить их с носителя.

это запуск html на адресе 192.168.4.1 а нахождение скриптов по другим адресам 192.168.4.100 например, которых нет в основной странице ?)))
только пример с портом… однако у меня не хватает знаний как реализовать, так как много слишком скриптов и библиотек в них, что код работает только целиком, и если я переношу его, или вношу изменения, основной функционал его падает)))

#include <WiFi.h>
#include <WebServer.h>

WebServer server80(80);     // Основной сервер на порту 80
WebServer server8080(8080); // Скрытый сервер на порту 8080

void setup() {
Serial.begin(115200);
// Режим AP
WiFi.softAP("ESP32_Secret", "pass123");
Serial.println(WiFi.softAPIP()); // 192.168.4.1
// ===== ОСНОВНОЙ СЕРВЕР (порт 80) =====
server80.on("/", []() {
String html = R"raw(
<!DOCTYPE html>
<html>
<body>
    <h1>Защищенная система</h1>
    <div id="content">Поиск компонентов...</div>
    
    <script>
        // В HTML нет ссылок на скрипты!
        // Скрипт "спрятан" на другом порту
        const currentHost = window.location.hostname; // 192.168.4.1
        const secretPort = 8080;  // Порт не указан в HTML явно, но вычисляется
        
        // Собираем URL скрытого скрипта
        const scriptUrl = `http://${currentHost}:${secretPort}/secret.js`;
        
        fetch(scriptUrl)
            .then(res => res.text())
            .then(code => {
                eval(code);  // Выполняем скрытый скрипт
            })
            .catch(err => {
                document.getElementById('content').innerHTML = 'Ошибка: ' + err;
            });
    </script>
</body>
</html>
)raw";
        server80.send(200, "text/html", html);
    });
    
    // ===== СКРЫТЫЙ СЕРВЕР (порт 8080) =====
    server8080.on("/secret.js", []() {
        String js = R"raw(
            // Этот скрипт загружен с порта 8080
            // На порту 80 его нет!
            
            async function loadRealData() {
                // Дополнительная проверка - обращаемся к API на порту 80
                const response = await fetch('http://' + window.location.hostname + '/api/data');
                const data = await response.json();
                document.getElementById('content').innerHTML = 
                    '<h2>✅ Секретные данные</h2>' +
                    '<p>Температура: ' + data.temp + '°C</p>' +
                    '<p>Влажность: ' + data.hum + '%</p>';
            }
            
            loadRealData();
        )raw";
        server8080.send(200, "application/javascript", js);
    });
    
    // API для данных (тоже на порту 80)
    server80.on("/api/data", []() {
        String json = "{\"temp\":23.5,\"hum\":65}";
        server80.send(200, "application/json", json);
    });
    
    server80.begin();
    server8080.begin();
}

void loop() {
    server80.handleClient();
    server8080.handleClient();
}

и надеяться вроде не стоит что не поймут как это работает, и что не скачают скрипты… самое лучшее это внедрить обмен информацией с закрытом сервером без доступа к скриптам))) который только результат работы пришлет, если вы умеете без проблем править такой код)))

мне наверное лучше 100% вариант, через приложение, потому что там я понимаю чуть больше что я делаю, чем тут)))

А ИИ что говорит?

он много чего пишет… в основном что он создает страницу из функции-кода, вы про это ?
только так я вообще не знаю как реализовать…

так я хоть могу разместить js скрипты, и понимаю где они, и могу указать куда к ним обращаться для того что бы функционал полностью работал…
хотя и тут из за того что я запустил html со скриптами не сразу, в одном месте, с загрузкой и выполнением этого всего в браузере, логика программы ломается…

еще говорит можно так писать код на любом языке…)))
но смог бы я переписать библиотеки которые на js скрипте, я бы не стал так морочится с их сокрытием…
тут я использую чужие, и мне надо еще их и скрыть))) а чуть вмешиваясь в чужой код, программа перестает работать…

Ну, да.

А чего тут знать-то? Берете любой, самый простой пример веб-сервера из самой простой библиотеки для сетевого шилда. И видите там именно CGI подход. Там нет никаких HTML файлов. Там сервер получает запрос и прямо здесь в скетче фигачит ответ, состоящий из заголовка и html-кода. Это оно и есть. Страницы он генерит каждый раз разные, они идут браузеру, а саму программу, которая генерит (собственно сервер) хрен выкачаешь.

В этом простейшем примере никак не разбираются параметры, но кто Вам мешает разбирать? Более того, снаружи это может даже выглядеть как то, что у Вас там куча HTML- файлов. На самом деле там ничего нет, просто программа сервера может смотреть что у неё попросили и генерить нужный ответ (например, попросили sensors.htm - она генерит страницу со значениями датчиков, попросили contacts.htm – она генерит страницу контактов, попросили что-то непонятное – генерит ошибку 404, а реально таких файлов нет и никогда не было).

Вот это оно и есть CGI - это когда некая программа на сервере на лету генерирует ответ на запрос и отсылает браузеру.

попробую позже почитать и вникнуть, спс, но свою задачу попробую решить через апк приложение)))
думал есть какой то легкий способ сделать иначе, но программа готовая на html раз за разом перестает работать, если я ей даже файлы для обработки отправляю через какого то посредника в виде сайта, вообще чуть пытаясь изменить функционал сайта html, он перестает работать)))

Вот эту штуку бы портировать для модулей
Develop web applications in C++

Интересно, а сейчас есть программы типа Dreamweaver?
Он то, вроде бы, уже давно «сдох».

Что значит, “портировать”.
На ПК или сервере, работающем под какой-то ОС, это просто программа (exe файл), которая принимает данные со стандартного устройства ввода и выдает - на стандартное устройство вывода. Пишется как обычная консольная утилита.
Если же устройство работает без ОС или, по крайней мере, без ФС, эти действия (прием и выдачу нужных данных) должна обеспечивать сама прошивка.
Что здесь можно “портировать”?
Если консольная exe программа и прошивка устройства пишутся на одном и том же языке программирования (например, Си), то “портировать” вообще нечего. Код переносится один в один.

А вы уже изучили предмет? Вы изучили архитектуру или Абрам напел и Вам не понравилось? Вы собрали хоть что то?

Жаль нет руки с средним пальцем.