]> Sergey Matveev's repositories - stargrave-blog.git/commit
WARC proxy на Go
authorSergey Matveev <stargrave@stargrave.org>
Sun, 10 Jul 2016 16:48:05 +0000 (19:48 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 10 Jul 2016 16:48:05 +0000 (19:48 +0300)
commit9a24f9bf78dd863bc3ff9ad6cab171d1e7427b34
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parentc30df73f5e066b52ff14a7ce451ee69ce8fb6a6d
WARC proxy на Go

Собираюсь написать на Go прокси для просмотра WARC файлов. Так как с
Интернетом будут большие пребольшие проблемы (хотя они уже имеются с
постоянным блокированием CDN-ов, Github-ов и прочим), то актуальность
air-gaped режима передачи данных всё более актуальна.

С сохранением/передачей/просмотром одного HTML/JPEG/PDF/whatever файла
проблем не возникает. А вот как быть с кучей связанных между собой
документов? То есть например зеркалом сайта? Archive Team используют ISO
стандарт де-факто для архивирования Web-а: WARC (Web ARChive) формат. Он
очень простой и даже читается глазами: HTTP-like WARC заголовок, а
дальше сконкатенированные последовательности HTTP запроса/ответа. С
некоторой версии даже GNU Wget стал в состоянии делать подобные файлы.

То есть стандарт, вполне себе неплохой, уже даже де-факто для
петабайтных объёмов (archive.org), имеется. Обычные GNU Wget-ы отлично
умеют делать зеркала сайтов в подобном выводе.

А вот для просмотра я откопал пока только warc-proxy: https://github.com/alard/warc-proxy
Это Python HTTP-proxy написанный на Tornado с интерфейсом требующим
JavaScript. Всё перечисленное мне в нём и не нравится, хотя в целом оно
работает. Возьмусь переписать это как-нибудь покрасивше на Go.

WARC куда удобнее чем непонятно как созданные/сохранённые директории с
HTML/whatever документами в архиве. А тут один файлик внутри которого
прям фактически сохранённые HTTP-сессии.