鄙人一直在竭力简化小花仙高清截图的操作步骤。这次再来尝试使用原生的Chrome远程调试来操作CDP的指令。
参考之前的文章python selenium chrome 控制devtools 一些线索将一个可以使用Flash的浏览器添加一个启动参数--remote-debugging-port=9222,然后访问http://hua.61.com/Client.swf,登录账号,然后打开要截图的玩家面板。
再开一个浏览器,访问http://localhost:9222,按F12打开开发者工具,切换到Console。粘贴下列代码,按照注释修改开头的那几个参数并回车(这里写的参数是截图玩家面板的形象,如果是截取这个形象的就可以不用修改直接回车)。稍等片刻即可从第二个打开的浏览器看到下载文件的提示。

var shotWidth = 4320; // 截图宽
var shotHeight = 7680; // 截图高
var scale = 20; // 100除以缩放倍率的商,例如缩放5.0倍就是100/5.0=20
var panX = -4500; // Flash缩放后的移动视野X
var panY = -2000; // Flash缩放后的移动视野Yfunction downloadFile(fileName, content) { //下载base64图片var base64ToBlob = function(code) {let raw = window.atob(code);let rawLength = raw.length;let uInt8Array = new Uint8Array(rawLength);for(let i = 0; i < rawLength; ++i) {uInt8Array[i] = raw.charCodeAt(i);}return new Blob([uInt8Array], {type: "image/png"});};let aLink = document.createElement('a');let blob = base64ToBlob(content); //new Blob([content]);let evt = document.createEvent("HTMLEvents");evt.initEvent("click", true, true); //initEvent 不加后两个参数在FF下会报错  事件类型,是否冒泡,是否阻止浏览器的默认行为aLink.download = fileName;aLink.href = URL.createObjectURL(blob);aLink.click();
};var fileBase64 = "";let sleep = (time) => {return new Promise(resolve => setTimeout(resolve, time))
}var xmlhttp;
if (window.XMLHttpRequest)
{//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码xmlhttp=new XMLHttpRequest();
}
else
{// IE6, IE5 浏览器执行代码xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{if (xmlhttp.readyState==4 && xmlhttp.status==200){let responseJSON = JSON.parse(xmlhttp.responseText);let wsURL = "";for (var x in responseJSON) {if (responseJSON[x].url.lastIndexOf("http://hua.61.com/Client.swf") != -1) {wsURL = responseJSON[x].webSocketDebuggerUrl;}}let ws = new WebSocket(wsURL);ws.onopen = async function (d) {console.log('chrome remote debugger connected');ws.send(`{"id": 1, "method": "Emulation.clearDeviceMetricsOverride", "params": {}}`);ws.send(`{"id": 1, "method": "Emulation.setDeviceMetricsOverride", "params": {"mobile":false, "width":` + shotWidth + `, "height":` + shotHeight + `, "deviceScaleFactor": 1}}`);ws.send(`{"id": 1, "method": "Page.navigate", "params": {"url": "javascript:document.getElementsByTagName('embed')[0].Zoom(500);"}}`);await sleep(2000);ws.send(`{"id": 1, "method": "Page.navigate", "params": {"url": "javascript:document.getElementsByTagName('embed')[0].Zoom(` + scale + `);"}}`);await sleep(5000);console.log("flash zoomed");ws.send(`{"id": 1, "method": "Page.navigate", "params": {"url": "javascript:document.getElementsByTagName('embed')[0].Pan(` + panX + `,` + panY + `,0);"}}`);await sleep(5000);console.log("flash view moved");await sleep(5000);ws.send(`{"id": 155, "method": "Page.captureScreenshot", "params": {"fromSurface":true}}`);await sleep(5000);ws.send(`{"id": 1, "method": "Emulation.clearDeviceMetricsOverride", "params": {}}`);console.log("cleared emulation");ws.send(`{"id": 1, "method": "Page.navigate", "params": {"url": "javascript:document.getElementsByTagName('embed')[0].Zoom(500);"}}`);console.log("flash zoom reset");}ws.onmessage = function(d) {if (JSON.parse(d.data)['id'] == '155') {console.log('screenshot captured');console.log('png base64 length: ' + JSON.parse(d.data)['result']['data'].length);fileBase64 = JSON.parse(d.data)['result']['data'];downloadFile('output.png', fileBase64);}}}
}
xmlhttp.open("GET","http://localhost:9222/json",true);
xmlhttp.send();

参考资料:http://fex.baidu.com/blog/2014/06/remote-debugging-protocol/

小花仙 通过远程Chrome远程调试来高清截图相关推荐

  1. 【全网首发最全】首届盘古石杯全国电子数据取证大赛晋级赛write up 2023年奇安信取证比赛 高清截图

    2023盘古石杯晋级赛write up技术交流wechat N34939 高清截图解析 引用xiang同学https://mp.weixin.qq.com/s/NLuj2g7vrZHCaitUjUz5 ...

  2. h5跨域访问图片_网页保存为图片及高清截图的优化 | canvas跨域图片配置

    本次技术调研来源于H5项目中的一个重要功能需求:实现微信长按网页保存为截图. 这里有个栗子(请用微信打开,长按图片即可保存):3分钟探索你的知识边界 将整个网页保存为图片是一个十分有趣的功能,常见于H ...

  3. 网页保存为图片及高清截图的优化 | canvas跨域图片配置

    本次技术调研来源于H5项目中的一个重要功能需求:实现微信长按网页保存为截图. 这里有个栗子(请用微信打开,长按图片即可保存):3分钟探索你的知识边界 将整个网页保存为图片是一个十分有趣的功能,常见于H ...

  4. 【高清截图】UbuntuKylin 14.04 桌面版安装步骤

    Ubuntu 14.04 北京时间今日凌晨3点发布,守了一夜,一发布就立即下载了镜像文件,要知道明天下载服务器都比较繁忙.因为官方网站直接跳转到中文麒麟版本的页面,我先下载了麒麟版本,先用用这个吧!当 ...

  5. 【Unity】游戏高清截图

    需求 截取游戏实时截图,作为宣传图. 具体要求 (1)图片五张或以上: 图片尺寸以游戏实际画面为准.(2)横版游戏建议尺寸: 16:9,1280*720及以上. 解决思路 (1)因为是横版2D休闲游戏 ...

  6. Adobe acrobat 获得PDF高清截图的两种方法(翻译外文用)

    第一种方法也是最推荐(最高清的截图)的方法: 1 打开PDF然后,文件->导出->图像->png:最后再选择保存的文件夹就可以了,这样就能保存高清的图像.如果需要裁减边缘就把图像用普 ...

  7. 【截取整个网页】Chrome浏览器快速截屏,高清截图

    Chrome版本78,window 10系统 第一步:打开 Chrome 浏览器,输入网址,例如输入网址:https://www.golianghao.com. 第二步:Ctrl + shift + ...

  8. swift 高清截图 ScrollView截图

    extension UIScrollView {var capture: UIImage? {var image: UIImage? = nilUIGraphicsBeginImageContext( ...

  9. Kubuntu 15.10 高清截图欣赏

    KUbuntu 15.10 发布有一段时间了,个人非常喜欢 KDE 的设计,而且 KUbuntu 包括大量的改进,提供最新的 Plasma 5.4 桌面作为默认桌面环境,并提供最新的 KDE Appl ...

最新文章

  1. sap系统前台数据与后台表之间_数据治理之SAP软件非生产数据清除方法
  2. Web离线应用解决方案——ServiceWorker
  3. linux hexdump命令详解
  4. 「CTSC2018」假面
  5. php数字两位小数_PHP保留两位小数的几种方法
  6. requireJS和seajs区别?
  7. SANS研究所:7大最危险的攻击技术介绍
  8. 1295 N皇后问题
  9. NuStore使用说明
  10. java技术简介英文_Java技术常见的英文缩写
  11. Image Cup,我和几位师兄一起奋战!
  12. A 股暴跌,户均亏 2 万!刚写好的辞职信又撕了……
  13. luoguP3912 素数个数
  14. 有一些无声话语,只有寻梦的人彼此听得见
  15. UITableView局部刷新
  16. SQLPrompt 注册失效方法
  17. 机器人动力学与参数辨识学习笔记(一)
  18. 蓝桥杯---史丰收速算
  19. 国产计算机系统有哪些,国产电脑操作系统有哪些(华为鸿蒙系统笔记本电脑)...
  20. PowerBI 开发 第22篇:发现异常(Find Anomalies)

热门文章

  1. 【ELAMN预测】基于Elman神经网络预测股价附matlab代码
  2. Win10 NVIDIA Control Panel 丢失解决方案 (Win10 英伟达控制面板丢失解决方案)
  3. 汇编语言程序设计V-贺利坚-专题视频课程
  4. 计算机的收获初一作文,写收获的初一作文五篇
  5. 程序员必须掌握的核心技能有哪些?
  6. linux可用直播软件,linux 下的直播软件 nslive
  7. 大数据技术原理与应用——练习题
  8. Spring源码下载与编译,Debug学习才有效率
  9. 硬盘主引导记录(MBR)及其结构详解
  10. 设计模式系列:GOF23种设计模式总览