通过JavaScript(或其他)获取浏览器的屏幕截图

Tho*_*isé 25 javascript browser screenshot

出于支持原因,我希望用户能够尽可能简单地截取当前浏览器窗口的屏幕截图并将其发送到服务器.

任何(疯狂的)想法?

Gar*_*owe 7

如果你能做到这一点,这似乎是JavaScript中一个非常大的安全漏洞.想象一下,恶意用户使用XSS攻击在您的网站上安装该代码,然后截取您的所有日常工作.想象一下你的网上银行发生了什么......

但是,可以在JavaScript之外执行此类操作.我开发了一个使用这样的屏幕捕获代码的Swing应用程序,当用户遇到RuntimeException时,它可以很好地向服务台发送一个附带屏幕截图的电子邮件.

我想你可以尝试一个挂在角落里的签名Java小程序(震惊!恐怖!noooooo!).如果使用安装时给出的适当安全权限执行,则可能会强制执行该类屏幕截图代码.

为方便起见,这里是我链接到的网站的代码:

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;

...

public void captureScreen(String fileName) throws Exception {

   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
   Rectangle screenRectangle = new Rectangle(screenSize);
   Robot robot = new Robot();
   BufferedImage image = robot.createScreenCapture(screenRectangle);
   ImageIO.write(image, "png", new File(fileName));
}
...
Run Code Online (Sandbox Code Playgroud)

  • 由于您可以在JavaScript中监控所有按键及其目标,因此该安全点并没有多大意义. (6认同)
  • 我不明白这一整体都在反对安全问题.加里的观点完全有效.想象一下:如果一个随机网站包含你的Facebook,Dropbox或一个网站,它通过iframe提供更多敏感数据(你会因为你的co子而自动将其视为你自己),然后该网站可以截取并发送它某处(可能用于自动图像处理) - 您对此有何看法? (3认同)
  • JavaScript可以抓取整个HTML dom和页面的CSS.这与截图一样好(如果不是更好).然后,您可以在PhantomJS中渲染页面,类似于Jens A. Koch的答案,或者只是将其保存为HTML文件并在浏览器中打开. (3认同)

who*_*ton 5

请参阅此处共享的答案,以获得相对成功的实现:https : //stackoverflow.com/a/6678156/291640

利用:https : //github.com/niklasvh/html2canvas