Защита баз данных сайта от парсинга web-страниц

SeaGull

Junior Member
Защита баз данных сайта от парсинга web-страниц

Имеется сайт с вполне уникальной базой данных узкоспециализированной тематики. В основном - текстовые поля. База кропотливо собиралась, проверялась и корректировалась авторами проекта 7 лет.

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

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

Отдавать многолетний труд без боя не хочется, поэтому хотел узнать у сообщества: может быть существуют какие-то алгоритмы, способные если не пресечь, то хотя бы изрядно затруднить автоматическое вытаскивание данных из web-страниц ? При этом, естественно, в браузере у пользователя всё должно читаться без проблем.

Экстрим в виде вывода данных в графике не рассматривал - пользователей жалко :)

Сходу на ум приходят только JavaScript-функции, которые по запутанным алгоритмам буду расшифровывать в браузере выдаваемый из базы зашифрованный при генерации страницы текст. Алгоритм шифрования на разных страницах можно случайным образом менять. Вроде, это должно изрядно затруднить тупой парсинг…

Это пока только общая идея - сами алгоритмы функций не продумывал, да и вряд ли мой "beautiful mind" выдаст что-то сильно более серьезное, чем разные способы подмены и перестановки порядка букв.

Может быть кто-то уже озадачивался схожей проблемой и/или имеются состоявшиеся алгоритмы и подходы к максимальному усложнению парсинга web-страниц ?

Буду благодарен за любые идеи.
 

HEm

Сетевой бобер
1. яваскрипт в данном случае хорошее но не 100%-ное решение, при желании (которого, впрочем, видимо у злодеев не хватает, иначе они бы слили базу без спроса) можно разобраться и в этих трюках, тут вопрос в том, что чем разнообразнее и оригинальнее будут алгоритмы, тем выше будет стоимость взлома и в какой то точке она превысит возможности и желание злодеев.
2. добавить геморрою пользователям в виде каптчи при сабмите поиска
3. защититься с правовой точки зрения и судиться в случае слива базы
 

SeaGull

Junior Member
яваскрипт в данном случае хорошее но не 100%-ное решение
Конечно, не 100%-ное.
Особенно, в силу того, что функция дешифрации будет доступна в той же страничке, что и зашифрованные данные :)

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

добавить геморрою пользователям в виде каптчи при сабмите поиска
"каптчи" - это кто ? Картинки с кодом ?
Если да, то их тогда надо ставить на открытие каждой очередной страницы результатов поиска. Т.е. - не реальный вариант для пользователей.

защититься с правовой точки зрения и судиться в случае слива базы
Сами данные базы собственностью никак не являются. Они получены из нескольких сотен открытых и общедоступных источников. Просто они собраны в одном месте и приведены к единому формату полей, что дало возможность прикрутить к ним тонко настраиваемый интерфейс поиска. Фактически - энциклопедия по своей тематике в свободном доступе через сайт.
 

magic

lancer
Ну так поставь доступ только для зарегистрированных пользователей, картинки с цифрами/буквами и флуд-контроль.
 

HEm

Сетевой бобер
SeaGull
На худой конец злодеям может оказаться даже выгоднее посадить человека и в течение нескольких дней он вытащит все тексты старинным китайским методом Copy/Paste.
 

SeaGull

Junior Member
magic
Ну так поставь доступ только для зарегистрированных пользователей, картинки с цифрами/буквами и флуд-контроль.
И где заслон ? Авторизовался вручную, передал сессию парсеру и пошел качать... А флуд-контроль слишком легко обходится, если не сильно торопиться.

HEm
На худой конец злодеям может оказаться даже выгоднее посадить человека и в течение нескольких дней он вытащит все тексты старинным китайским методом Copy/Paste.
Вот очень хочется, чтобы именно этот способ остался в результате самым простым и быстрым. Благо там ~11'000 громоздких cтраниц результатов при полном поиске.
 

magic

lancer
Автор оригинала: SeaGull И где заслон ? Авторизовался вручную, передал сессию парсеру и пошел качать... А флуд-контроль слишком легко обходится, если не сильно торопиться.
Хозяин-барин.
 

kost

Новичок
SeaGull
> И где заслон ? Авторизовался вручную, передал сессию парсеру и пошел качать...

Так а при пользователе можно прослеживать скачиваемость им страничек. Только это тоже еще вопрос. Как узнать, качает он или смотрит? Пожалуй, только при просмотре большого количества страничек (12 штук) в минуту можно делать такие выводы. НУ А ВДРУГ пользователь действительно открывает тринадцать страниц, а потом по очереди все читает?

Действительно правильно сказано насчет судимости. Типа, качай качай, только потом пожалеешь сам...

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

Послесловие. Я тут, такой молодец, высказал алгоритмы на JavaScript и все такое. Но недавно, помнится мне, в разделе "исходники" RSDN'а была помещена прога, которая через ActiveX IE просто нагло копирует текст из браузера к себе так же, как бы это сделали вы.
 

Alexandre

PHPПенсионер
универсального способа защиты нет,
можно использовать технологию AJAX
которая заметно затруднит выудить информацию, хоят особого труда несоставит - парсить такую страницу и вычислять uid , и выкачивать уже готовый xml

При использовании AJAX, можно использовать некоторые хитроси определения - человек то или робот, ну например
использовать и анализировать пути прохода по сайту, хитрости по формированию uid, который зависит не только от поискового слова, но и от mktime() или rand()
анализировать IP посетителей... и таким образом можно определить, с какого IP идет макс посящаемость - сделать предположение, что идет грабеж сайта - на этот IP поставить защимту с картинкой...
 

HEm

Сетевой бобер
Запрещать IP адрес можно не по факту загрузки скрытой страницы, а по факту загрузки картинки, установленной на скрытой странице. Поисковые роботы обычно не запрашивают изображения размещенные на страницах, а Download агенты обычно делают это
(c) http://www.codenet.ru/webmast/php/antidownloaders/
стоит обдумать это
еще - злодей может сымитировать броузер, стоит порыться в спецификации http на предмет выдачи заголовков, которые нужно будет правильно обработать (в голове крутится мысль об использовании кукисов, но думать ее влом ;) )
 

alexhemp

Новичок
Имитировать браузер ничего не стоит, IE например рулиться элементарно - по сути это же один большой OLE сервер, наподобии Word.

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

Или еще можно предложить предоставлять Web-сервис, т.е. сделать интерфейс для поиска публично доступным, не забывать вставлять в результаты свои ссылки, имена и т.п.

Это самое естественное действие с информацией - копирование. Это-же ее основное неотъемлимое свойство, природа вещей так сказать.
 

bgm

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

SeaGull

Junior Member
Спасибо всем.
Пишу генератор псевдослучайного шифратора/дешифратора на JS. И меняю формат вывода результатов поиска (т.е. одно и то же с виду будет выводиться в разных тегах).

Крайне смутило проскочившее у kost упоминание про снятие информации через ActiveX IE. Если это работает, то всё варианты с JavaScript, случайными тегами и "мусором", видимо, ничего не стоят. Никогда не работал с ActiveX, но идея выглядит вполне правдоподобно :(
 

alekciy

Новичок
SeaGull
Да же как то любопытно стало, чем дело закончилось.
А мне вообще думается, что если хотели реально слить базу, предупреждать бы не стали.
 

kost

Новичок
Закончилось это вот чем. Если с одного IP много посетителей - начинайте им показывать платную рекламу. Вам деньги - им база. Все счастливы. Зановес...
 

SeaGull

Junior Member
Чем закончилось... А черт его знает :)
Три недели - не срок. Да и "закончиться" это может только или в случае выкачивания базы или в случае закрытия конкурирующего проекта. Любая другая ситуация - подвешенное состояние.

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

bgm

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

P.S. Кстати - можно ещё отдавать содержимое через flash - ещё одно препятствие :)
 

alekciy

Новичок
Но это явно не выход. У многих флеш отключена даже не смотря на быстрые каналы связи с Интернетом. Про пользователей сидящих на модемах с оплатой трафика я умолчу.
Поэтому это будут палки в колеса обычным пользователям. Злоумышленник спокойно может воспользоваться для скачивания быстрым безлимитным каналом.
 
Сверху