Загрузка...

[VITE] Protect your project in Telegram WebApp

Thread in Frontend created by K1p1k Nov 21, 2025. (bumped Dec 10, 2025) 344 views

  1. K1p1k
    Делая фронт на WebApp Telegram для своего проекта я столкнулся с проблемой с кем я делился юзом на бота(я его делаю 8/7) я боялся то что скачают сурсы а каждый раз билдить и запускать руками через сервер не хотелось

    Я придумал решение
    Я написал скрипт на python который запускает сервер
    Я в package.json добавил новую тип запуска("run")

    С React работает на все 100%

    1. Добавьте файл server_static.py в свою дерикторию(рядом с package.json)
    Python
    import http.server
    import socketserver
    import os
    import sys
    from pathlib import Path


    port=int(sys.argv[1])
    os.chdir(Path(__file__).parent.__str__()+sys.argv[2])

    class SPAHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
    if not os.path.exists(self.translate_path(self.path)):
    self.path = '/index.html'
    return super().do_GET()

    with socketserver.TCPServer(("", port), SPAHandler) as httpd:
    print(f"Сервер запущен на порту {port}...")
    httpd.serve_forever()
    2. Добавьте в package.json новую тип запуска
    Code
    "dev-build": "npm run build && node -e \"const {spawn} = require('child_process'); spawn('python', ['.\\\\server_static.py', '5173', '/dist'], {stdio: 'inherit'})\"",[FONT=inherit][COLOR=inherit]
    [/COLOR][/FONT]
    Code
    {

    "name": "client",

    "private": true,

    "version": "0.0.0",

    "type": "module",

    "scripts": {

    "dev": "vite",

    "dev-build": "npm run build && node -e \"const {spawn} = require('child_process'); spawn('python', ['.\\\\server_static.py', '5173', '/dist'], {stdio: 'inherit'})\"",

    "build": "vite build",

    "lint": "eslint .",

    "preview": "vite preview"

    },
    Должен быть установлен python 3.11=>
    Без зависимостей
     
  2. CerberusSteam
    Если я правильно тебя понял
    Твой скрипт норм как "быстро отдать dist + SPA-fallback". Но как защита исходников он почти ничего не даёт: любой фронт, который загрузился в WebView/браузер, можно скачать (бандлы, картинки, css).
    Улучшить Python-сервер (надёжнее, без chdir, многопоточно, аккуратный SPA fallback)

    Пример( добавил коменты):


    package.json попроще:



    Если цель — “не палить исходники”, это решается не сервером, а сборкой


     
Loading...