golang是近几年发展非常迅猛的一款服务器端的语言,其生态也日益丰富。对于使用golang实现网页截图这个需求,笔者在经过一番调研之后发现大家有推荐Selenium方案,但是这一方案问题较多:

  • 需要安装Selenium或是PhantomJS
  • PhantomJS已经停止维护了
  • Selenium的运行需要安装chromedriver
  • chromedriver对chrome的版本有一定要求

还有推荐headless chrome方案的,但是这一方案也需要自行在服务器端安装一款浏览器,对服务器的压力比较大,并发性能也不好,所以最后笔者直接选用了一款第三方API的截图服务。

该服务有如下特点:

  • 支持多线路
  • 支持登录截图
  • 支持UA变换
  • 支持Cookie注入 实现登录截图
  • 支持自定义宽高
  • 支持网页滚动截图
  • 支持设定截图前的延迟时间

使用方式也很简单,我们打开它的首页 https://www.screenshotmaster.com/ 注册一个账号,然后你会在用户中心获取到一个唯一的Token,保存好这个Token 不要泄漏!

下面来看看它支持的参数:

您可以前往API文档页面查看更多的参数。

使用golang调用截屏大师的接口获取截图:

package mainimport ("fmt""io""io/ioutil""net/http"url2 "net/url""os"
)func main() {// 参数token := "YOUR_API_TOKEN"url := url2.QueryEscape("https://www.baidu.com")width := 1280height := 800full_page := 1// 构造URLquery := "https://www.screenshotmaster.com/api/v1/screenshot"query += fmt.Sprintf("?token=%s&url=%s&width=%d&height=%d&full_page=%s",token, url, width, height, full_page)// 调用APIresp, err := http.Get(query)if err != nil {panic(err)}defer resp.Body.Close()// 检查是否调用成功if resp.StatusCode != 200 {errorBody, _ := ioutil.ReadAll(resp.Body)panic(fmt.Errorf("error while calling api %s", errorBody))}// 保存截图file, err := os.Create("./screenshot.png")if err != nil {panic(err)}defer file.Close()_, err = io.Copy(file, resp.Body)if err != nil {panic(err)}
}

golang快速实现服务端网页截图相关推荐

  1. 有了 serverless,前端也可以快速开发一个 Puppeteer 网页截图服务

    更多云原生技术资讯可关注阿里巴巴云原生技术圈. Puppeteer 是什么? puppeteer 官网的介绍如下: Puppeteer is a Node library which provides ...

  2. Serverless 实战 —— 前端也可以快速开发一个 Puppeteer 网页截图服务

    Serverless 实战 -- 前端也可以快速开发一个 Puppeteer 网页截图服务 更多云原生技术资讯可关注阿里巴巴云原生技术圈. Puppeteer 是什么? puppeteer 官网的介绍 ...

  3. IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议

    1.前言 IM应用从服务端数据的角度来看,它是一种很特殊的应用场景,抛开基础数据.增值业务和附属功能不谈,单从IM聊天工具的立身之本--聊天数据来说,理论上是不需要在服务端存储的(或者说只需要短暂存储 ...

  4. grpc(3):使用 golang 开发 grpc 服务端和client

    1,关于grpc-go golang 能够能够做grpc的服务端和client. 官网的文档: http://www.grpc.io/docs/quickstart/go.html https://g ...

  5. html2canvas 截图div_浏览器端网页截图方案详解

    简介 剖析流行的截图插件 html2canvas 的实现方案,探索其功能上的一些不足之处及不能正确截取的一些场景,比如不支持 CSS 的 box-shadow 截取情况等.探索一种新的实现方式,能够避 ...

  6. 史上最详细浏览器端网页截图方案分析

    简介 剖析流行的截图插件 html2canvas 的实现方案,探索其功能上的一些不足之处及不能正确截取的一些场景,比如不支持 CSS 的 box-shadow 截取情况等.探索一种新的实现方式,能够避 ...

  7. golang实现服务端浏览器截屏

    " 每天,探索一点点." 笔者近期在使用golang进行开发工作时,受360技术公众号曾发布过文章的启发,想到是否可以使用golang操作无屏浏览器(headless browse ...

  8. 快速理解高性能HTTP服务端的负载均衡技术原理

    1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...

  9. golong实现服务端浏览器截屏

    笔者说:近期在使用golang进行开发工作时,受360技术公众号曾发布过文章的启发,想到是否可以使用golang操作无屏浏览器(headless browser)实现诸如爬虫.截屏.自动化测试等功能. ...

  10. DSAPI多功能组件编程应用-HTTP监听服务端与客户端

    本文中,演示了使用DSAPI.网络相关.HTTP监听,快速建立服务端和客户端. HTTP监听服务端的作用,是监听指定计算机端口,以实现与IIS相同的解析服务,提供客户端的网页请求,当然,这不仅仅是应用 ...

最新文章

  1. SharePoint 2013 配置HTTPS(SSL)
  2. oracle学习-PL SQL 存储过程中循环
  3. YOLOV3 --BUG---No labels in D:\yolov5\train_data\train.cache. Can not train without labels.
  4. toj 4606 Homework Checker
  5. Layui的轮播事件和echarts插件事件
  6. 15. CSS 表格
  7. 《Python学习手册》——使用入门
  8. LoadRunner教程(20)-LoadRunner 导出分析报告
  9. java 正则 连续换行_Java正则表达式匹配回车换行多行
  10. 新视野大学英语视听说听力:passage12原文及答案(前四单元)
  11. 服务器中的虚拟化是什么意思,虚拟化是什么意思
  12. 一款免费的科研图表绘图工具——Veusz
  13. Python实现王者农药自动刷金币
  14. (按色谱固定相基质分)液相色谱柱的分类
  15. php 环比计算公式,详情
  16. mysql insert 阻塞_insert遭遇阻塞
  17. 为什么英语学习得不到我们想要的效果?
  18. L3-001. 凑零钱(dfs + 各种剪枝)
  19. datatime模块之timedelta
  20. 打印机服务Print Spooler启动后又自动关闭的解决办法

热门文章

  1. 【CQF Finance Class 4 金融衍生品】
  2. Cortex m0+笔记
  3. (软考)图示法求候选键,及快捷求候选键,和数据库模式分解的表格法,及无损连接分解的快捷判别方法
  4. STM32入门学习 第二天
  5. php curl支付宝登录,PHP接入支付宝教程
  6. u盘插在电脑上灯亮没有反应_U盘插入电脑指示灯一直闪烁却不显示的解决方法...
  7. OKR目标管理专题及模板大全
  8. 微信小程序添加体验成员,根据微信号搜索不到
  9. 大容量sd卡reread之后/dev下概率性出现无设备文件
  10. 白化滤波器 matlab,白化滤波器-matlab-程序.doc