Приложение под Android

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

Не придумывайте проблем. Вариант который я предложил
  1. абсолютно нересурсозатратен
  2. решает вопрос с загрузкой информации об отдельном фильме
  3. защищает вашу базу от троллей
 
13 лет, 6 месяцев назад
Модератор
Сообщений: 2,374
Anubis, и как ваш хеш фильма проверять и для чего он?
вы хотите включить в своё приложение базу хешей фильмов, чтобы можно было по ним получать данные? :)
а как её обновлять?

мой вариант - общепринятая практика.
1. Клиент даёт запрос серверу
2. Сервер спрашивает "Кто тама?" и выдаёт хеш.
3. Клиент генерит ответ на основе предложенного хеша сервера и своего индивидуального.
4. Сервер расшифровывает ответ и выделяет хеш клиента из ответа.
5. Если расшифрованный хеш есть в базе, то клиент получает доступ иначе посыл.

 
13 лет, 6 месяцев назад
Пользователь
Сообщений: 99
ElDrako, вот для чего мой хэш:
В одном из предыдущих постов, господин null предложил сделать возможность вытягивать информацию о фильме через API по id фильма. Вы сказали, что предложили эту идею админу и он отказался. Поясняю почему он отказался: потому что любой желающий может написать такую штуку

for(int i = 1; i < 99999; i++) {
API.getMovieInfo(i);
}


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

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

API.getMovieInfo(hash);

а сервер будет

SELECT TOP 1 * FROM Movies WHERE Hash = :hash

и все счастливы.

Нет смысла придумывать сложную логику, не ставьте препятствий.
 
13 лет, 6 месяцев назад
Модератор
Сообщений: 2,374
Anubis написал(а):
это позволит ему легко и просто вытянуть всю вашу базу данных.

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

Anubis написал(а):
API.getMovieInfo(hash);

вопрос: а хеш вы как узнаете?
ответ: либо из предыдущего ответа сервера, либо из закрытой базы (локальной)
в первом случае результат будет таким:
Anubis написал(а):
for(int i = 1; i < 99999; i++) {
API.getMovieInfo(i);
}


во втором:
ElDrako написал(а):
а как её обновлять?

 
13 лет, 6 месяцев назад
Пользователь
Сообщений: 5
Anubis написал(а):
Вы сказали, что предложили эту идею админу и он отказался. Поясняю почему он отказался: потому что любой желающий может написать такую штуку

for(int i = 1; i < 99999; i++) {
API.getMovieInfo(i);
}

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


Если захотеть, то и без апи можно сделать клон базы. Чуть больше потраченого трафика, чуть больше потраченого времени, но тем не менее все так же легко достается обычным запросом странички http://cinemate.cc/movie/{id фильма}/links/ и маленьким парсингом.

Причина действительно в этом или админ не объяснял?
 
13 лет, 6 месяцев назад
Пользователь
Сообщений: 99
ElDrako написал(а):
вопрос: а хеш вы как узнаете?

а этот хэш API будет возврашать в списке новых фильмов. вместо id которого сейчас тоже нет.
ElDrako написал(а):
а как её обновлять?

Кого обновлять?
 
13 лет, 6 месяцев назад
Администратор
Сообщений: 3,035
Причина в нежелании открывать доступ для всех к удобному способу получения информации о базе всех фильмов на сайте и информации раздач. Любой из предложенных вариантов, который мы можем придумать, ломается. Будь то специальный API Key, который выдается под подпись для каждого приложения, или хеши, которые, как верно заметил ElDrako, не ясно как обновлять. Любое приложения при должном желании можно взломать и вся база фильмов и раздач станет доступна на каком-нибудь ином сайте, причем наш сайт будут периодически "дергать" ради актуальности базы раздач и фильмов. Моя главная задача не допустить того, чтобы трафик, текущий через API, не превысил трафик, идущий через HTTP.

Описанные выше требования к изменению API от null я записал себе в заметки.
 
13 лет, 6 месяцев назад
Модератор
Сообщений: 2,374
Anubis написал(а):
а этот хэш API будет возврашать в списке новых фильмов. вместо id которого сейчас тоже нет.

а вот теперь дошло.
но можно сделать тоже самое по ид фильма - только брать данные из временной таблицы, поля которой живут 24 часа.
 
13 лет, 6 месяцев назад
Пользователь
Сообщений: 123
Зря проблему создали. Кому надо, тот и так сайт распарсит за пару часиков.
А удобный API - дело хорошее. Поддержу null'a по поводу Movie.Info и Movie.Torrents.
 
13 лет, 6 месяцев назад
Пользователь
Сообщений: 488
Pentusha написал(а):
Зря проблему создали. Кому надо, тот и так сайт распарсит за пару часиков.

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

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