Delphi. Как подменить и зашифровать произвольный url в браузере, загрузив контент на свой хостинг ?

Данная задача возникла в связи с тем, что понадобилось зашифровать url. Решил её частично. То есть, для простых сайтов без горы скриптов – все будет работать идеально. С горой скриптов все будет работать почти идеально, если сервер сайта наш и там можно будет разрешить кроссдоменные запросы. Это почти – означает тонкую работу со скриптами. Вообще, как я понял, такие трюки запрещены в целях безопасности. Но задачу решать как-то надо было.

Способ №1 – независимый

Спрятать одну ссылку, при условии, что она нигде больше не светится на сайте можно следующим образом (получилось частично, в посте изложена идея подхода и некоторые трудности и их преодоление)…

-скачать HTML код страницы с сервера-источника

-подменить все относительные пути (href и src action) на абсолютные, указав сервер-источник

-получившийся HTML код выдать из под другого сервера, адрес которого можно шифровать как угодно.

-Создав страницу на другом сервере – можно ставить какие угодно ограничения – количество переходов, время работы ссылки на новую страницу и так далее.

Ограничение №1

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

Ограничение №2

Ещё одно ограничение, если страница на скриптах фрэймворка, то такой подход тоже может не работать полностью. Тут нужно думать над каждым случаем отдельно.

Ограничение №3

Кросс-доменнные запросы как известно запрещены,

В частности, я работал с сайтом на Yii и при отправке Submit получил ошибку в отладчике браузера

но если есть доступ на сервер, то с помщью php мы можем прописать в скрипте сервера, к которому обращаемся, строку в самом начале файла, разрешающую кроссдоменные запросы

которая разрешит кроссдоменный запрос к данному домену. Можно, конечно и хром запускать с отключением режима безопасности

 

ШАГ № 1 – Загрузим произвольный сайт на своем сервере

8

Например, будем набирать в браузере

а загрузится контент сайта

Это первое чего нужно добиться! Далее, уже можно поиграть с параметрами, зашифровать их, на сервере разместить ограничения – по времени использования и так далее.

Для простоты будем пользоваться стандартным веб-сервером в Delphi. Но такую же вещь можно проделать и с UniGUI сервером, скажем. Тут главное – идея. Если нужно решить задачу на профессиональном уровне, то можно все оформить в виде dll и прикрутить её к IIS.

Создадим веб-сервер

File > New > Other > Web Server Application

В результате у нас получатся 2 модуля

7

В WebModuleUnit

для начала выставим кодировку

Далее запрограммируем основной обработчик

Идея в том, чтобы подменить все относительные пути на абсолютные

– в href,src и action

-если где-то ещё в HTML коде встретятся относительные пути, то можно подменить и их, по аналогии.

-ищем регулярками и вставляем в нужную позицию домен источника

Тестируем и смотрим, что у нас получилось…

8

 

Плюс этого способа в том, что код абсолютно независим.

ШАГ 2 Шифрование ссылки

Теперь, когда сайт загружен на наш сервер, и самое трудное позади, мы можем делать с ним всё, что угодно. С нашей ссылкой, я имею ввиду.

Обратите внимание на эту конструкцию

По идее, мы можем делать здесь всё что угодно – ограничивать срок действия и выдавать в Response сообщение – “срок действия ссылки окончен”. Мы можем зашифровать параметрическую часть ссылки. Далее, действия зависят от задачи.

Чуть позже продолжу этот пост. Пока публикую как есть.

Способ №2 – через API сторонних серверов

Например, через NoBlockMe. Способ хорош – очень хорош, но ровно до того момента, пока работает данный сервис. В следующем посте рассмотрю способ работы через него.

This entry was posted in Delphi, Без рубрики. Bookmark the permalink.