CopyHTML

Уже пол-года, как отказал очень удобный на мой взгляд сервис http://www.peeep.us/ по архивированию веб-страниц.
Своими силами пробую поднять аналог.

Пара слов о сферах применения такого сервиса
Часто нам нужно быстро и удобно передать найденную на великой свалке имени всемирная паутина информацию. Если она статична (страница не меняет контент в зависимости от действий пользователя либо выбора браузера и его локальных настроек), то задача решается простой передачей ссылки.

Есть такая информация, которую мы сами формируем параметрами. Примерами послужат многочисленные страницы транспортных средств связи (метро, поезда, автобусы, самолёты) и поисковые страницы интернет-магазинов (те, на которых адрес поиска не меняется при фильтрации такими параметрами как цвет, макс./мин. стоимость, производитель…) и т.д.

Также есть информация, доступная только зарегистрированным пользователям (все страницы, доступные только вашей учётной записи). Очень хочется поделиться с кем-либо, но давать ваш логин… на сайтах, где это запрещено и наказуемо различными штрафами…

В последнее время появилось огромное количество программ, которые делают картинки из выделенной нами области экрана, сохраняют их у себя на серверах и дают нам ссылку.
Очень быстро и удобно, всем советую выбрать себе такую. Перечислять не буду, их просто найти в поисковике.

Но, к сожалению, картинки ‒ не текст. Дальнейшая работа с текстовыми данными отбрасывает нас обратно ко времени обычного копипаста при этом теряя их структуру (скопируйте таблицу, вставьте в текстовый редактор и попробуйте разобраться, что вы видите).

Таким образом приходим к копии не картинки, а самой страницы.

О сервисе
Пока сервис тестируется, время хранения данных будет зависеть от количества страниц, прилетающих на мой сервер. Как наполните хранилище, буду чистить, оставляя всё, что лежит менее двух суток. На всякий случай — снимаю с себя всякую ответственность, если по каким-либо причинам ваши копии пропадут, но приложу все усилия, чтобы этого не случилось.
Естественно вы должны доверять мне лично. Уверяю вас, что смотреть на то, что вы сохраните, нет ни времени ни желания. Скрывать, что у меня есть такая возможность, не буду.

О правах на данные
Ответственность за копирование данных несут пользователи. Если они таким образом будут нарушать правила сайтов — обращайтесь, удалю указанные файлы и поставлю блокировку для вашего ресурса.

Техническая сторона.
Скрипт копирует данные в виде HTML-кода и передаёт их на мой сервер. Тут данные обрабатываются и сохраняются в виде HTML-файла. Все картинки, стили и скрипты берутся на ресурсе оригинала.
Имя файла начинается с даты и времени создания и заканчивается генерируемым числом.
Если браузер блокируют работу скрипта — он не сработает или сработает неправильно. Браузер должен поддерживать исполнение яваскриптов (пересмотрите настройки и дополнения).
Индексацию поисковиками на всякий случай заблокирую (к сожалению это не всегда работает). Т.к. файлы будут храниться относительно недолго ‒ думаю, что найти их поиском не получится.

Установка
Просто перетяните кнопку в панель закладок браузера.
Копировать сайт

Или создайте новую закладку и скопируйте в адрес (URL) данный скрипт.
В проекте «Война племён» использование браузерных закладок запрещено. Создайте новую закладку в настройках ресурса и скопируйте скрипт туда (Настройки/Закладки/Добавить строку).

javascript:
void(function(){
var s=document.createElement('script'),sa='setAttribute';s[sa]('type','text/javascript');
s[sa]('src','https://dl.dropboxusercontent.com/s/hdch9qipbtn0mcj/send.js');
document.body.appendChild(s);
})();

Применение
На сайте нажмите на закладку. После успешного создания вы окажетесь на скопированной странице.

Серверная часть
Этот блог, как и сервис, сделаны на коленке и работают как работают. Я им пользуюсь и буду что-либо менять только если увижу в этом большую необходимость. Так же спрашивали — не хочу ли выложить код в открытый доступ по какой-либо открытой лицензии — пару строчек нагугленого кода, которыми так-то и светить в приличном месте стеснительно, а оборачивать в лицензию, соблюдать её условия… Спасибо, сделаем по-другому 😉

1. Чтобы выполнить код с отправлеными с других страниц данными, нагуглил набор разрешений в хэдере.
2. Для создания ссылки посмотрел как вывести дату и время в нужном мне виде, в хвосте добавил рандомное число на много символов, чтобы ещё немного усложнить перебор любознательным лицам.
3. Посмотрел как проще убрать лишние бэксплеши, где-то у меня с ними были вопросы.
4. Принудительно поменял базовую ссылку страницы на оригинал, чтобы даже не пробовала искать дополнительные ресурсы js, css, img и т.д.
5. Принудительно поменял чарсет на утф8 (отдельное место в аду тем, кто экономит байты в вебе на этом, но пихает 100500 изображений, чтобы красиво было)
6. Нагуглил как сохранить это в файл и, т.к. устал мучать поисковик, добавил вызов js, который перекидывает браузер на получившийся шедевр. Вот что я нагуглил в итоге для файла create.php:

<?php
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST");
    header("Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control");
    header("Access-Control-Max-Age: 18000");
    header('Content-Type: text/html; charset=utf-8;');
    $Datei = "html/".date('Y-m-d-H-i-s')."-".rand(1,100000).".html";
    $Text = $_POST['r_content'];
    $Text= stripslashes($Text);
    $Text = str_replace ('<head>','<head><base href="'.$_POST['r_url'].'">',$Text);
    $Text = preg_replace('/charset=windows-1251/','charset=UTF-8',$Text);
    $FilePointer = fopen($Datei, "w"); 
    fwrite($FilePointer, $Text); 
    fclose($FilePointer);
    echo '<script type="text/javascript">
                window.location = "'.$Datei.'"
            </script>';
?>

С уважением, Евгений

5 комментариев

  1. silya95

    сейчас он временно не работает, я может перепишу

    • Akkela

      Доброго времени суток,

      был сбой в работе? На данный момент вроде все в порядке.

      С ув., Евгений

  2. silya95

    Пользуюсь этим скриптом, и доволен, правда переписал серверную часть для хранения файлов у себя для безопасности

    • ZolVas

      А возможно ли поделиться своим аналогом сайта? Чтобы была альтернатива, где сохранить страницу, чтобы снять нагрузку и с автора сайта, да и ведь мало ли что случится с этим сайтом (peeep.us analogue)? Хотя бы пусть чтобы короткое время, неделю-месяц, хранились копии сохраняемых web-страниц. Ведь иметь единственную точку отказа на весь Интернет — это весьма плохо.

      Есть кто-то, у кого бы хватило компетенции поднять зеркало этого ценнейшего сервиса по хранению html-страниц? И отписаться сюда

  3. Akkela

    Скрипт перезалит в связи с изменениями работы дропбокса.
    Переустанавливаем и пользуемся дальше.

    С ув., Евгений

Добавить комментарий для ZolVasОтменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.