Delphi. Как подменить url при помощи API NoblockME?

Рассмотрим пример подмены url при помощи стороннего сервиса. Плюс этого подхода состоит в простоте – мы просто отдаем исходный url и получаем зашифрованный.

Огромный плюс этого подхода состоит в том, что нам не надо думать о работе сайтов, практически все они работают идеально. Не надо думать о CORS для кросс-запросов, я не знаю как ребята из NoBlockMe это сделали, но, Бог его возьми, это работает! Нам не нужен доступ на сервер, чтобы править заголовки ответов, не нужно вообще думать о корректности работы анонимизируемого сайта. Также, при переходе по страницам – все они анонимизируются, что дает определенное время, до того как сайт будет раскрыт, но это тоже можно обойти, подготовив запасной вариант, скажем, если сервер NoblockME выдал какую-то ошибку, мы идем на другой сервер и так далее, в конце, если у нас EpicFail по всем сторонним сервисам, мы можем воспользоваться способом, который я описал в предыдущем посте, где загружается вся страница на наш сервер. В общем, при желании эту тему можно развить и доработать. Здесь я поделюсь лишь идеей.

Минус в том, что как только этот сервис отвалится – наш участок кода не будет работать. Далее, если мы пользуемся своим веб-сервером, мы можем добавить параметры, которые дадут возможность ограничить ссылку во времени, в количестве раз использования и так далее. Вот что у нас получится в конце

9

 

Начнем с простого

File > New > Other > Web Server Application

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

7

В WebModuleUnit

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

Разбираем API NoBlockMe

Вот что написано в API на официальной странице сервиса

Пример

Если вы хотите получить анонимизированный адрес русскоязычной Википедии, то вы можете выполнить следующий запрос к APIhttp://noblockme.ru/api/anonymize?url=http://ru.wikipedia.org/ и получить ответ:

В данном примере http://oj2q.o5uww2lqmvsgsyjon5zgo.nblk.ru/ и есть анонимизированный адрес для http://ru.wikipedia.org/

Как бы все легко и понятно. Да есть нюансы. Попробовал я отправить такой запрос при помощи idHTTP и получил в ответ

То есть порядок следования параметров несколько другой, нежели написано в API. Ну да ладно, в связи с этим изменим несколько алгоритм обращения к параметрам – будем обращаться к ним в цикле.

Наш код обращения к API

На наш веб-сервер будем отправлять такой запрос

Это будет так сказать сигнал к началу действий)) То есть если в параметре 1 будет значение NoBlockMe, то запустится участок кода, обращающийся к NoBlockMe и получающий от него анонимизированную ссылку.

Итак, наш код обращения к NoBlockMe, для начала разберем его по частям

Отправляем запрос и парсим ответ от сервера

Есть ли ошибка от сервера? Если статус не ноль – значит есть какая-то ошибка.

Записываем ошибку, если она была

Дайте нам анонимизированную ссылку!!!

Отправляемся по анонимизированной ссылке, если она есть, иначе сообщаем об ошибке

А теперь все вместе…

В принципе, в черновом варианте так сказать, я изложил суть. Далее можно улучшать, углублять и так далее.

Тестируем

9

Код веб-модуля полностью

 

 

This entry was posted in Delphi, Delphi и сети. Bookmark the permalink.