Sposób waybackformatowania adresów URL jest następujący:
http://$BASEURL/$TIMESTAMP/$TARGET
Oto BASEURLzwykle http://web.archive.org/web(mówię zwykle, ponieważ nie jestem pewien, czy jest to jedyny BASEURL)
TARGETnie wymaga wyjaśnień (w twoim przypadku http://nature.comlub podobny adres URL)
TIMESTAMPma miejsce, YYYYmmddHHMMsskiedy dokonano przechwytywania (w UTC):
YYYY: Rok
mm: Miesiąc (2 cyfry - od 01 do 12)
dd: Dzień miesiąca (2 cyfry - od 01 do 31)
HH: Godzina (2 cyfry - od 00 do 23)
MM: Minuta (2 cyfry - od 00 do 59)
ss: Drugi (2 cyfry - od 00 do 59)
Jeśli poprosisz o czas przechwytywania, który nie istnieje, maszyna zwrotna przekierowuje do najbliższego przechwytywania dla tego adresu URL, czy to w przyszłości, czy w przeszłości.
Możesz użyć tej funkcji, aby uzyskać każdy dzienny adres URL za pomocą curl -I(HTTP HEAD), aby uzyskać zestaw adresów URL:
BASEURL='http://web.archive.org/web'
TARGET="SET_THIS"
START=1325419200 # Jan 1 2012 12:00:00 UTC (Noon)
END=1356998400 # Tue Jan 1 00:00:00 UTC 2013
if uname -s |grep -q 'Darwin' ; then
DATECMD="date -u '+%Y%m%d%H%M%S' -r "
elif uname -s |grep -q 'Linux'; then
DATECMD="date -u +%Y%m%d%H%M%S -d @"
fi
while [[ $START -lt $END ]]; do
TIMESTAMP=$(${DATECMD}$START)
REDIRECT="$(curl -sI "$BASEURL/$TIMESTAMP/$TARGET" |awk '/^Location/ {print $2}')"
if [[ -z "$REDIRECT" ]]; then
echo "$BASEURL/$TIMESTAMP/$TARGET"
else
echo $REDIRECT
fi
START=$((START + 86400)) # add 24 hours
done
Dzięki temu otrzymasz adresy URL, które są najbliżej południa każdego dnia 2012 roku. Wystarczy usunąć duplikaty i pobrać strony.
Uwaga: powyższy skrypt można prawdopodobnie znacznie ulepszyć, aby przejść do przodu w przypadku, gdy REDIRECTadres URL jest dłuższy niż 1 dzień w przyszłości, ale wtedy wymaga zdekonstruowania zwróconego adresu URL i dostosowania STARTdo prawidłowej wartości daty.