PDA

Просмотр полной версии : АНТИпарсинг


vorona
06.02.2010, 11:45
Как сделать систему антипарсинга? Блок по IP не катит в данном случае.

Есть такая идея: для каждого пользователя записывать какое-то значение сессии и проверять на наличие этого значения.

KaE
06.02.2010, 11:55
Придумай систему с временным паролем доступа на сайт, который отправляется пользователю посредством SMS.

qW1zer
06.02.2010, 12:02
vorona
А если ты для каждого будешь записывать значение в сессию,разве оно так называемому боту не будет записано?
Можно сделать пароль как сказали выше,но не обязательно с смс или что-то типа вопроса с кнопкой или пример,ну в общем аналогично анти-спаму

vorona
06.02.2010, 12:06
Придумай систему с временным паролем доступа на сайт, который отправляется пользователю посредством SMS.
Та не, это слишком)

vorona
06.02.2010, 12:07
vorona
А если ты для каждого будешь записывать значение в сессию,разве оно так называемому боту не будет записано?
Можно сделать пароль как сказали выше,но не обязательно с смс или что-то типа вопроса с кнопкой или пример,ну в общем аналогично анти-спаму
По идеи не должно. Я тестил - не записывалось. С одного хостинга грабил второй. На втором поставил эту систему. Грабил сокетами - сессия не записывалась.

qW1zer
06.02.2010, 12:08
Есть еще идея, при первом посещении каждым пользователем
Задавать вопрос типа вы бот или еще что-либо,при нормальном ответе записывать в базу ip и значение к примеру 1 или 0
1=человек
0=бот
Ну а там уже как-нибудь сам

mailbrush
06.02.2010, 12:26
Есть еще идея, при первом посещении каждым пользователем
Задавать вопрос типа вы бот или еще что-либо,при нормальном ответе записывать в базу ip и значение к примеру 1 или 0
1=человек
0=бот
Ну а там уже как-нибудь сам
Парсеры пишут люди... Я сам писал, и пишу парсеры, и эта "защита" обходится в два счета.

qW1zer
06.02.2010, 12:46
mailbrush
Ну я вообще-то знаю,просто предлагаю хоть какие-то варианты,ты более опытный,предложи что-то еще

mailbrush
06.02.2010, 12:59
Спарсить можно все! Но можно затруднить парсинг, обфусцируя код...

m0Hze
06.02.2010, 13:01
Жабаскрипт + сессии + каптча + исчо всякая дрянь = затруднение парсинга.

imajo.ati
06.02.2010, 17:23
парсеры обычно используют запросы с такими заголовками:
Accept-Ranges: bytes
Range: bytes=300-999
для экономии трафика.
не разрешай такие запросы.

парсеры часто не посылают заголовки
Accept-Charset
Accept-Language
не разрешай такие запросы (создатель парсера потеряет время, для того чтобы понять это)

используй сжатие, не все парсеры умеют обрабатывать gzip

Deathdreams
06.02.2010, 18:48
используй сжатие, не все парсеры умеют обрабатывать gzip
Что значит парсеры, люди чтоли, которые пишут их ?

gzip используется для экономия трафа онли, его даже обходить не нужно.

парсеры часто не посылают заголовки Accept-Charset Accept-Language
Для определение этого потребуется 10 минут, но всё равно даже самый обделённый кодер сможет догадатся в чём соль

Вариант от меня: использовать обфусцированный JS, потребуется время и мозги

Mixon
06.02.2010, 19:01
imajo.ati,всё это очень легко обходиться...

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

Пример роботы:
Открываеш страницу входа в свой профиль,на странице есть div,и закодированный код,в котором находятся имена двух полей и несколько закодированных хешей,а в самом низу страницы яваскрипт,который после загрузки страницы раскодирует закодированный код,создаёт два поля (логин и пароль) с именами hjdfs7sd к примеру,и после ввода,шлёт запрос на сервер вида

/index.php?ssid=hg32j4g23j&hjdfs7sd=andrey&gh4jk3=qwerty

далее,на сервере по сессии в БД ищется запись,в который указаны имена полей для логина и пароля,и после этого обрабатываются только...

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

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

vvy
07.02.2010, 04:32
Имхо, спасет только капча, причем самописная и как следствие уникальная. Почему не работают стандартные капчи всех движков? Да потому, что, написав один раз код, можно будет, допустим, спамить тысячи сайтов. Хотя малопопулярный ресурс можно защитить простым чекбоксом "Я не робот" и все. Большинство спамеров просто не будут заморачиватся на этом сайте, ведь есть сотни других. А вот для контакта, к примеру, этот способ уже не подойдет, ведь кодер нацелен именно на конкретный ресурс и он в любом случае разберется что там и как.

Защита на javascript (даже к абсфукацией кода) - тоже плохая мера, ведь все скрипты можно интерпритировать к примеру в Delphi через TWebBrowser (кстати недавно написал статью на эту тему (http://vvy.me/coding/9-pishem-bota-dlya-sajta-na-javascript.html) ). А там сам компонент выполняет весь js код, отсылает все нужные хедеры и т.д.

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

ЗЫ Например на www.tvidi.ru стоит очень удачная и не напрягающая пользователей капча:
- Показывают какуюто картинку
- И спрашивают "Что ты видишь на картинке?" и дают варианты ответов (по мере нарастания опасений в парсинге количество ответов увеличивается)