2020-12-13 18:38:16 +01:00
< div align = "center" >
2020-05-04 17:36:00 +02:00
2021-01-04 20:00:07 +01:00
< img src = "https://raw.githubusercontent.com/akamhy/waybackpy/master/assets/waybackpy_logo.svg" > < br >
2021-01-02 07:50:43 +01:00
2022-01-21 22:38:26 +01:00
< h3 > A Python package & CLI tool that interfaces with the Wayback Machine API< / h3 >
2020-05-05 05:57:02 +02:00
2021-01-04 20:00:07 +01:00
< / div >
2020-10-02 21:46:19 +02:00
2022-01-16 18:31:31 +01:00
< p align = "center" >
2022-01-22 21:56:53 +01:00
< a href = "https://github.com/akamhy/waybackpy/actions?query=workflow%3ATests" > < img alt = "Unit Tests" src = "https://github.com/akamhy/waybackpy/workflows/Tests/badge.svg" > < / a >
2022-01-16 18:31:31 +01:00
< a href = "https://pypi.org/project/waybackpy/" > < img alt = "pypi" src = "https://img.shields.io/pypi/v/waybackpy.svg" > < / a >
< a href = "https://pepy.tech/project/waybackpy?versions=2*&versions=1*&versions=3*" > < img alt = "Downloads" src = "https://pepy.tech/badge/waybackpy/month" > < / a >
< a href = "https://github.com/akamhy/waybackpy/commits/master" > < img alt = "GitHub lastest commit" src = "https://img.shields.io/github/last-commit/akamhy/waybackpy?color=blue&style=flat-square" > < / a >
< a href = "#" > < img alt = "PyPI - Python Version" src = "https://img.shields.io/pypi/pyversions/waybackpy?style=flat-square" > < / a >
2022-01-24 09:16:31 +01:00
< a href = "https://github.com/psf/black" > < img alt = "Code style: black" src = "https://img.shields.io/badge/code%20style-black-000000.svg" > < / a >
2022-01-16 18:31:31 +01:00
< / p >
2021-01-04 20:00:07 +01:00
-----------------------------------------------------------------------------------------------------------------------------------------------
2020-05-05 05:33:16 +02:00
2022-01-16 18:31:31 +01:00
## ⭐️ Introduction
2022-01-21 22:38:26 +01:00
Waybackpy is a [Python package ](https://www.udacity.com/blog/2021/01/what-is-a-python-package.html ) and a [CLI ](https://www.w3schools.com/whatis/whatis_cli.asp ) tool that interfaces with the [Wayback Machine ](https://en.wikipedia.org/wiki/Wayback_Machine ) API.
2022-01-16 18:31:31 +01:00
2022-01-21 22:38:26 +01:00
Wayback Machine has 3 client side [API ](https://www.redhat.com/en/topics/api/what-are-application-programming-interfaces )s.
2022-01-16 18:31:31 +01:00
2022-01-21 22:38:26 +01:00
- [Save API ](https://github.com/akamhy/waybackpy/wiki/Wayback-Machine-APIs#save-api )
- [Availability API ](https://github.com/akamhy/waybackpy/wiki/Wayback-Machine-APIs#availability-api )
- [CDX API ](https://github.com/akamhy/waybackpy/wiki/Wayback-Machine-APIs#cdx-api )
2022-01-16 18:31:31 +01:00
2022-01-21 22:38:26 +01:00
These three APIs can be accessed via the waybackpy either by importing it in a script or from the CLI.
2022-01-16 18:31:31 +01:00
### 🏗 Installation
2020-10-02 20:04:06 +02:00
2022-01-21 22:38:26 +01:00
Using [pip ](https://en.wikipedia.org/wiki/Pip_(package_manager )), from [PyPI ](https://pypi.org/ ) (recommended):
2020-10-02 20:04:06 +02:00
2020-07-18 04:46:59 +02:00
```bash
pip install waybackpy
```
2020-10-02 20:04:06 +02:00
2022-01-21 22:38:26 +01:00
Install directly from [this git repository ](https://github.com/akamhy/waybackpy ) (NOT recommended):
2020-10-02 20:04:06 +02:00
2020-07-22 18:05:02 +02:00
```bash
pip install git+https://github.com/akamhy/waybackpy.git
```
2020-05-04 17:36:00 +02:00
2022-01-20 20:53:05 +01:00
### 🐳 Docker Image
2022-01-16 18:31:31 +01:00
Docker Hub : < https: / / hub . docker . com / r / secsi / waybackpy >
2022-01-02 09:44:45 +01:00
2022-01-21 22:38:26 +01:00
[Docker image ](https://searchitoperations.techtarget.com/definition/Docker-image ) is automatically updated on every release by [Regulary and Automatically Updated Docker Images ](https://github.com/cybersecsi/RAUDI ) (RAUDI).
2022-01-16 18:31:31 +01:00
RAUDI is a tool by SecSI (< https: / / secsi . io > ), an Italian cybersecurity startup.
2021-01-11 18:31:18 +01:00
2022-01-21 05:24:04 +01:00
### 🚀 Usage
2020-10-02 21:46:19 +02:00
2021-01-05 14:38:35 +01:00
#### As a Python package
2022-01-18 16:14:47 +01:00
##### Save API aka SavePageNow
```python
>>> from waybackpy import WaybackMachineSaveAPI
2022-01-18 16:28:39 +01:00
>>> url = "https://github.com"
2022-01-18 16:14:47 +01:00
>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:28:39 +01:00
>>> save_api = WaybackMachineSaveAPI(url, user_agent)
>>> save_api.save()
https://web.archive.org/web/20220118125249/https://github.com/
>>> save_api.cached_save
False
>>> save_api.timestamp()
datetime.datetime(2022, 1, 18, 12, 52, 49)
2022-01-18 16:14:47 +01:00
```
##### Availability API
```python
>>> from waybackpy import WaybackMachineAvailabilityAPI
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> url = "https://google.com"
>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> availability_api = WaybackMachineAvailabilityAPI(url, user_agent)
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> availability_api.oldest()
https://web.archive.org/web/19981111184551/http://google.com:80/
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> availability_api.newest()
https://web.archive.org/web/20220118150444/https://www.google.com/
2022-01-21 22:38:26 +01:00
>>>
2022-01-18 16:14:47 +01:00
>>> availability_api.near(year=2010, month=10, day=10, hour=10)
https://web.archive.org/web/20101010101708/http://www.google.com/
```
2022-01-18 16:28:39 +01:00
##### CDX API aka CDXServerAPI
2021-01-04 20:00:07 +01:00
```python
2022-01-18 16:28:39 +01:00
>>> from waybackpy import WaybackMachineCDXServerAPI
2022-01-18 16:48:17 +01:00
>>> url = "https://pypi.org"
2021-01-04 20:00:07 +01:00
>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
2022-01-18 16:48:17 +01:00
>>> cdx = WaybackMachineCDXServerAPI(url, user_agent, start_timestamp=2016, end_timestamp=2017)
>>> for item in cdx.snapshots():
... print(item.archive_url)
2022-01-21 22:38:26 +01:00
...
2022-01-18 16:48:17 +01:00
https://web.archive.org/web/20160110011047/http://pypi.org/
https://web.archive.org/web/20160305104847/http://pypi.org/
.
. # URLS REDACTED FOR READABILITY
.
https://web.archive.org/web/20171127171549/https://pypi.org/
https://web.archive.org/web/20171206002737/http://pypi.org:80/
2020-10-16 19:07:32 +02:00
```
2022-01-18 16:28:39 +01:00
2022-01-21 22:38:26 +01:00
> Documentation is at <https://github.com/akamhy/waybackpy/wiki/Python-package-docs>.
2020-10-16 19:07:32 +02:00
2020-12-13 18:38:16 +01:00
2021-01-04 20:00:07 +01:00
#### As a CLI tool
2022-01-21 22:38:26 +01:00
Saving a webpage:
2020-12-13 18:38:16 +01:00
```bash
2022-01-21 22:38:26 +01:00
waybackpy --save --url "https://en.wikipedia.org/wiki/Social_media" --user_agent "my-unique-user-agent"
```
```bash
Archive URL:
https://web.archive.org/web/20220121193801/https://en.wikipedia.org/wiki/Social_media
Cached save:
False
```
2020-12-13 18:38:16 +01:00
2022-01-21 22:38:26 +01:00
Retriving the oldest archive and also printing the JSON response of the availability API:
```bash
waybackpy --oldest --json --url "https://en.wikipedia.org/wiki/Humanoid" --user_agent "my-unique-user-agent"
```
```bash
Archive URL:
2021-01-04 20:00:07 +01:00
https://web.archive.org/web/20040415020811/http://en.wikipedia.org:80/wiki/Humanoid
2022-01-21 22:38:26 +01:00
JSON response:
{"url": "https://en.wikipedia.org/wiki/Humanoid", "archived_snapshots": {"closest": {"status": "200", "available": true, "url": "http://web.archive.org/web/20040415020811/http://en.wikipedia.org:80/wiki/Humanoid", "timestamp": "20040415020811"}}, "timestamp": "199401212126"}
```
2020-12-13 18:38:16 +01:00
2022-01-21 22:38:26 +01:00
Archive close to a time, minute level precision is supported:
```bash
waybackpy --url google.com --user_agent "my-unique-user-agent" --near --year 2008 --month 8 --day 8
```
```bash
2022-01-21 05:24:04 +01:00
Archive URL:
https://web.archive.org/web/20080808014003/http://www.google.com:80/
2021-01-04 20:00:07 +01:00
```
2022-01-16 21:45:38 +01:00
> CLI documentation is at <https://github.com/akamhy/waybackpy/wiki/CLI-docs>.
2020-05-04 17:36:00 +02:00
2022-01-16 21:45:38 +01:00
### 🛡 License
2021-01-04 20:00:07 +01:00
[![License: MIT ](https://img.shields.io/badge/License-MIT-green.svg )](https://github.com/akamhy/waybackpy/blob/master/LICENSE)
2020-10-02 20:04:06 +02:00
2022-01-21 22:38:26 +01:00
Copyright (c) 2020-2022 Akash Mahanty Et al.
2022-01-16 21:45:38 +01:00
Released under the MIT License. See [license ](https://github.com/akamhy/waybackpy/blob/master/LICENSE ) for details.