工作、学习中,往往有如下的诉求:
1. 学习的课程,一遍不够,想以后反复看。
2. 客户演示的现场,没有网络,还想在一个笔记本上,演示所有交互的H5程序。
下面介绍这个工具: webmirror
先看效果,本地断网,也可以播放需要网络才能看的视频。
技术原理:
写一个代理程序,截获浏览器的网络访问,缓存到本地,以后加载本地请求,实现离线交互(观看,提交,各种API)。
使用方法:
1)配置需要截获的域名:
通过修改 程序目录下的 host 文件。
文件内容如下:
[Golang] 纯文本查看 复制代码 evlon.gitee.io
v30.51cto.com
hw.p0q.top
cdn.jsdelivr.net
其他配置,见文件conf.prod.json, 一般不用配置。可以修改请求和本地路径的替换正则,返回内容的替换正则。用于去除包括时间戳的请求路径,去除脚本判断登录Cookie有效期等动作。
2)使用管理员权限启动程序(需要添加hosts内容到系统)
3) 浏览器配置代理,代理地址见启动界面:
[Asm] 纯文本查看 复制代码 127.0.0.1:8001
4)安装证书,我记得应该是自动安装的,没有的话, 运行这个:install-ca.cmd
5) 浏览器禁用缓存(开发者工具),或者清楚浏览器本身的缓存,主要是保证所有交互经过代理
6)正常打开你要镜像到本地的网站,可以包括登录,操作,播放等。
说明:播放的话,要确保播放完成了,即所有TS报文都缓存到本地了。
7)断网,再试试,播放吧。
其他说明:
缓存的文件结构:
[Asm] 纯文本查看 复制代码 E:.
│ webmirror.exe
│ certmgr.exe
│ conf.prod.json
│ hosts
│ install-ca.cmd
│
├─.certificates
│ evlon.gitee.io.crt
│ evlon.gitee.io.key
│ v30.51cto.com.crt
│ v30.51cto.com.key
│ hw.p0q.top.crt
│ hw.p0q.top.key
│ cdn.jsdelivr.net.crt
│ cdn.jsdelivr.net.key
│
└─cache
├─evlon.gitee.io
│ └─get
│ │ favicon.ico
│ │ favicon.ico_info.json
│ │
│ └─ctos
│ │ default.html
│ │ default.html_info.json
│ │
│ └─17443
│ 0_2_376546_HD.m3u8
│ 0_2_376546_HD.m3u8_info.json
│ data.json
│ data.json_info.json
│ 0_0_374739_HD.m3u8
│ 0_0_374739_HD.m3u8_info.json
│ 0_1_396519_HD.m3u8
│ 0_1_396519_HD.m3u8_info.json
│
├─v30.51cto.com
│ └─get
│ ├─66c40e9bcef9490bb7119cf29e940cf5
│ │ fe069bef2844a13b9e3684119b7447a5-hd-encrypt-stream-00020.ts
│ │ fe069bef2844a13b9e3684119b7447a5-hd-encrypt-stream-00020.ts_info.json
│ │ fe069bef2844a13b9e3684119b7447a5-hd-encrypt-stream-00021_a4724692023779247210690f05f39549.ts
----- 省略 -------
│ │ fe069bef2844a13b9e3684119b7447a5-hd-encrypt-stream-00010.ts
│ │ fe069bef2844a13b9e3684119b7447a5-hd-encrypt-stream-00010.ts_info.json
│ │
│ ├─b83b2cd3bc0247e6af210eee11f5338f
│ │ 0e7643d93bc74f1dca0bc5f4cab1ac09-hd-encrypt-stream-00001_fcbb02abaf286b16967de36894645d7f.ts
│ │ 0e7643d93bc74f1dca0bc5f4cab1ac09-hd-encrypt-stream-00001_fcbb02abaf286b16967de36894645d7f.ts_info.json
----- 省略 -------
│ │
│ └─621cc96139f94640b3fc9ca7f6e787b1
│ 4851396c927960235a1b13b54bf52d1f-hd-encrypt-stream-00001_83593e03ab242a17d634a877bccae470.ts
│ 4851396c927960235a1b13b54bf52d1f-hd-encrypt-stream-00001_83593e03ab242a17d634a877bccae470.ts_info.json
│ 4851396c927960235a1b13b54bf52d1f-hd-encrypt-stream-00002.ts
----- 省略 -------
│
├─hw.p0q.top
│ └─get
│ └─cto
│ └─p
│ ├─50d40ae17a6d038cf9e1d0ae9d8725cad09a237ed9cbe7a7e1bb645e5047815985205596ae5ae3ed2c16cd324d04815e438bf7e351dc15a2460ed7be976cd737
│ │ de.html
│ │ de.html_info.json
│ │
│ ├─d41abec308269cc194b53e010a970e60b4e4a07d5b651c56d757af6a8af30c04e88f5a349e0166a1c90017d2e244675d382ec522f1eb420f4b8c0ddd00e48c21
│ │ de.html
│ │ de.html_info.json
│ │
│ └─8bc0edf24ff49b93ed1eefc9e1e7cae3363f15190af9f9f6b9d369d426b0f600e200f62936e30ffd25517862dc8cfe8886e34b5c10f000fa36553d108310dce0
│ de.html
│ de.html_info.json
│
└─cdn.jsdelivr.net
└─get
├─npm
│ ├─vue@2
│ │ de.html
│ │ de.html_info.json
│ │
│ └─[url=mailto:axios@0.19.2]axios@0.19.2[/url]
│ └─dist
│ axios.min.js
│ axios.min.js_info.json
│
└─gh
└─evlon
└─cdn
├─spop
│ spop.min.js
│ spop.min.js_info.json
│
└─js
hls.min.js
hls.min.js_info.json
hls.min.js.map
hls.min.js.map_info.json
下载:https://wwz.lanzoum.com/iF1Cj0c56mri 密码:30bs |