blog
blog copied to clipboard
pywb
pywb
https://pywb.readthedocs.io/en/latest/
Webrecorder pywb 是 python 的一个功能完备的、高级 web 归档捕获和重播框架。它提供了命令行工具,高保真 Web 存档访问。版本 2.0
pywb 是功能完备的 web archive replay 系统,也叫 wayback machine,提供 replay, view, archived。
pywb 有很多命令行,先来看两个入门的
想要创建一个 WARC 文件,可查看 Creating a Web Archive
Command-Line Apps
安装了 pywb tool-suite 之后,就能用下面的 command-line apps 了。所有的 serve 工具都有不同的默认端口,当然你也可以覆盖它。
-
cdx-indexer
- 提供了一种方法 从 WARC/ARC 创建 CDX(J) 文件。该工具支持 classic-CDX 和 new CDXJ 格式
- indexer 也提供了 options - 所有的 WARC 记录,从POST请求里合并数据
-
cdx-indexer -h
可以查看所有的 options - 以后可能就被移除了,因为有个独立的工具
-
wb-manager
- wb-manager command-line tool 可以用来配置 collections 的目录结构和内容,pywb 会自动读取这些目录结构和内容里的 collections
- 当 wayback 运行的时候,这个工具还能用,pywb 会自动检测很多变化
- 它可以用来
- 创建一个新的 collection
wb-manager init <coll>
- 把 WARCs 添加到 collection
wb-manager add <coll> <warc>
- 添加 override 模板
- 给 collections 添加和移除 metadata,
matadata.yaml
- 列出所有的 collections
- reindex 一个 collection
- 迁移,旧的 CDX 到 CDXJ 风格的 indexes
- 创建一个新的 collection
- 帮助
wb-manager -h
-
warcserver
- Warcserver 是一个独立的 server 组件,它附着在 Warcserver API
- 该 server 运行在 8070 端口,默认情况。serve 索引 和 内容
- CDX Server 是 Warcserver 的子集,使用 CDXJ Server API 的 queries 包含在
- http://localhost:8070/
/index?url=http://example.com/
- http://localhost:8070/
- Warcserver 不执行 rewrite 和 record, 但是会加载
config.yaml
里的所有 collections
-
wayback (pywb)
- main pywb application 就像一个
wayback
application 被安装 (pywb是同样的application,以后可能就都用它了) - 该app运行在 8080 端口,默认情况。配置是在
config.yaml
- 详细信息可查阅 Configuring the Web Archive,包括配置选项和自定义
- main pywb application 就像一个
-
live-rewrite-server
- 这个 cli 是
wayback
的快捷方式(shorcut), 但是只要 Live Web Collection - 端口 8090, 从 live web 重写内容,有利于测试
- 这个app等价于 wayback --live ,除了没有使用 config.yaml 里的其它 collections
- 这个 cli 是
Configuring the Web Archive
pywb 提供了一种可扩展的 YAML , 基于配置格式,通过 config.yaml
, 在每一个 web archive 的根目录。
https://pywb.readthedocs.io/en/latest/manual/configuring.html#configuring-pywb
- Framed vs Frameless Replay
- 要 archived web content, pywb 支持不同的 modes
- Frame Replay:
- archived content 被加载到一个iframe里 actual content
- top frame UI 提供了 info 和 metadata top frame url
- Frameless Replay
- archived content 直接加载,banner UI 被诸如到页面里
- 如何选择:
- 鉴于安全问题,在 framed 模式下运行 pywb【因为恶意(malicious)站点可能修改 banner】
- 某些情况,frameless replay 是合适的(appropriate)
- 也可以禁用 framed replay
- 也支持 HTTP/S proxy mode
- 目录结构
- pywb系统自动访问和管理web archive collections-(遵循定义的目录结构)
- 配置
- 默认配置 pywb/default_config.yamld
- 自定义配置 config.yaml
- 路径
- index_paths 定义了 index files 的子目录,并决定每个archive collection的内容
- index files 通常包含到 WARC file 的指针
- archive_paths 指定 pywb 如何解析在index里列出的 WARC 文件
- 可配置多个
- index_paths 定义了 index files 的子目录,并决定每个archive collection的内容
- etc.
HTTP/S Proxy Mode Access
在没有客户端URL重写的情况下,提供可能更好的重放。 通过 --proxy,即 wayback --proxy my-web-archive
servo-warc-tests
sudo pip3 install pywb --user
## 1. 运行已经存在的
wayback --proxy WBEZ --port 8321
proxychains4 /Users/anjia/quantum/servo/mach run -r --certificate-path proxy-certs/pywb-ca.pem https://www.wbez.org/
## 2. 录制自己的
wb-manager init 360
wayback --proxy 360 --live --proxy-record --autoindex --port 8321
proxychains4 /Users/anjia/quantum/servo/mach run -r --certificate-path proxy-certs/pywb-ca.pem http://localhost:8321/360/record/https://www.360.cn/
proxychains4 /Users/anjia/quantum/servo/mach run -r --certificate-path proxy-certs/pywb-ca.pem https://www.360.cn/
## 3. 测试
wayback --proxy 360 --port 8321
proxychains4 /Users/anjia/quantum/servo/mach run -r --certificate-path proxy-certs/pywb-ca.pem https://www.360.cn/
e.g.
# 运行一个已存在的 archive
wayback --proxy WBEZ --port 8321
# WEBZ 是一个已经存在的文件夹,也称为 Collection
# --port 8321 是配置的端口,在 proxychains.conf 里
## 就可以配置浏览器 Proxy Settings 到特定的端口了,再加载特定的 url,就会加载最新的 archive copy 了
wayback --proxy my-web-archive # 启动pywb,开启代理模式访问
proxychains4 ${SERVO_DIRECTORY}/mach run -r --certificate-path proxy-certs/pywb-ca.pem https://www.wbez.org/
proxychains4 ./mach run -r --certificate-path proxy-certs/pywb-ca.pem https://www.wbez.org/
## other
wayback --record --live -a --auto-interval 10 #
http://localhost:8321/360/record/https://www.360.cn/ # 在浏览器中访问