V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
star7th
V2EX  ›  分享创造

screenshot 网站截图服务(beta)

  •  1
     
  •   star7th · 2022-04-12 12:03:40 +08:00 · 3655 次点击
    这是一个创建于 974 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简要描述

    • screenshot 是一个在线服务,功能是把网页生成图片。下面将介绍如何使用.

    快速试用预览

    请求 URL

    请求方式

    • GET 或者 POST

    参数

    参数名 必选 类型 说明
    url string 需要生成截图的网页 url
    width int 截图里使用的窗口宽度。默认 1376
    height int 截图里使用的窗口高度。默认 768
    format string 返回的格式。可选值有 json 、file 、html 。默认值是 json ,意思是返回 json 格式的字符串。下文会给出各种返回示例

    当 format=json 时的返回

      {
        "base64": "(base64 内容)",
    	
      }
    

    当 format=html 时的返回

    // 它输出的是一段 hrml 代码,这段代码如果是直接浏览器访问,则会直接在用户浏览器中显示图片出来
    <img src="data:image/png;base64,${base64}" >
    
    
    

    当 format=html 时的返回

    
    直接输出二进制文件,如果是直接浏览器访问,则弹出文件下载框来下载文件
    
    
    33 条回复    2022-04-17 21:43:04 +08:00
    nexmoe
        1
    nexmoe  
       2022-04-12 13:08:47 +08:00
    不错
    linglin0924
        2
    linglin0924  
       2022-04-12 13:31:46 +08:00 via Android
    这是啥原理。获取 html 渲染吗
    star7th
        3
    star7th  
    OP
       2022-04-12 13:35:27 +08:00
    @linglin0924 是的,就是服务端渲染
    awesomes
        4
    awesomes  
       2022-04-12 13:40:12 +08:00
    这种东西技术很简单,而且还有更多的比如水印、高亮元素、绕过一些网站的验证等都可以做,这个东西的重点是要在服务端跑浏览器渲染需要大量的服务资源,配置低了压根没戏,做成免费服务只怕你没这个财力
    star7th
        5
    star7th  
    OP
       2022-04-12 13:49:30 +08:00
    @awesomes 边运行边看吧,现在都没多少人用,没必要过分担心资源使用问题,大不了到时候要去登录验证+次数限制即可
    linglin0924
        6
    linglin0924  
       2022-04-12 14:20:23 +08:00
    @star7th

    渲染可以挂在自己的家用电脑上吧,成图靠着云服务器转发。
    star7th
        7
    star7th  
    OP
       2022-04-12 14:21:57 +08:00
    @linglin0924 我不想因此而一直开着自己的电脑,所以不会考虑用家用电脑渲染
    sarices
        8
    sarices  
       2022-04-12 14:25:02 +08:00
    打不开
    iqoo
        9
    iqoo  
       2022-04-12 14:28:45 +08:00
    Internal Server Error, real status: 500
    iqoo
        10
    iqoo  
       2022-04-12 14:29:54 +08:00
    这种服务有风险。浏览器内核更新不及时的话,用个 1day 就入侵了。
    missdeer
        11
    missdeer  
       2022-04-12 14:31:19 +08:00
    Internal Server Error, real status: 500
    挂了
    star7th
        12
    star7th  
    OP
       2022-04-12 14:32:07 +08:00
    @sarices
    @iqoo
    被太多访问搞挂了一下。不过它会利用 k8s 的机制自动重启,过会儿就好了
    star7th
        13
    star7th  
    OP
       2022-04-12 14:32:35 +08:00
    @iqoo 没事,反正它是跑在容器里,入侵也是入侵容器
    Ritter
        14
    Ritter  
       2022-04-12 14:34:16 +08:00
    用的 puppeteer 吗
    star7th
        15
    star7th  
    OP
       2022-04-12 14:43:13 +08:00
    @Ritter 是的
    zzl22100048
        16
    zzl22100048  
       2022-04-12 15:39:01 +08:00
    让我想到了 rendertron
    AkaGhost
        17
    AkaGhost  
       2022-04-12 17:11:05 +08:00 via Android
    持续用的话 gitbub 的 actions 去调用 headless chrome 会不会更好一些?

    自己的设备浏览器可以直接截取,更新缩览图的话也可以用 actions ,不太能想通这个站点的应用场景… :thinking:
    mclxly
        18
    mclxly  
       2022-04-12 17:19:35 +08:00
    类似的工具我做过,想做好太难,会遇到例如动态加载、顶部固定导航栏、超长网页(高度大于 5 万像素)等问题。

    https://screenshot.showdoc.com.cn/capture?format=html&url=https://www.jd.com/
    下方很多空白方块。
    star7th
        19
    star7th  
    OP
       2022-04-12 17:26:08 +08:00
    @mclxly 动态加载的,我本来想过通过模拟滚动的方式解决,但是这样又会增加资源消耗和错误率,所以就放弃了。这样的服务是挺难的,我看用户情况在决定投入多少人力和资源去做吧。多人用就花更多力气去做,少人用就少一点。
    star7th
        20
    star7th  
    OP
       2022-04-12 17:28:39 +08:00
    @wyf001912hp 其实这个服务是朋友让我做,我做完后就顺便放出来的。我想到的场景有两个:
    1 ,面向设计师的产品,有时候需要提供一个功能,就是设计师输入一个网址,就生成截图给他存档。
    2 ,可以生成网页海报。比如说分享年度账单截图到朋友圈之类的
    hazardous
        21
    hazardous  
       2022-04-12 17:41:07 +08:00
    https://github.com/scrapinghub/splash
    python 网站快照,用了很多年了
    tsingwong
        22
    tsingwong  
       2022-04-12 17:45:01 +08:00
    借鉴 https://github.com/alvarcarto/url-to-pdf-api 在公司内部写了个类似的服务,是
    yisier
        23
    yisier  
       2022-04-12 19:14:46 +08:00
    star7th
        24
    star7th  
    OP
       2022-04-13 00:48:44 +08:00
    @mclxly 我已经开启模拟滚动。现在可以生成京东首页了。https://screenshot.showdoc.com.cn/capture?format=html&url=https://www.jd.com/
    star7th
        25
    star7th  
    OP
       2022-04-13 00:52:28 +08:00
    @sarices
    @iqoo
    @missdeer
    早前经常发生故障打不开是因为计算资源拥堵。现在我迁移到了新机器,应该可以一直稳定正常了。
    rizon
        26
    rizon  
       2022-04-13 18:49:44 +08:00
    这东西是怎么处理脚本的啊?
    比如 js 里我写一个死循环,然后用来做 ddos 攻击,这个服务会怎么处理呢?
    rizon
        27
    rizon  
       2022-04-13 18:50:53 +08:00
    @rizon #26 如果是监测网页内容是否渲染完成,我是不是可以通过脚本动态的改变网页内容,然后让你的渲染进程一直不停止,来利用的你的计算资源做些什么事情?
    star7th
        28
    star7th  
    OP
       2022-04-13 19:52:59 +08:00
    @rizon ddos 攻击那这个服务就挂掉呗。反正不是什么重要服务。它过一会儿会自己容灾重启的。
    star7th
        29
    star7th  
    OP
       2022-04-13 19:53:34 +08:00
    @rizon 计算资源有个总量限制的。如果异常的话,会告警我去看的,我会禁止。
    seakingii
        30
    seakingii  
       2022-04-14 14:33:40 +08:00
    https://screenshot.showdoc.com.cn/capture?format=html&url=https://www.jd.com/

    完全生成不了
    我感觉没必要,也没能力提供免费服务.自己用用就行了.
    star7th
        31
    star7th  
    OP
       2022-04-14 15:04:22 +08:00
    @seakingii 就你发的这个链接,生成京东首页的,我这边没问题,能生成。只是生成比较慢,需要好几秒生成+几秒下载。生成的截图差不都 9M 大小
    Kinnice
        32
    Kinnice  
       2022-04-17 20:12:36 +08:00 via Android
    @rizon 比如挖矿脚本
    star7th
        33
    star7th  
    OP
       2022-04-17 21:43:04 +08:00
    @Kinnice 这玩意有执行资源限制 /执行时间限制,而且限制还挺死的,那一点点算力资源能挖什么矿,吃力不讨好。等服务器持续高占,告警发给我,进程就会我结束掉。做这件事纯属是自己得不到好处,还给别人添麻烦。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3018 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:42 · PVG 08:42 · LAX 16:42 · JFK 19:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.