星际回退(ipwb):与ipfs的web归档集成

ipwb的Python项目详细描述


图像

行星际回退(IPWB)

Web存档的点对点永久性

构建状态pypicodecov

行星际回退(ipwb)通过传播warc文件到ipfs网络。ipfs是一个对等内容寻址文件系统,它固有地允许重复数据消除,并有助于选择性复制。ipwb在分发到ipfs以利用重复数据消除之前拆分warc响应记录的头和有效负载,构建一个cdxj索引,并引用返回的ipfs散列,并在重播时组合来自IPF的报头和有效负载。

星际回退主要由两个脚本组成:

  • ipwb/indexer.py-存档索引脚本,该脚本从指定的warc中提取http头、http负载(响应体)和warc响应记录头的相关部分,并创建字节字符串表示。然后,索引器使用本地运行的ipfs守护进程将字节字符串推送到ipfs中,然后使用此元数据创建一个cdxj文件用于replay.py。
  • ipwb/replay.py-基本的回放脚本,用于解决对ipfs中包含的存档内容的请求,以便在浏览器中进行回放。

IPWB索引和回放过程的图形表示:

image

档案重放系统的一个重要方面是重写各种资源引用以进行适当的纪念品重建,以便从与根纪念品大约相同的日期起,而不是从活动站点(在这种情况下,资源可能具有已更改或丢失)。许多存档重播系统执行服务器端重写,但当使用javascript生成uri时,它有其局限性。为了处理这个问题,我们使用服务工作者在取消引用请求时在客户端重新路由请求,以避免任何服务器端重新布线。为此,我们实现了一个单独的库,即reconstructive,它可由任何存档重放系统重用和扩展。

另一个重要的档案重播的特点是在纪念品中加入一个档案横幅。存档横幅的目的是突出显示重播的页面是纪念品而不是实时页面,提供有关纪念品和存档的元数据,并促进其他交互。在不同的网络档案重放系统中使用的许多档案横幅,本质上都是突兀的,存在风格泄露等问题。为了消除这两个问题,我们实现了一个自定义HTML元素<;reconstructive banner>;作为重建库的一部分,用于IPWB。

Service WorkerCustom ElementAPI都是新的,仅在现代Web浏览器(如Chrome>;V67、Firefox>;V63)中受支持。

安装

星际回退(ipwb)需要python 3.6+。IPWB也可以与Docker一起使用(请参见下文)。

对于传统用法,可以使用pip安装最新版本的ipwb:

$ pip install ipwb

包含尚未发布的更改的最新开发版本可以从源安装:

$ git clone https://github.com/oduwsdl/ipwb
$ cd ipwb
$ pip install -r requirements.txt
$ pip install ./

设置

在启动ipwb之前,必须安装并运行行星际文件系统(ipfs)守护程序。请参阅安装ipfs页以完成此操作。今后,我们希望能使这项工作更加自动化。安装ipfs后,启动守护程序:

$ ipfs daemon

如果在启动守护程序时遇到与默认API端口5001的冲突,则在启动守护程序之前运行以下命令将更改API端口以访问您选择的端口之一(此处显示为5002):

$ ipfs config Addresses.API /ip4/127.0.0.1/tcp/5002

索引

在单独的终端会话中(如果在后台启动守护进程,则相同),指示ipwb将warc文件的内容推送到ipfs中,并创建记录索引:

$ ipwb index (path to warc or warc.gz)

…例如,从ipwb存储库的根目录:

$ ipwb index samples/warcs/salam-home.warc

ipwb索引器将warc划分为warc记录,并提取warc响应头、http响应头和http响应体(有效负载)。从warc响应头中提取相关信息,为http响应头和负载创建临时字节字符串,并将这两个字节字符串推送到ipfs中。默认情况下,生成的cdxj数据会写入标准输出,但可以重定向到文件,例如

$ ipwb index (path to warc or warc.gz) >> myArchiveIndex.cdxj

重播

IPWB还包括一个档案回放系统,以重新体验分发给IPFS的内容。ipwb回放系统需要提供并使用cdxj索引,方法是将索引文件的路径指定为回放系统的参数:

$ ipwb replay <path/to/cdxj>

ipwb还支持使用ipfs散列或任何http位置作为cdxj的源:

$ ipwb replay http://myDomain/files/myIndex.cdxj
$ ipwb replay QmYwAPJzv5CZsnANOTaREALhashYgPpHdWEz79ojWnPbdG

一旦启动,重播系统的Web界面就可以通过Web浏览器访问,例如,默认情况下,可以通过http://localhost:5000/" rel="nofollow">http://localhost:5000/。

要在localhost以外的域名下运行它,最简单的方法是使用支持https的反向代理。重播系统利用服务工作者进行URL重新路由/重写,以防止实时泄漏。(僵尸)。但是,出于安全原因,许多web浏览器都为服务工作者api强制使用https,只有当域是localhost时才例外。Caddy服务器和traefik可以用作反向代理服务器,并且非常容易设置。它们带有内置的https支持和管理(安装和更新)tls证书,透明且自动地从加密。但是,任何在前端支持https的web服务器代理都可以工作。要使ipwb replay知道代理,请使用--proxy-p标志提供代理url。这样,在生成各种完全限定的域名(fqdn)uri或绝对uri(例如,时间映射或链接头中的那些uri)而不是默认的http://localhost:5000时,重播将生成所提供的代理url作为前缀。当服务在专用网络或容器中运行并且仅通过反向代理公开时,这是必要的。假设反向代理服务器正在运行并准备将https://ipwb.example.com上的所有流量转发到ipwb replay服务器,则可以按如下方式启动replay:

$ pip install ipwb
0

使用Docker

提供了一个预构建的Docker图像,可以按如下方式运行:

$ pip install ipwb
1

容器将运行一个ipfs守护进程,索引一个示例warc文件,并使用新创建的索引重播它。需要几秒钟才能准备好,然后可以在http://localhost:5000/" rel="nofollow">http://localhost:5000/通过示例存档页访问回放。

要索引和重播您自己的warc文件,请使用-v(或--volume)标志绑定容器中的mount数据文件夹,并相应地运行命令。提供的docker镜像指定了/data目录,其中有warccdxjipfs文件夹,其中主机文件夹可以单独挂载,也可以作为父目录/data的单个挂载点。假设主机有一个/path/to/data文件夹,其中有warccdxjipfs文件夹,以及位于/path/to/data/warc/custom.warc.gz的warc文件

$ pip install ipwb
2

如果主机文件夹结构不是/some/path/{warc、cdxj、ipfs}那么这些卷需要单独装入。

要从源代码构建映像,请在签出源代码的目录中运行以下命令。本地生成的映像的名称可以是任何内容,但我们使用oduwsdl/ipwb与上述命令保持一致。

$ pip install ipwb
3

默认情况下,映像生成过程还执行测试,因此生成映像可能需要一段时间。它确保不会在测试失败的情况下创建映像。但是,可以通过提供build arg--build arg skiptest=true来跳过测试,如下所示:

$ pip install ipwb
4

帮助

在IPWB中使用子命令可以通过提供-h--help标志来访问,如下所示。

$ pip install ipwb
5
$ pip install ipwb
6
$ pip install ipwb
7

项目历史

此回购协议包含集成warcs和ipfs开发于2016年3月在加拿大多伦多发布的档案:web archive hackathon。该项目还介绍于:

  • 2016年6月在新泽西州纽瓦克举行的2016年数字图书馆联合会议。
  • 2016年6月在新泽西州纽瓦克举办的2016年网络归档和数字图书馆(WADL)研讨会。
  • 2016年9月,德国汉诺威的《2016年数字图书馆理论与实践》(TPDL)杂志。
  • 2017年6月在英国伦敦发布了4.0:Web存档数据
  • 2017年6月在英国伦敦召开的国际互联网保护联盟(IIPC)网络存档会议(WAC)。
  • "HRFF="HTTPS://www. DelasalZeDeWeb.NET/"Re="NoFoLoLy"> 2018年8月在CA旧金山的分布式Web峰会2018版 IPFS Lab Day.

引用项目

我们有许多与本项目相关的出版物,但最重要和最主要的出版物是在TPDL 2016年出版的。(阅读pdf

< Buff行情>

Mat Kelly、Sawood Alam、Michael L.Nelson和Michele C.Weigle。星际回退:Web存档的点对点永久性。《第20届数字图书馆理论与实践国际会议论文集》,411-416页,德国汉堡,2016年6月。

$ pip install ipwb
8

许可证

麻省理工学院< /P>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JBossJava进程内存持续增长   Java postincrement(++)在作为参数传递时表现不符合预期   TableView列的java编辑值   java根据springboot@Scheduled注释使用的条件动态修改调度程序计时   java无法将jsp表单值设置为类变量   java ParseQuery from字段未保存   java为什么日历返回月份。是否获取(Calendar.MONTH)上个月而不是当前月?   java无法获取api密钥的md5指纹   java通用DAO和嵌套属性支持   javapomi的版本已经改变了。从OJDBC6到OJDBC8的xml。使用新版本OJDBC8执行某些查询时出现锁定问题   java IntelliJ颜色方案定制   java从第三方读取Linux存储库   amazon s3在AWS s3 Java SDK中设置对象元数据   java一对多映射比