Небольшой эксперимент для разбирающихся прогеров

iSom

Заранее извиняюсь, если не в тот раздел :)
Суть эксперимента - есть у меня онлайн база (по рекам России в свое время очень волновал меня вопрос несанкционированной скачки всего массива информации. Придумали и реализовали с прогером-разработчиком алгоритм, который, как мне видится, позволит избежать 100% скачки и полного недобросовестного копирования этой базы; прогер, хоть и реализовывал задачку, высказывает определенные сомнения. Основная мысли в его сомнениях - если скачивающий будет знать количество объектов-рек в этой базе, то он сможет просчитать и вскрыть алгоритм сокрытия инфы; поэтому попробовали сделать так, чтобы количество объектов правильно определить было бы невозможно. Собственно, вопрос к разбирающимся - получится ли определить количество объектов в базе данных http://www.sur-base.ru/water-base/ ? понимаю, что эта возня может занять какое-то время, но может попробует кто, ради спортивного интереса (в перерывах между зарабатыванием 150-400 тыров :grin: ) :o

Ivan8209

Найдено 151265 объектов
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

iSom

ну на заборе тоже много чего написано

zorin29

149513 или 149547.
Мне кажется, вы все делаете неправильно.

Werdna

Придумали и реализовали с прогером-разработчиком алгоритм, который, как мне видится, позволит избежать 100% скачки и полного недобросовестного копирования этой базы; прогер, хоть и реализовывал задачку, высказывает определенные сомнения.
Я правильно понимаю, что Яндекс и Гугл тоже не смогут скачать?
Для такого типа сайтов наоборот всегда задачу ставят — несколько удобных разных каталогов для доступа к каждому объекту, ещё это "ёлочкой" называется. Чтобы уж "наверняка" поисковый робот дошел.

Varvara2002

Причём тут количество записей и возможность всё выкачать?
Точное соответствие ставишь => Перебираешь всё комбинации типа 'Ба%' пока
не покажет результат на странице, дальше "складываешь результаты в папочку".

Commandor

Т.е. просто скачать все странички с http://www.sur-base.ru/water-base/?show_obj=1 по http://www.sur-base.ru/water-base/?show_obj=151861 нельзя/недостаточно?

Toma90

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

iSom

нельзя/недостаточно?
да, нельзя и недостаточно. Объектов больше :p

iSom

Перебираешь всё комбинации типа
гммм, можешь прикинуть примерное количество этих комбинаций?

Dasar

Перебираешь всё комбинации типа
либо 100 запросов (две буквы - аа:яя либо 3000 запросов (три буквы - ааа:яяя)

iSom

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

kokoc88

да, нельзя и недостаточно. Объектов больше
Нельзя или недостаточно? Программно можно перебрать до любой цифры и проанализировать все ответы.
вторым этапом будешь определять, какие из этого названия уникальны, а какие повторы?

Повторы отсеиваются программно без каких-либо проблем тем же этапом.

Dasar

мне видится, потом устанешь выделять отдельные названия
у каждого названия есть id, ничего отделять не надо
Река Белая (id:868)
Река Белая (id:2035)
Река Белая (id:2310)

iSom

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

Повторы отсеиваются программно без каких-либо проблем тем же этапом.

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

iSom

у каждого названия есть id, ничего отделять не надо
Река Белая (id:868)
Река Белая (id:2035)
Река Белая (id:2310)
вполне обходится, но мысль хорошая, надо будет учесть этот момент в защите

tokuchu

это не решит задачи. Точнее - скачивальщик, поступивший таким образом, не получит весь массив
Этого нельзя гарантировать. Т.к. id-шки у вас достаточно перечислимы. Если бы это были uuid какие-нибудь или хеши, тогда были бы проблемы с перебором. А найти максимум — это сильно проще.
Повторы отсеиваются программно без каких-либо проблем тем же этапом.
не уверен, что тут получится. был бы я прогером - попробовал бы запустить и посмотреть, что и как выйдет. хочется думать, что скачивальщик окажется не настолько кропотливым и вдумчивым
Это очень просто делается. Обычные пользователи не разберутся может быть. Но если человек более-менее грамотный захочет сказать или попросит кого-нибудь грамотного, то проблем не будет никаких.
Как пример можно вспомнить товарища который тут свой каталогизатор лабает. Технологий никаких не знает, но уже каких "успехов" достиг.

kokoc88

это не решит задачи. Точнее - скачивальщик, поступивший таким образом, не получит весь массив
То есть если он переберёт все цифры вплоть до гигантских значений, то не получит весь массив? Я посмотрел 2-3 минуты, но не откопал ничего, что содержало бы буквы. При поиске я получил разные url, на которых были разные Id, но это тоже ни от чего не спасает.
не уверен, что тут получится. был бы я прогером - попробовал бы запустить и посмотреть, что и как выйдет.
Получится, даже если не использовать Id в качестве ключа для отсеивания.
хочется думать, что скачивальщик окажется не настолько кропотливым и вдумчивым
Твою задачу нужно решать, заменив доступ по Id на доступ по хэшу от Id плюс капчей на поиск. В текущем виде скачать все данные не так уж и сложно. Для точной оценки от программистов этого раздела детально опиши свою задумку.

bofa

То есть если он переберёт все цифры вплоть до гигантских значений, то не получит весь массив? Я посмотрел 2-3 минуты, но не откопал ничего, что содержало бы буквы. При поиске я получил разные url, на которых были разные Id, но это тоже ни от чего не спасает.
Тем не менее, вдруг у них там реально есть буквы, просто беглым поиском они не нашлись?
МНе кажется как раз не надо тогда менять на хэш - большинство подумает , что там цифровой айди и тупо скачает все объекты до некого максимума, в то время как часть объектов как тут предположили содержит буквы и скачено не будет - в итоге разработчик на коне.

iSom

А найти максимум — это сильно проще.
найдешь? :p

Это очень просто делается.

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

kokoc88

я к тому, что есть надежда на то, что скачивальщик поступит тупо, по варианту здесь упомянутому, скачает все номера, что выскочат, и успокоится - ну и пролетит
Скачает не все, что выскочат, а на большом промежутке от 0 до сотен миллионов, и по разным URL. Во время тестирования он обнаружит разные url: www.gidromet.info с одними Id, www.sur-base.ru c другими, и так далее.
Как только он обнаружит какие-то странности с Id, а это обнаруживается уже при поиске "аб", сразу же автоматизирует поиск без капчи, искать повторы и перебирать очень просто.

Serab

Тем не менее, вдруг у них там реально есть буквы, просто беглым поиском они не нашлись?
МНе кажется как раз не надо тогда менять на хэш - большинство подумает , что там цифровой айди и тупо скачает все объекты до некого максимума, в то время как часть объектов как тут предположили содержит буквы и скачено не будет - в итоге разработчик на коне.
тут все просто: если при нескольких попытках поиска не находятся айдишники с буквами, то их там мало (насколько мало зависит от количества запросов, не выдавших айдишники с буквами т.е. ну и фиг с ними. А если тут цель выкачать именно 100%, то конечно надо одну какую-нибудь говнореку никому не нужную сделать с айди -100500хуйпессда!1111

fufa58

Основная мысли в его сомнениях - если скачивающий будет знать количество объектов-рек в этой базе, то он сможет просчитать и вскрыть алгоритм сокрытия инфы; поэтому попробовали сделать так, чтобы количество объектов правильно определить было бы невозможно.
http://en.wikipedia.org/wiki/Security_through_obscurity

fufa58

а вообще - я бы предложил ограничивать пользователя по количеству запросов в сутки + выдавать незарегистрированным/бесплатным (наверное, цель проекта - сшибать бабло?) пользователям информацию только из части базы (четверти например?)

SCIF32

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

powermouse

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

Ivan8209

Тебе нужно обязательно показать код, который выкачивает базу?
Могу и это сделать, только это немного скучно и муторно.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Dasar

других вариантов просто нет?
другой вариант - увеличение трудоемкости:
добавление ловушек,
ограничение кол-ва доступа на 1 аккаунт,
добавление случайного "шума"(вариабельности) при генерации для усложнения парсинга,
усложнение протокола между браузером и серверов (данные отдаются через ajax, а не напрямую
отдача данных малыми порциями (также при помощи ajax)
и т.д.

yroslavasako

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

Dasar

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

yroslavasako

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

Dasar

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

yroslavasako

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

Dasar

на бесплатных аккаунтах, как тут уже выше говорили, лучше просто не давать всю инфу, а давать только часть

mbolik1

Ешё можно перебирать по выпадающим спискам, можно даже без фильтра на название.

lipa

Перебор в лоб значений поля "Название" дал 106848 уникальных id
При это запросы "названия" и "руч" дают перебор, что может скрыть несколько записей.

iSom

Могу и это сделать, только это немного скучно и муторно.
но ведь до этого кода ты не дошел?
ты сделал пустой запрос, увидел число, его и обзначил.
Основная цель движухи была в том, чтобы уменьшить возможность простой 100% скачки всего массива. Чтобы если чел и скачал, то простым путем он бы скачал только 99% инфы, а 1% бы просто пропустил-не додумал, как его выкачать.
Проект бесплатный, в этом то и его особенность, делать платным запросы-ограничивать их количество не хотелось бы
И да, спасибо всем отметившимся, очень позначательно (для меня, по крайней мере) получилось

Dasar

то простым путем он бы скачал только 99% инфы, а 1% бы просто пропустил-не додумал, как его выкачать.
редкий пользователь будет разбираться - в базе есть 99% инфы или 100%, а если уж разобрался, то укажет на это несоответствие исполнителю, и тот докачает и оставшийся 1%

lipa

то простым путем он бы скачал только 99% инфы, а 1% бы просто пропустил
если атакующий пропустил 1% инфы, то как её сможет найти честный пользователь?

katrin2201

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

yroslavasako

Я не знаю, конечно, как там качают базы все, но я давно по максимуму эмулирую действия пользователя.
а какой библиотекой ты кравлишь?

katrin2201

Апачевский httpclient

yroslavasako

а он умеет в javascirpt?

katrin2201

Нет. Если нужен dom, то надо смотреть в сторону selenium.
Или если критичен пефоманс, то в сторону какого-нить rhino с браузерным енвайронментом.

yroslavasako

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

katrin2201

Да я б тупо написал код, который бы лукапил оба объекта и клеил их содержимое.
"Чтоб само" можно конечно делать принтскрин и потом ocr'ить, но это вряд ли получится проще.

Commandor

Ну еще немного объектов, доступных с ГЕТ-параметром key_start = 1 (id от 151862 до 151890)
http://www.sur-base.ru/water-base/?show_obj=151880&key_s...
У меня получилось 151854 объектов, еще что-нить есть?

Hastya

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

Ivan8209

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

for n in $idlist; do ftp -o - "http://www.sur-base.ru/water-base/index.php?r0=$n&r1=-1&namefilter=&placefilter=&wordone=0&search=%CF%EE%E8%F1%EA" > $n.html; done

не вытягивает всего-навсего пять-восемь страничек, это уже почти
весь указатель рек. Остаётся дописать третий уровень, и всё.
На мой взгляд, вы занимаетесь ерундой.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

iSom

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

Остаётся дописать третий уровень, и всё.

а потом уровень четвертый, пятый, жестой и так пока не надоест?

Commandor

Так я все нашел или нет?
Находил так:
http://www.sur-base.ru/water-base/?show_100=1000000000000
http://www.sur-base.ru/water-base/?show_100=219000083
http://www.sur-base.ru/water-base/?show_100=218200038
и тд.
Выдало вместе со всеми этим твоими спрятанными объектами.

tokuchu

но ведь до этого кода ты не дошел?
ты сделал пустой запрос, увидел число, его и обзначил.
Он не дошёл и другие, т.к. зачем им этим заниматься? Какой стимул для них? За это не заплатят, ещё мог быть стимул в том, что задача интересная, но это тоже не так, поэтому никто особо и не напрягается.

Serab

метод защиты неуловимого Джо

iSom

Выдало вместе со всеми этим твоими спрятанными объектами.
но ведь это не так :crazy:

iSom

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

zya369

а какой стимул кроме интереса или денег по-твоему может быть в этом случае?

iSom

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

Serab

есть среди отвечающих и те, кто думает, что он разбирается, а на самом деле-ошибается в этом.
да, это ти :smirk:

zya369

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

iSom

мол вы все тут не понимаете нифига
да окстись :grin:
я изначально признаю себя в этой теме неразбирающимся. ну а остальных отметившихся в теме можно разделить на 3 группы:
1. флудеры
2. подумал, что разбирается, ошибается
3. разбирается.
Третим - большое спасибо, показали-рассказали. Спасибо за потраченное время и разъяснения.
Вторым - тоже спасибо, как раз на них и была расчитана предлагаемая защита, как показал эксперимент - торопышки купятся и сядут в лужу.
Первым - тоже спасибо, надеюсь, что листая тему, узнали для себя что-то новое

zya369

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

kokoc88

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

tokuchu

то есть за написание этого поста тебе заплатили? ты так говоришь, будто бы все, что ты делаешь в жизне, ты делаешь или из-за денег или из-за интереса
Почему заплатили? Мне может быть интересно общаться. :)
А какие ещё стимулы могут быть по твоему? Ну я ещё могу придумать всякие роды принуждения, но это к делу не относится вроде.

marat7256

У меня вопрос относительно цели, которую ты преследуешь.
Что страшного в том, что кто-то скачает всю твою базу? Какие угрозы ты в этом видишь?

zya369

да мания величия там, небось: хочет, чтобы все знали, что это именно ОН собрал эту базу. А так не ровен час кто-нить ее скачает и выложит от своего имени.

marat7256

А так не ровен час кто-нить ее скачает и выложит от своего имени.
Зачем это кому-то делать, если база Тукка открыта для всех и так?
У такого действия должен быть смысл. Может он есть, я и спрашиваю, поскольку пока его не вижу.

iravik

будто бы все, что ты делаешь в жизне, ты делаешь или из-за денег или из-за интереса
то есть ты считаешь, что твои данные кто-то будет пытаться выкачать исключительно из-за любви к рекам?

iSom

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

kokoc88

посмотри второй ответ в этой теме. чел посчитал, что он разбирается-и ошибся
Бля, да никто из отметившихся в теме на твою "задачу" более 5 минут не потратил. Тебе лишь написали об идеях, которые, будучи полностью реализованными, позволят скачать всю твою базу. Во время написания бота программист при необходимости потратит несколько дней.
Этот самый второй ответ давался от балды на авось, а ты оцениваешь его так, как будто на него было потрачено несколько человеко-дней. Ещё раз повторю, что твой программист был прав.

iSom

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

kokoc88

вопрос тебе - если перед тобой будет стоить цель скачать базу целиком, ты начнешь с простого варианта скачки или сразу будешь предполагать наличие сложностей и тратить несколько дней на разработку проги?
Зависит от того, что мне нужно. Иногда мне нужен какой-то объём данных для тестирования или каких-то исследований, тогда я делаю самое быстрое решение, которое даёт скачать всего 10% страниц с данными. Иногда нужен полноценный механизм, тогда я могу потратить несколько недель, чтобы не просто забрать все данные, но и регулярно обновлять информацию по ним и подстраиваться под изменения на сайте.
В твоём случае работа, скорее всего, будет задана какому-нибудь студенту подешевле. Он может оказаться ленивым и выполнит задачу на "отвяжитесь". После этого заказчик может обнаружить недостачу и попросить доработать, тогда будет скачана вся база. А может и не обнаружить, тогда... не знаю, что должно быть, т.к. ценность этих данных оценить не могу.

tokuchu

посмотри второй ответ в этой теме. чел посчитал, что он разбирается-и ошибся
Он не ошибся а протранслировал ответ твоей базы. Или она намеренно выдаёт неверную информацию о числе объектов? Т.е. ради мнимой защиты вы обманываете всех пользователей?

zya369

посмотри второй ответ в этой теме. чел посчитал, что он разбирается-и ошибся

"чел из второго ответа", наверняка "разбирается" лучше тебя с твоим разработчиком вместе взятых
а тебе стоило бы высказывать поменьше оценок в областях, в которых ты не шаришь...
хотя, кому я это говорю :crazy:

Ivan8209

Не вижу смысла объяснять ему чего-либо дальше.
Ну, хочется ему верить, будто его база "защищена," пусть верит.
Судя по жлобскому отношению к защите таких данных,
ему и помогать-то не стоит.
---
"Quae medicamenta non sanat, ferrum sanat,
quae ferrum non sanat, ignis sanat."

iSom

это ты как эксперт сказал, разбирающийся лучше всех троих? :grin:

iSom

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

Не вижу смысла объяснять ему чего-либо дальше.

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

yroslavasako

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

iSom

ну я вот и хочу от него услышать, как он это оценил

marat7256

Скажи, твои "скрытые" данные обычный пользователь может получить так или иначе заполнив форму?

iSom

да.

marat7256

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

iSom

"все" данные показываются только если указаны все 4 параметра.
про какие 4 параметра ты говоришь?

marat7256

Не 4, а 5, да. r0...r4

Ivan8209

> Но вообще спасибо тебе - благодаря твоему первому ответу у меня есть надежда,
> что скачивать эту базу будет такой же самоуверенный талант,
> который таки не сможет сделать это качественно
Тебе уже объяснили, почему эту базу почти никто не будет скачивать.
Более того, ты и сам мог бы об этом догадаться, раз уж сам признал, что
> эта база открыта уже несколько лет, любой желающий мог её скачать
> и сделать что-то свое, и никакой защиты там не было.
Сколько ты готов потратить на то, чтобы я тебе показал,
как это сделать качественно? Видишь ли, потратить пять минут ---
это развлечение, а потратить не менее, чем день на какую-то
непонятную и неинтересную муть --- работа.
---
"Для того, чтобы не пройти мимо цели, иногда необходимо пойти ко дну."

iSom

Тебе уже объяснили, почему эту базу почти никто не будет скачивать.
тем не менее, её уже скачивали, причем неоднократно. :crazy:
другое дело, что она постоянно меняется-дополняется, поэтому тот кто скачивает - бежит за впередиидущим паровозом.

Сколько ты готов потратить на то, чтобы я тебе показал, как это сделать качественно?

тебе - не более 250 рублей в час, меньше вроде как стыдно, в макдачной столько можно заработать.
услуги , , я бы оценил существенно дороже

YUAL

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

Ivan8209

> тем не менее, её уже скачивали, причем неоднократно.
И что?
> другое дело, что она постоянно меняется-дополняется,
> поэтому тот кто скачивает - бежит за впередиидущим паровозом.
Можно подумать, это всё сильно усложняет.
> тебе - не более 250 рублей в час, меньше вроде как стыдно
Вот за подобное жлобство тебе и не стоит ничего объяснять.
Если найдёшь кого-либо, кто тебе сделает аудит бесплатно или
хотя бы за 2,5 тысячи в час, расскажи, я посмотрю на это чудо.
В общем, развлекайся дальше с защитой своего студенческого поделия.
---
"Люди недалёкие обычно осуждают всё, что выходит за пределы их понимания."

zya369

это ты как эксперт сказал, разбирающийся лучше всех троих?
на счет КОХТПЫ не знаю, но лучше чем ты - точно, чем твой программист - весьма вероятно :D

iSom

ты не знаешь уровень КОХТПЫ, не знаешь уровень другого прогера, но делаешь какие-то выводы? тщеславие - твое второе имя

iSom

Вот за подобное жлобство
это не жлобство, это реальная оценка твоих трудозатрат :grin:

Anturag

это не жлобство, это реальная оценка твоих трудозатрат
… жлобом.

iSom

умеющим считать деньги и платящего по работе, а не по понтам

tokuchu

умеющим считать деньги и платящего по работе, а не по понтам
Ну твой программист какую-то работу, конечно, проделал. Только вот польза от неё сомнительна. :)

Anturag

Ну твой программист какую-то работу, конечно, проделал. Только вот польза от неё сомнительна.

А Тукк ему много и не заплатил!

Dasar

у тебя вообще странный подход..
ты выходишь, протягиваешь в руке конфетки и спрашиваешь:
- сколько у меня конфеток?
тебе отвечают:
- 10
твоя реакция:
- а вот и неугадали, 11. Я еще одну в кармашек заныкал.
Изначально ты задавал вопрос: Можно ли скопировать сайт? и закономерный ответ на него: можно
Дальше ты соскочил на вопрос: Можно ли скопировать инфу с сайта на 100%?, но это уже другой вопрос. И его уже необходимо отдельно ставить.

iSom

Изначально ты задавал вопрос: Можно ли скопировать сайт?
ты как-то странно прочитал первую тему. Я нигде и никогда не писал о невозможности скачки.
Изначальный вопрос был такой

получится ли определить количество объектов в базе данных

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

Dasar

получится ли определить количество объектов в базе данных
слишком неопределенный и некорректный вопрос.
Во-первых, о каких объектах, вообще, идет речь?
во-вторых, кол-во объектов в БД выяснить нельзя, можно лишь установить сколько объектов выводится на сайт

marat7256

Все Тукк понятно написал. И также понятно, что никому особо тратить времени не хочется.
Не понятно только, что вы к нему прицепились не по-существу.

iSom

в базе объект - река.
База абсолютно открыта, скачать её может кто угодно, да и нехай качают. Просто стало в какой-то момент интересно, скачивающий, применив простой способ скачки, будет думать о возможных ловушках-подводных камнях или успокоится? Самый примиивный способ понять, что скачал не все - посмотреть количество скачанных объектов- рек. То есть, если пустой запрос выдает, что в базе 200 тысяч, а скачал ты 140 тысяч, то наверное возникнет мысль, что скачал не все и тогда уже будешь ковыряться, пытаясь найти спрятанное.
Но если пустой запрос и простая скачка выводит одно и тоже количество речек - будет ли не особо тщательный прогер ковыряться? в этом то и была суть эксперимента, странно, что это приходится повторять несколько раз.
Тем, кто увидел желание сделать неломаемую защиту - ну что сказать, фантазия хорошая у людей, жить наверное легко.
Вообще хотел сказать спасибо тем, кто хоть что-то по делу написал, давал советы-рекомендации, очень интересно было и познавательно.
ЗЫ. Кстати, пока стоял в пробке сегодня, вроде как придумал, как можно избежать (частично) поиска путем подбора букв, что здесь и предлагали предполагаю, что можно сделать так, что будет спокойно осуществляться поиск по слову "волга", но не будет она искаться по части -олг- или -ол- . То есть в данном случае вряд ли получится полностью эмулировать действия пользователя частично, ну а делать это полностью - уж больно огромное число возможных вариантов существует

PooH

не могу понять, чего ты прицепился к этим самым переборам под имени
можно просто перебрать по всем состояниям формы:
берем i-ый бассейновый округ
берем j-ый речной бассейн
берем k-ый участок
берем l-ый тип
нажимаем поиск - получаем список объектов
переходим по ссылкам - получаем всю инфу
повторяем для всех i, j, k, l
да, долго
да, надо парсить DOM
но такой бот не сломается, пока вы не поменяете механизм выдачи для пользователя

iSom

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

PooH

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

iSom

это не долгий и муторный
твои слова

да, долго
да, надо парсить DOM

Согласись, это гораздо сложнее, чем простой и очевидный вариант

просто скачать все странички с http://www.sur-base.ru/water-base/?show_obj=1 по http://www.sur-base.ru/water-base/?show_obj=151861

PooH

твои слова

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

PooH

Согласись, это гораздо сложнее, чем простой и очевидный вариант
иди нахуй
не могу согласиться, потому что это не так:
просто скачать все странички - это надо анализировать запрос, чтобы его параметризовать

iSom

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

katrin2201

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

iSom

То есть ты и честных пользователей обманываешь?
в чем я обманываю? ты второй человек в этом треде, кто меня в этом обвиняет - может сможешь сформулировать, в чем обман?

katrin2201

Как в чем. Очевидно, выдаешь заведомо некорректные данные.

iSom

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

kokoc88

так почему же в ответ я должен быть с ним честным?
По поисковому запросу "во" выдаются все названия, которые начинаются с "во" или только часть из них?

tokuchu

Я ни в коем разе не обманываю пользователя, который приходит и вводит в поиск слово "волга" - он получает результат. Но когда он запускает пустой поиск - какой результат он хочет увидеть? делается это не для работы, а для баловства - так почему же в ответ я должен быть с ним честным?
Ну-ну. Что за хрень. Может ему интересно сколько у тебя данных в базе или ещё что? А так пользователь подумает что ты и ещё какие его действия за "баловство" можешь принять и опять фигню какую вывести.
Если считаешь, что пользователю эта информация не нужна, то лучше её не выводить, чем выводить ложную.

tokuchu

По поисковому запросу "во" выдаются все названия, которые начинаются с "во" или только часть из них?
Конечно часть надо выдавать! Ведь даже идиот знает, что "Волга" точно есть и найдёт её отдельно! :grin:

iSom

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

katrin2201

Почему ты считаешь заведомым баловством желание узнать количество рек? Почему это не может никому понадобиться для каких-то справочных целей? Или может кто-то захочет там соотношение колва рек к колву озер посчитать?
Кроме того, ты предлагаешь этим не ограничиваться, и еще на определенные запросы поиска выводить неполные результаты.
Иди уж до конца тогда, если у пользователя больше 100 запросов в час просто начинай выводить какую-нибудь белиберду вместо реальных данных. А то что за хрень - чувак или бот или играется, чего ему правильные данные выдавать...
Вообще "играть" со своими клиентами допустимо наверное только в непрофитной организации типа твоей. Если ты будешь играть с клиентом, который тебе платит - потеряешь деньги.
Ко всему прочему, в твоей ситуации само желание защитить данные от скачивания, кража которых не приносит тебе убытка - непонятно.

iSom

Может ему интересно сколько у тебя данных в базе или ещё что?
что ему с того, в базе 151430 или 151340? ты сейчас пытаешься придраться по совершенно несущественному вопросу.
он или зашел в базу по делу, тогда ему интересно совсем другое, конкретная информация - или же он зашел праздно время провести, тогда в принципе пофиг, что он там увидит
единственный вариант, когда человека интересует, сколько данных в базе - это когда скачали и сравнивают, все скачали или нет. Если можешь назвать еще реальные, а не из марсианских хроник варианты, буду признателен

katrin2201

А еще в реальном бизнесе даже если утекает 1% критичной информации - это фейл. Тут у тебя утекло 99.9% информации, но ты гордо тыкаешь себя в грудь и говоришь - а 0.1% то не утек! Хахаха!
Ты понимаешь, что похоже твоя настоящая цель не данные защитить, а просто эго свое потешить?

iSom

Почему ты считаешь заведомым баловством желание узнать количество рек?
да потому что никто этого не знает :grin: даже моя база далеко неполная, так что ничего ему это число не даст, просто ничего. Количество рек в базе - это количество российских рек из государственного водного реестра СССР (большая часть) плюс энное количество добавленных вручную плюс энное количество водных объектов из других источников, так что это число ни о чем.

Если ты будешь играть с клиентом, который тебе платит - потеряешь деньги.

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

гммм, я повторю в четвертый раз, надеюсь, он будет последним - не шла речь о защите данных от скачивания. Шла речь об эксперименте, суть которого заключается в том, что если будет висеть база в свободном доступе, открытая для скачки и появится желающий её скачать, будет ли этот человек скачивать простым-примитивным способом (от которого можно скрыть некоторое количество информации) или же сразу приступит к написанию сложного скрипта, который выкачает все что можно и нельзя? Побудить чела к созданию более сложной скачки может только понимание, что простая скачает не все - а выяснить это можно, тупо сравнив, что скачалось 151 тысяча рек, а в базе их 152 тысячи.
Я почему и просил в изначальном посте, сделать попытку определить количество рек - часть людей пошла по простому пути, это показывает, что не так уж я и ошибался в своем предположении.

tokuchu

Если можешь назвать еще реальные, а не из марсианских хроник варианты, буду признателен
Ты лучше скажи зачем выводить ложь вместо того, чтобы ничего не выводить?

iSom

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

iSom

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

tokuchu

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

katrin2201

В первом посте все-таки высказана первоначальная цель защиты данных от несанкционированного скачивания. И предположение, что твоя идея защищает от 100% скачки.
Окей. То есть мы имеем дело с базой, которая если немного налажает, то никто не заметит, так? Ну и в чем понт тогда того, что кто-то "простым" скачиванием получит базу идентичную только на 99.9%? Никто же кроме тебя и не заметит, верно? А если заметит - то пойдет и докачает, верно?
В итоге предположение о том, что идея защищает от 100% скачивания неверна. Несколько уменьшает вероятность, да, но и только. При этом 99.9% данных скачивается всегда. Не самый лучший способ защиты каких бы то ни было данных на мой взгляд.
Поэтому возможно ты там конечно и радуешься, что нашел нетривиальный способ решения задачи, об которую многие зубы обломали... Но реальность такова, что защищен ты непонятно от чего и непонятно с какой целью. Поэтому всем в этом топике и смешно.
Ты бы мог, например, открыть только часть базы, где перечислены основные, например самые крупные, объекты, а всякая мелочь исключена. И за полные данные просить деньги. Или иначе ограничивать доступ. Только чтоб пользователь понимал, что происходит.
Возвращаясь к эксперименту - да, скорее всего много людей при скачивании в первый раз потеряют 0.1%. Если твою задачу это решает, то окей как бы, но никому кроме тебя непонятно...

iSom

Интересно насколько большая база.
и как этот интерес удовлетворить согласно твоему предложению?
Ты лучше скажи зачем выводить ложь вместо того, чтобы ничего не выводить?

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

iSom

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

tokuchu

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

katrin2201

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

iSom

Ну и в чем понт тогда того, что кто-то "простым" скачиванием получит базу идентичную только на 99.9%? Никто же кроме тебя и не заметит, верно? А если заметит - то пойдет и докачает, верно?
нет, не верно.

iSom

я предпочитаю, что когда мне что-то выводят, то это не заведомая ложь.
откуда ты узнаешь, что это заведомая ложь?
еще раз - что тебе с того, содержится в базе 151340 или 151430 объектов?
если только то, что в одном случае заведомая ложь - ну это уже паталогия. Предствляю, как тебе тяжело рекламу смотреть, да и вообще с людьми общаться, ведь у тебя такая нестандартная реакция на ложь

iSom

с какой целью это все вообще было затеяно?
Я ни в коем разе не придираюсь к словам, но все таки - поясни пожалуйста, что ты под словом ЭТО понимаешь? движуха с сокрытием небольшой количества информации? или пост на форуме? или последующее обсуждение?

tokuchu

откуда ты узнаешь, что это заведомая ложь?
Ты знаешь, что это заведомая ложь. А мне не нравится, что меня умышленно обманывают. Да, я могу не заметить сначала, но это не повод меня обманывать.
если только то, что в одном случае заведомая ложь - ну это уже паталогия. Предствляю, как тебе тяжело рекламу смотреть, да и вообще с людьми общаться, ведь у тебя такая нестандартная реакция на ложь
Рекламу не люблю смотреть, да. И что?
А с людьми что? Тебя все обманывают вокруг и тебе это нравится?

katrin2201

это - "движуха с сокрытием небольшой количества информации?"

iSom

А мне не нравится, что меня умышленно обманывают.
поэтому предлагаешь при пустом запросе выдавать "ничего"... но ведь это же обман, не?

iSom


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

katrin2201

Это мы поняли. Профит то этого достижения какой?

tokuchu

поэтому предлагаешь при пустом запросе выдавать "ничего"... но ведь это же обман, не?
Я не говорил, что нужно выдавать что ничего нет. Есть разные варианты, например: "некорректный запрос".

iSom

Я не говорил
ну вот, взял и соврал на пустом месте :(
твои слова

зачем выводить ложь вместо того, чтобы ничего не выводить?

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

iSom

Профит то этого достижения какой?
удовлетворил свое любопытство :)
денег на этом зарабатывать не планировал, чего нет, того нет

tokuchu

ну вот, взял и соврал на пустом месте :(
твои слова
Я не говорил "выводить ничего". Я говорил "ничего не выводить" в смысле не выводить информации о том сколько объектов.
Как вариант "некорректный запрос" поможет узнать пользователю, насколько большая база - ведь именно это он хочет сделать, по твоему разумению?
А я не говорю, что это хороший вариант. Не выводить число записей плохо и может быть даже отвратительно в некоторых случаях. Но выводить неправильное число записей с моей точки зрения ещё хуже.

iSom

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

katrin2201

Ну окей. А про колво записей - ну выводи примерное число...

Anna551

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

Тукк, прости, но ты ведешь себя в этом посте, как ребенок: хочу чего-то, потому что это прикольно.
Побудить человека к сложной скачке может побудить только понимание, что ему нужна ВСЯ база.
Исходя из характера твоей базы(или не твоей, а какой-то еще) вариантов не так уж и много
1. База качается исходя из досужего интереса, что-то по быстрому чекнуть, получить какой-то базовый профит, в общем для не слишком серьезных целей. Тогда ее не будут качать серьезно, потому что ну нахера тратить на это время, если это не принесет профита?
2. База содержит в себе номера и CVV коды банковских карт или, иными словами - представляет собой ценность КАЖДАЯ запись в частности и целостность базы в целом. Тогда человек, который формирует запрос на "спиздить" базу будет заинтересован в том, чтобы объяснить программисту (в вырожденном случае себе что искать надо аккуратно и вдумчиво.
Ты же пишешь все эти посты про какого-то сферического среднего программиста в вакууме, который ради прикола качает твою базу. Нет таких. За каждым действием мотив стоит, от которого и зависит линия поведения.
Вообще, такое ощущение, что у тебя нет реального понимания о наличии/отсутствии ценности скрываемых данных.
В остальном правильно написали - существует целая куча стратегий сокрытия информации - от хэширования индексов и до ограничения числа сессий, на основе эвристических оценок качества запросов и для каждой из них существует способ проработать и ее тоже. Вопрос лишь в относительной стоимости.
P.S. выводить заведомо неверный результат - идеологически и принципиально неприемлемый прием, который нельзя обосновать вообще никак.
Не выводить "количество рек", или просить уточнить запрос, не выводя в респонсе ничего о выборке, если в выборке больше 1000 элементов - архитектурное обоснованное решение, основанное на понимании того, что именно ты предлагаешь пользователю.
P.P.S и парой страниц ранее ты спрашивал о том, когда человеку может понадобиться пустой запрос. А это ты сам должен ответить - может или не может? Или вы прикрутили сверхбольшие выдачи (вернее просто не открутили их потому что "не, ну а вдруг?".
Если ваш модуль должен отвечать на запрос "выдай мне все реки такого-то речного бассейна", то не отвечать на запрос о ВСЕХ реках - идиотизм.
Если не должен, то количество ответов в одной выборке не может быть больше 100-1000 и вполне уместно отвечать "уточните поисковый запрос"

iSom

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

Глупый конечно вопрос - а почему? Что дает знание, что в базе 151430, а не 151340 объектов?
И да, я полностью согласен с тобой, что надо бы вводить выдачу "уточните параметры запроса". И спасибо за подробный ответ. Денег от меня ты не получал, интереса писать у тебя не было - значит, вполне может быть и какой-то третий мотив, который отрицает большинство отметившихся :)

elenangel

вполне может быть и какой-то третий мотив, который отрицает большинство отметившихся
он называется "for the greater justice" или же "в интернете кто-то неправ"
Оставить комментарий
Имя или ник:
Комментарий: