blog icon indicating copy to clipboard operation
blog copied to clipboard

pywb

Open anjia opened this issue 6 years ago • 1 comments

pywb

https://pywb.readthedocs.io/en/latest/

Webrecorder pywb 是 python 的一个功能完备的、高级 web 归档捕获和重播框架。它提供了命令行工具,高保真 Web 存档访问。版本 2.0

pywb 是功能完备的 web archive replay 系统,也叫 wayback machine,提供 replay, view, archived。

pywb 有很多命令行,先来看两个入门的

  • wb-manager 命令行工具,管理常见 collection 的操作,查看更多
  • wayback(pywb) 启动一个 web server 提供访问 web archives,查看更多

想要创建一个 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
    • 帮助 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/
    • Warcserver 不执行 rewrite 和 record, 但是会加载 config.yaml 里的所有 collections
  • wayback (pywb)
    • main pywb application 就像一个 wayback application 被安装 (pywb是同样的application,以后可能就都用它了)
    • 该app运行在 8080 端口,默认情况。配置是在 config.yaml
    • 详细信息可查阅 Configuring the Web Archive,包括配置选项和自定义
  • live-rewrite-server
    • 这个 cli 是 wayback 的快捷方式(shorcut), 但是只要 Live Web Collection
    • 端口 8090, 从 live web 重写内容,有利于测试
    • 这个app等价于 wayback --live ,除了没有使用 config.yaml 里的其它 collections

Configuring the Web Archive

pywb 提供了一种可扩展的 YAML , 基于配置格式,通过 config.yaml, 在每一个 web archive 的根目录。

https://pywb.readthedocs.io/en/latest/manual/configuring.html#configuring-pywb

  1. 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
  2. 目录结构
    • 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 文件
        • 可配置多个
  3. 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/  # 在浏览器中访问

anjia avatar Aug 14 '18 08:08 anjia