关于java:Java实现网页截图登录截图

35次阅读

共计 1206 个字符,预计需要花费 4 分钟才能阅读完成。

对于 Java 实现网页截图这个问题,笔者在网上一番搜寻之后,大略看到了如下三种实现形式。

  • 应用 Robot
  • 利用 JNI,调用第三方 C /C++ 组件
  • 自行解析 HTML 标记,并将其图像化

第一种形式无奈同时解决大量数据,第二种形式减少了技术的复杂性,第三章形式中规中矩,然而开发费时,尤其时对于 JavaScript 的解析,难度会增大很多。所以,笔者放弃应用了前 3 种形式,间接应用了一个第三方截图服务,目前来看各方面都是很称心的。

该服务有如下特点:

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

应用形式也很简略,咱们关上它的首页 https://www.screenshotmaster.com/ 注册一个账号,而后你会在用户核心获取到一个惟一的 Token,保留好这个 Token 不要透露!

上面来看看它反对的参数:

您能够返回 API 文档页面查看更多的参数。

应用 Java 调用截屏巨匠的接口获取截图:

package main;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLEncoder;

public class Main {public static void main(String[] args) {
        try {
            // 参数
            String token = "YOUR_API_TOKEN";
            String url = URLEncoder.encode("https://www.baidu.com");
            int width = 1280;
            int height = 800;
            int full_page = 1;

            // 结构 URL
            String query = "https://www.screenshotmaster.com/api/v1/screenshot";
            query += String.format("?token=%s&url=%s&width=%d&height=%d&full_page=%s",
                    token, url, width, height, full_page);
            URL apiUrl = new URL(query);

            // 调用 API 并将后果保留进 screenshot.png
            InputStream inputStream = apiUrl.openStream();
            OutputStream outputStream = new FileOutputStream("./screenshot.png");
            inputStream.transferTo(outputStream);

            inputStream.close();
            outputStream.close();} catch(Exception ex) {ex.printStackTrace();
        }
    }
}

正文完
 0