🚀 运行: ...
IP: ...
ISP: 检测中...

LiveShot – 网页实时截图与直播 API

LiveShot – 网页实时截图与直播 API

LiveShot 是一个基于 Node.jsPuppeteer (Headless Chrome) 的轻量级服务。它允许你通过简单的 API 调用,获取任何网页的高清截图,甚至是以 MJPEG 视频流 的形式实时“直播”网页的变化。特别适合用于 服务器探针监控 (Server Status)GitHub Profile 动态展示自动化报表生成网页变动监控


项目介绍

在低配置的 Linux VPS 上运行 Puppeteer(Chrome)通常是一场噩梦,内存泄漏和 CPU 飙升是家常便饭。

LiveShot 是一个专为 Linux VPS 设计的高性能网页渲染工具。它不仅仅是一个截图 API,还支持生成实时网页 MJPEG 直播流。最重要的是,v4.1 版本针对低资源环境进行了深度优化,实现了零 CPU 轮询开销,并内置了内存守护机制。

核心特性

  • 极低占用:彻底移除了轮询机制,待机 CPU 占用为 0%。
  • 智能守护:通过 PM2 限制最大内存(默认 500MB),防止 Chrome 撑爆服务器,长期运行极度稳定。
  • 安全鉴权:内置 Token 验证,并自动拦截局域网/内网 IP 请求。
  • 功能丰富:支持长截图(Full Page)、自定义分辨率、实时 MJPEG 直播。
  • 便捷管理:提供 lvs 终端快捷指令,拥有全交互式菜单(安装/重启/日志/卸载)。

🚀 一键部署

支持 Debian / Ubuntu 系统。请在 SSH 终端执行以下命令:

Bash

wget -O liveshot.sh https://raw.githubusercontent.com/ypkin/LiveShot/refs/heads/main/liveshot.sh && chmod +x liveshot.sh && ./liveshot.sh

安装完成后,直接输入 lvs 即可呼出管理菜单,查看运行状态或重置 Token。


🛡️ 进阶:Nginx 反代安全配置(隐藏 Token)

默认情况下,API 需要在 URL 中携带 token 参数,这在公开分享(如放入 GitHub Readme 或 OBS 直播源)时非常不安全。

我们可以利用 Nginx 的反向代理功能,将 Token 和目标 URL “写死” 在服务器配置中,对外只暴露一个安全的静态链接。

公开访问效果:

  • 直播流地址https://your-domain.com/gh-live
  • 静态图地址https://your-domain.com/gh-shot

🔒 安全设置(Nginx)

修改 Nginx 配置,达到隐藏 Token 的目的!

访问地址:

  • 高清直播https://服务端域名/gh-live
  • 高清截图https://服务端域名/gh-shot

Nginx 配置代码:

Nginx

server {
    # 1. 端口监听 (保持原样)
    listen 80;
    listen [::]:80;

    listen 443 ssl;
    listen [::]:443 ssl;

    listen 443 quic;
    listen [::]:443 quic;

    server_name 服务端域名;

    # 2. SSL 证书 (保持原样)
    ssl_certificate /etc/nginx/certs/服务端域名_cert.pem;
    ssl_certificate_key /etc/nginx/certs/服务端域名_key.pem;

    # 3. HTTP 强制跳转 HTTPS
    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }

    # =========================================================
    # [新增] 安全直播路由 (用于 HTML / 实时监控)
    # 访问地址: https://服务端域名/gh-live
    # =========================================================
    location = /gh-live {
        # 【核心配置写死参数URL  Token
        set $args "url=https://监控网站域名&token=mytoken";

        # 转发到后端 /live 接口
        proxy_pass http://服务端ip:3000/live;

        # 直播流专用配置 (必须关闭缓冲和缓存)
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
        proxy_cache off;
        chunked_transfer_encoding on;

        # 保持 HTTP/3 支持
        add_header Alt-Svc 'h3=":443"; ma=86400';
    }

    # =========================================================
    # [新增] 安全静态截图路由 (用于 GitHub README)
    # 访问地址: https://服务端域名/gh-shot
    # =========================================================
    location = /gh-shot {
        # 【核心配置写死参数URL  Token (指定 720P 分辨率)
        set $args "url=https://监控网站域名&token=mytoken&width=1280&height=720";

        # 转发到后端 /screenshot 接口
        proxy_pass http://服务端ip:3000/screenshot;

        proxy_set_header Host $host;
        proxy_http_version 1.1;
        
        add_header Alt-Svc 'h3=":443"; ma=86400';
    }

    # =========================================================
    # [原有] 通用根路径 (需要手动带参数)
    # =========================================================
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   Host $host;
        
        proxy_pass         http://服务端ip:3000;
        
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";

        add_header Alt-Svc 'h3=":443"; ma=86400';
    }

    # =========================================================
    # [原有] 静态资源缓存
    # =========================================================
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|bmp|swf|eot|svg|ttf|woff|woff2|webp)$ {
        proxy_pass http://服务端ip:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        
        proxy_cache my_proxy_cache;
        proxy_set_header Accept-Encoding "";
        aio threads;
        # add_header Cache-Control $add_cache_control;
        add_header Alt-Svc 'h3=":443"; ma=86400';
        log_not_found off;
        access_log off;
    }

    client_max_body_size 1000m;
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注