现在存在问题:要将网站反馈回来的get信号的内容获取到并下载资源
eg:
chrome+键F12可见的内容

解决方式与思路:
方法:

  1. 使用webDriver或者selenium模拟浏览器传输信号,再截取返回回来的信号(这里使用的就是这个方法)。
  2. 使用selenium与browsermob-proxy;browsermob-proxy可以获取http内容导出为HAR文件。

思路:
3. 用selenium的api获取其中里面的message
4. 其中存在将请求变成log的文件的api( LogEntries logs = driver.manage().logs().get(LogType.PERFORMANCE);
),该文件是个json文件,可以使用json来解析获取想要的信息以及其的链接
5. 使用URL获取文件流,下载文件

代码如下:

package test;
import java.io.*;
import java.net.URL;
import java.util.Iterator;
import java.util.logging.Level;import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogEntry;
import org.openqa.selenium.logging.LogType;
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;/*** chromedriver* dev-tool*/
public class ChromedriverNetwork {public static final String port = "1527";public static final String filePath = "C:\\Users\\28124\\Desktop\\测试自动化\\自动化项目\\driver\\chromedriver.exe";public static void main(String[] args) {String sessionId ;String url = "http://www.ting56.com/video/18743-0-3.html";//System.setProperty("webdriver.chrome.driver",filePath);ChromeDriver driver = null;try {ChromeOptions options = new ChromeOptions();DesiredCapabilities cap = new DesiredCapabilities();ChromeDriverService service = new ChromeDriverService.Builder().usingPort(Integer.valueOf(port)).usingDriverExecutable(new File(filePath)).build();options.addArguments("disable-infobars");cap.setCapability(ChromeOptions.CAPABILITY, options);//配置日志LoggingPreferences logPrefs = new LoggingPreferences();logPrefs.enable(LogType.PERFORMANCE, Level.ALL);/**flash 扩展*/cap.setCapability("profile.managed_default_content_settings.images",1);cap.setCapability("profile.content_settings.plugin_whitelist.adobe-flash-player",1);cap.setCapability("profile.content_settings.exceptions.plugins.*,*.per_resource.adobe-flash-player",1);cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);driver = new ChromeDriver(service, cap);//or driver.get(url)driver.navigate().to(url);
//            System.out.println("session id :" + driver.getSessionId());sessionId = driver.getSessionId().toString();LogEntries logs = driver.manage().logs().get(LogType.PERFORMANCE);for (Iterator<LogEntry> it = logs.iterator(); it.hasNext();) {LogEntry entry = it.next();try {//System.out.println(entry.toString());JSONObject json = new JSONObject(entry.getMessage());
//                    System.out.println(json.toString());JSONObject message = json.getJSONObject("message");String method = message.getString("method");//如果是响应if (method != null && "Network.responseReceived".equals(method)) {JSONObject params = message.getJSONObject("params");JSONObject response = params.getJSONObject("response");String messageUrl = response.getString("url");
//                        System.out.println("-----------------------------");if (params.toString().contains("https://od.qingting.fm/m4a/")) {InputStream in=new URL(messageUrl).openConnection().getInputStream(); //创建连接、输入copy流FileOutputStream f = new FileOutputStream("C:\\Users\\28124\\Desktop\\测试自动化\\自动化项目\\file2\\a.m4a");//创建文百件度输出流byte [] bb=new byte[1024]; //接收缓存int len;while( (len=in.read(bb))>0){ //接收f.write(bb, 0, len); //写入问文件}f.close();in.close();}
//                        System.err.println("url:" + url + " params: " + params.toString() + " response: " + response.toString());//打印调用chromedriver 调chrome httpapi 结果
//                        System.out.println(getResponseBody(params.getString("requestId"),port,sessionId));
//                        System.out.println("-----------------------------");}} catch (Exception e) {e.printStackTrace();}}} catch (Exception e) {e.printStackTrace();}finally{if (driver != null){driver.quit();}}}// 根据请求ID获取返回内容public static String getResponseBody(String requestId,String port,String sessionId) {try {// CHROME_DRIVER_PORT chromeDriver提供的端口String url = String.format("http://localhost:%s/session/%s/goog/cdp/execute",port, sessionId);HttpPost httpPost = new HttpPost(url);JSONObject object = new JSONObject();JSONObject params = new JSONObject();params.put("requestId", requestId);//api https://chromedevtools.github.io/devtools-protocol/tot/Networkobject.put("cmd", "Network.getResponseBody");object.put("params", params);httpPost.setEntity(new StringEntity(object.toString()));RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60 * 1000).setConnectTimeout(60 * 1000).build();CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();HttpResponse response = httpClient.execute(httpPost);return EntityUtils.toString(response.getEntity());} catch (Exception e) {e.printStackTrace();}return null;}
}

总结:

  1. 如果使用思路2,可以参考链接
    https://blog.csdn.net/m0_37618247/article/details/85066272

参考链接:
https://blog.csdn.net/qq_36783371/article/details/100122599

获取chrome的network内容并选择下载其中的资源相关推荐

  1. python3文件下载-python3获取文件中url内容并下载代码实例

    这篇文章主要介绍了python3获取文件中url内容并下载代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 #!/usr/bin/env py ...

  2. Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)

    Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3) 1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问 ...

  3. python爬虫获取百度贴吧内容

    python爬虫获取百度贴吧内容 python爬虫获取百度贴吧内容 *声明:本文仅供学习交流使用,请勿用于商业用途,违者后果自负.* python爬虫获取百度贴吧内容 博主是一个比较懒的人,不会按时更 ...

  4. 从零开始写Python爬虫 --- 1.5 爬虫实践: 获取百度贴吧内容

    从零开始写Python爬虫 --- 1.5 爬虫实践: 获取百度贴吧内容 Ehco 5 个月前 经过前期大量的学习与准备,我们重要要开始写第一个真正意义上的爬虫了.本次我们要爬取的网站是:百度贴吧,一 ...

  5. 【技术应用】java通过url爬虫获取公众号文章内容

    [技术应用]java通过url爬虫获取公众号文章内容 一.前言 二.解决思路 三.爬虫工具 四.代码实现 1.爬取公众号文章 2.爬取CSDN文章 五.总结 一.前言 平时在微信或者钉钉发送消息时,会 ...

  6. python获取文本框内容_jquery获取文本框的内容

    使用jquery获取文本框的内容有以下几种: 1.根据ID取值(id属性): // javascript function getUserName(){ var username= $("# ...

  7. python 百度网盘库 根据文件名获取网盘链接_GitHub - tychxn/baidu-wangpan-parse: 获取百度网盘分享文件的下载地址...

    百度网盘分享文件下载链接解析 功能 获取百度网盘分享文件的真实下载地址 将获取到的下载链接复制到IDM.FDM等下载器即可实现高速下载,避免使用百度网盘客户端 运行环境 Python3 (兼容Pyth ...

  8. python中的doc_基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...

  9. VC获取其他进程ListCtrl内容

    VC读写其他进程ListCtrl数据到本进程的实例,下面用Windows任务管理器来做测试: 1.捕获窗口句柄: 用SPY++可以看到如下父子窗口关系: 添加ListCtrl,设置style / Re ...

  10. fetch 自动加cookie_如何在shell中动态获取chrome浏览器的cookie信息

    0. 背景 在工作的时候,经常要接触一些办公系统,在网页上通过机械化的操作,来完成一个简单的功能,比如某台主机权限的申请,通过一套操作一下,大概7.8个步骤,花费30秒的时间,虽然不长,但是要脱离终端 ...

最新文章

  1. Vue 3响应式原理及实现
  2. AngularJS学习笔记(1)——MVC模式的清单列表效果
  3. 社群扫码进群活码引流完整运营源码/对接免签约支付接口/推广正常绑定下级
  4. 用管道pipe实现程序与shell/bash脚本之间的通路
  5. SWIFT学习笔记01
  6. php 判断时间超过5分钟_视频超过5分钟怎么在微信中进行发送
  7. Pannellum:实例之通过全景图游览
  8. 做三维模型_【三维量房+装配式装修】如何玩转装修个性化设计
  9. MacOS配置Sql Server环境
  10. HDU 5411 CRB and Puzzle(矩阵快速幂+可达矩阵)
  11. HDFS文件访问权限
  12. 做“合规”的数据处理者 | 一文图解《网络数据安全管理条例》
  13. 蓝桥杯刷题以及算法解析的网址
  14. Excel学习日记:L20-excel的12个小技巧
  15. svn查找历史版本_svn历史版本对比以及还原到历史版本
  16. html/template
  17. 全球与中国PCB化学镍金专用化学品市场深度研究分析报告
  18. 【Airpods Pro】无法通过蓝牙连接电脑
  19. 病毒无孔不入:电邮一打开病毒自然来(转)
  20. 商务酒店机房改造环控项目解决方案

热门文章

  1. OJ1047: 对数表(C语言)
  2. 因果信号的傅里叶变换_信号傅里叶变换系列文章(1):傅里叶级数、傅里叶系数以及傅里叶变换...
  3. 网络安全课第二节 XSS漏洞检测防御
  4. 网页游戏开发入门教程三(简单程序应用)
  5. 如何安装JRE8.0.202
  6. 计算机统考模拟系统3.0,统考计算机模拟系统操作流程
  7. 杨振宁100岁了,诺奖都不算他的人生巅峰
  8. 服装:鲜嫩小衫 缔造甜美新时尚
  9. 网易易盾—推理拼图验证码的破解
  10. [答疑]关于产品线:充气娃娃,苍井空,猩猩