Защита от скрипинга экрана
Следуя моему вопросу о Правоспособности скрипинга экрана, даже если это незаконные люди все равно попытаются, так:
Какие технические механизмы могут использоваться для предотвращения или, по крайней мере, устранения нежелательных последствий скрипирования экрана?
О, и только для усмешек и для того, чтобы усложнить жизнь, вполне может быть приятно сохранить доступ к поисковым системам. Я вполне могу играть здесь адвоката дьявола, но есть серьезная базовая точка.
Ответы
Ответ 1
Таким образом, одним из подходов было бы обфускацию кода (rot13 или что-то еще), а затем на странице будет некоторый javascript, который сделает что-то вроде document.write(unobfuscate (obfuscated_page)). Но это полностью сбрасывает поисковые системы (возможно!).
Конечно, это фактически не останавливает тех, кто хочет украсть ваши данные, но это все усложняет.
Как только у клиента есть данные, это довольно много игр, поэтому вам нужно посмотреть что-то на стороне сервера.
Учитывая, что поисковые системы в основном скребки экрана, все сложно. Вам нужно посмотреть, какая разница между хорошими скреперами экрана и плохими экранами. И, конечно же, у вас есть обычные пользователи. Таким образом, это сводится к проблеме того, как вы можете на сервере эффективно классифицировать запрос как исходящий от человека, хороший скребок экрана или плохой скребок экрана.
Итак, место для начала будет смотреть на ваши лог файлы и видеть, есть ли какой-то шаблон, который позволяет эффективно классифицировать запросы, а затем при определении шаблона посмотреть, есть ли какой-то способ плохой скребок экрана, узнав эту классификацию, мог скрыться, чтобы выглядеть как человеческий или хороший скребок экрана.
Некоторые идеи:
- Вы можете определить хорошие скребки экрана по IP-адресам.
- Вы могли бы определить скребок против человека по количеству одновременных подключений, общее количество подключений за период времени, шаблон доступа и т.д.
Очевидно, что они идеальны или безупречны. Другая тактика заключается в том, чтобы определить, какие меры вы можете предпринять, которые ненавязчивы для человека, но (может быть) раздражать скребки. Примером может быть замедление количества запросов. (Зависит от критичности времени запроса. Если они соскабливаются в реальном времени, это будет влиять на их конечных пользователей).
Другой аспект - лучше обслуживать этих пользователей. Ясно, что они соскабливаются, потому что хотят данных. Если вы предоставите им простой способ непосредственного получения данных в полезном формате, тогда им будет проще делать это вместо скрипирования экрана. Если есть простой способ, доступ к данным можно регулировать. Например: предоставить запросчикам уникальный ключ, а затем ограничить количество запросов на ключ, чтобы избежать перегрузки на сервере или взимать плату за 1000 запросов и т.д.
Конечно, есть еще люди, которые захотят вас разорвать, а затем, возможно, есть другие способы отчуждения, но они, вероятно, начинают быть нетехническими и требуют юридических возможностей, чтобы их преследовали.
Ответ 2
Вы не можете его предотвратить.
Ответ 3
Я написал сообщение в блоге об этом здесь: http://blog.screen-scraper.com/2009/08/17/further-thoughts-on-hindering-screen-scraping/
Перефразировать:
Если вы публикуете информацию в Интернете, кто-то может ее получить, это всего лишь вопрос о том, сколько ресурсов они хотят инвестировать. Некоторые способы сделать требуемые ресурсы выше:
Тесты Тьюринга
Наиболее распространенной реализацией Turning Test является старая CAPTCHA, которая пытается обеспечить, чтобы человек читал текст в изображении и подавал его в форму.
Мы нашли большое количество сайтов, которые реализуют очень слабую CAPTCHA, которая занимает всего несколько минут, чтобы обойти. С другой стороны, есть некоторые очень хорошие реализации тестов Тьюринга, которые мы бы предпочли не решать с учетом выбора, но сложный OCR иногда может их преодолеть, или у многих спамеров на доске объявлений есть некоторые хитроумные трюки, чтобы пройти мимо них.
Данные как изображения
Иногда вы знаете, какие части ваших данных ценны. В этом случае разумно заменить такой текст изображением. Как и в случае с тестом Тьюринга, есть программное обеспечение OCR, которое может его прочитать, и нет причин, по которым мы не можем сохранить изображение, и кто-то прочитал его позже.
Часто, однако, перечисление данных в виде изображения без альтернативного текста является нарушением Закона США об инвалидах (ADA) и может быть преодолено несколькими телефонными звонками в юридический отдел компании.
Обфускация кода
Используя что-то вроде функции JavaScript, чтобы показывать данные на странице, хотя ее нигде в источнике HTML не является хорошим трюком. Другие примеры включают предоставление плодовитых, посторонних комментариев через страницу или наличие интерактивной страницы, которая заказывает вещи непредсказуемым образом (и пример, который я думаю об использовании CSS, чтобы сделать отображение одинаковым независимо от расположения кода.)
CSS Sprites
Недавно мы столкнулись с некоторыми примерами, когда страница имела одно изображение, содержащее числа и буквы, и использовала CSS для отображения только тех символов, которые они хотели. Это фактически комбинация двух предыдущих методов. Сначала мы должны получить это мастер-образ и прочитать, какие символы есть, а затем вынуждены прочитать CSS на сайте и определить, к какому символу указывал каждый тег.
Хотя это очень умно, я подозреваю, что это тоже запустит ADA, хотя Ive еще не проверял.
Ограничить результаты поиска
Большинство данных, которые мы хотим получить, за какой-то формой. Некоторые из них легки, и представление пустой формы даст все результаты. Некоторым нужна звездочка или проценты, помещенные в форму. Самые трудные из них - это те, которые дадут вам только столько результатов для каждого запроса. Иногда мы просто создаем цикл, который будет отправлять буквы алфавита в форму, но если это слишком общее, мы должны сделать цикл, чтобы отправить все комбинации из 2 или 3 букв - это запросы на 17 576 страниц.
IP-фильтрация
Иногда опытный веб-мастер замечает большое количество запросов страниц, поступающих с определенного IP-адреса, и блокирует запросы из этого домена. Однако существует несколько способов передачи запросов через альтернативные домены, поэтому этот метод обычно неэффективен.
Тонкование сайта
Скребок всегда отключает определенные вещи в HTML. На некоторых сайтах есть ресурсы для постоянной настройки своего HTML-кода, чтобы любые царапины постоянно устарели. Поэтому становится неэффективным постоянно обновлять царапину для постоянно меняющихся условий.
Ответ 4
Очень сложно предотвратить скрипинг экрана, но если вы действительно, действительно захотелось, чтобы вы могли
часто меняйте свой HTML или часто меняйте имена тегов HTML. Большинство скребок экрана работают с использованием сопоставлений строк с именами тегов или регулярных выражений, которые ищут определенные строки и т.д. Если вы меняете базовый HTML, это заставит их изменить свое программное обеспечение.
Ответ 5
Было бы очень трудно предотвратить. Проблема в том, что веб-страницы должны анализироваться программой (вашим браузером), поэтому их можно легко очистить. Лучшее, что вы можете сделать, это проявлять бдительность, и если вы обнаружите, что ваш сайт очищается, заблокируйте IP-адрес нарушающей программы.
Ответ 6
Поисковые системы. Скребки экрана по определению. Поэтому большинство вещей, которые вы делаете, чтобы усложнить скрипирование экрана, также затруднит индексирование вашего контента.
Хорошо выполненные роботы будут соблюдать ваш файл robots.txt.
Вы также можете заблокировать IP-адрес известных преступников или добавить обфускацию тегов HTML в свой контент, если он не отправлен известному хорошему роботу. Это проигравшая битва. Я рекомендую маршрут судебных разбирательств для известных преступников.
Вы также можете скрыть идентифицирующие данные в контенте, чтобы облегчить отслеживание нарушителей. Известно, что энциклопедии добавляют фиктивные записи, чтобы помочь обнаружить и преследовать нарушителей авторских прав.
Ответ 7
Лучшая отдача от инвестиций, вероятно, заключается в добавлении случайных строк и нескольких пробелов, поскольку большинство скребок экрана работают из HTML как текст, а не как XML (так как большинство страниц не анализируют как допустимый XML).
Браузер игнорирует пробелы, поэтому ваш пользователь не замечает, что
Price : 1
Price : 2
Price\n:\n3
разные. (это исходит из моего опыта соскабливания правительственных сайтов с AWK).
Следующий шаг - добавлять теги вокруг случайных элементов, чтобы испортить DOM.
Ответ 8
Не мешайте этому, обнаруживайте его и возмещайте тем, кто пытается.
Например, оставьте свой сайт открытым для загрузки, но распространите некоторые ссылки, за которыми последует здравомыслящий пользователь. Если кто-то следует этой ссылке, слишком быстро нажимает на человека или другое подозрительное поведение, немедленно реагируйте, чтобы пользователь не пытался его попробовать. Если есть система входа в систему, заблокируйте пользователя и свяжитесь с ним относительно неприемлемого поведения. Это должно сделать так, чтобы они не пытались повторить попытку. Если нет системы входа в систему, а не фактических страниц, верните большое предупреждение с поддельными ссылками на одно и то же предупреждение.
Это действительно применимо к таким вещам, как Safari Bookshelf, где пользователь скопирует фрагмент кода или главу, чтобы отправить коллегу письмо в порядке, в то время как полная загрузка книги неприемлема. Я совершенно уверен, что они обнаруживают, что некоторые пытаются загрузить свои книги, заблокировать учетную запись и показать виновнику, что он может попасть в РЕАЛЬНУЮ проблему, если он попробует это снова.
Чтобы сделать не-ИТ-аналогию, если безопасность в аэропортах только затрудняла сбор оружия на борту самолетов, террористы попытались бы изо всех сил прокрасть одну прошлую безопасность. Но тот факт, что просто попытка заставит вас в глубоких бедах сделать это так, что никто не попытается найти способы прокрасть его. Риск попадания и наказания слишком высок. Просто сделайте то же самое. Если возможно,
Ответ 9
Предотвратить? - невозможно, но вы можете сделать это сложнее.
Disincentivise? - возможно, но вам не понравится ответ: обеспечить экспорт объемных данных для заинтересованных сторон.
В долгосрочной перспективе все ваши конкуренты будут иметь одинаковые данные, если вы опубликуете их, поэтому вам нужны другие способы диверсификации вашего сайта (например, обновлять его чаще, сделать его быстрее или проще в использовании). В наши дни даже Google использует иссохшую информацию, такую как отзывы пользователей, как вы думаете, что вы можете с этим поделать? Сью и загрузитесь из своего индекса?
Ответ 10
Один из способов - создать функцию, которая принимает текст и позицию, а затем Serverside генерирует x, y pos для каждого символа в тексте, генерирует divs в случайном порядке, содержащем символы. Создайте javascript, который затем помещает каждый div в нужное место на экране. Выглядит хорошо на экране, но в коде позади нет никакого реального заказа, чтобы извлечь текст, если вы не столкнетесь с проблемой соскабливания через ваш javascript (который может быть изменен динамически каждый запрос)
Слишком много работы и возможно много причуд, это зависит от того, сколько текста и как усложняет пользовательский интерфейс, который у вас есть на сайте, и другие вещи.
Ответ 11
Очень немногие, которые, как мне кажется, предполагают, что любой сайт должен публиковать (т.е. публиковать) информацию.
-
Вы можете скрыть свои данные за входами, конечно, но это очень ситуативное решение.
-
Я видел приложения, которые будут обслуживать только контент, где заголовки запросов указывают на веб-браузер (вместо анонимного или "джакарта" ), но это легко подделать, и вы потеряете некоторых подлинных людей.
-
Тогда есть вероятность, что вы примете некоторый отскок, но сделайте жизнь непреодолимо тяжелой для них, не подавая контент, если запросы поступают с одного и того же IP-адреса с слишком высокой скоростью. Это страдает от не полного охвата, но, что еще более важно, существует "проблема AOL", которую IP может охватывать многие уникальные человеческие пользователи.
Оба последних двух метода также сильно зависят от технологии перехвата трафика, которая является неизбежной производительностью и/или финансовыми затратами.
Ответ 12
Учитывая, что большинство сайтов хотят иметь хорошее ранжирование в поисковых системах, а поисковые системы - скребковые боты, вы не можете много сделать, что не повредит вашему SEO.
Вы можете создать полностью загруженный сайт или флеш-сайт, что затруднит работу с ботами или скроет все, что связано с логином, что сделает его еще сложнее, но любой из этих подходов повредит вашему поисковому ранжированию и, возможно, раздражать ваших пользователей, и если кто-то действительно этого захочет, они найдут способ.
Единственный гарантированный способ иметь контент, который нельзя очистить, - не публиковать его в Интернете. Природа сети такова, что, когда вы ее там размещаете, она там.
Ответ 13
Если ваша небольшая информация, которую вы хотите защитить, может конвертировать ее в изображение на лету. Затем они должны использовать OCR, что упрощает очистку другого сайта, а не вашего.
Ответ 14
Вы можете проверить пользовательский агент клиентов, приходящих на ваш сайт. Некоторые сторонние программы очистки экрана имеют свой собственный пользовательский агент, поэтому вы можете блокировать это. Хорошие скребки экрана, однако, обманывают их пользовательский агент, поэтому вы не сможете его обнаружить. Будьте осторожны, если вы пытаетесь заблокировать кого-либо, потому что вы не хотите блокировать законного пользователя:)
Лучшее, на что вы можете надеяться, - заблокировать людей, использующих скребки экрана, которые недостаточно умны, чтобы изменить свой агент пользователя.
Ответ 15
Я пытался "скринировать" некоторые файлы PDF один раз, только чтобы найти, что они фактически помещают символы в PDF в полуслучайном порядке. Я думаю, формат PDF позволяет указать местоположение для каждого блока текста, и они использовали очень маленькие блоки (меньше, чем слово). Я подозреваю, что рассматриваемые PDF файлы не пытались предотвратить скрипинг экрана, так как они делали что-то странное с помощью своего механизма рендеринга.
Интересно, можете ли вы сделать что-то подобное.
Ответ 16
Вы можете поместить все в flash, но в большинстве случаев это может раздражать многих законных пользователей, включая меня. Он может работать для некоторой информации, такой как цены акций или графики.
Ответ 17
Я подозреваю, что нет хорошего способа сделать это.
Я предполагаю, что вы можете запустить весь свой контент с помощью механизма для преобразования текста в изображения, созданные с использованием шрифта и макета стиля CAPTCHA, но это сломает SEO и раздражает ваших пользователей.
Ответ 18
Хорошо, прежде чем вы нажимаете содержимое с сервера на клиент, удалите все \r\n,\n,\t и замените все не более чем одним пробелом. Теперь у вас есть одна длинная строка на странице html. Google делает это. Это затруднит чтение других ваших html или JavaScript.
Затем вы можете создавать пустые теги и произвольно вставлять их здесь и там. Не будет никакого эффекта.
Затем вы можете регистрировать все IP-адреса и как часто они попадают на ваш сайт. Если вы видите тот, который приходит вовремя каждый раз, вы отмечаете его как робота и блокируете его.
Убедитесь, что вы оставите поисковые системы в одиночку, если хотите, чтобы они вошли.
Надеюсь, что это поможет
Ответ 19
Как насчет использования iText library для создания PDF файлов из вашей базы данных? Как и в случае с Flash, он не сделает скребок невозможным, но может сделать это немного сложнее.
Нелс
Ответ 20
Старый вопрос, но - добавление интерактивности делает скрипинг экрана намного сложнее. Если данные не находятся в исходном ответе, скажем, вы сделали запрос AJAX для заполнения div после загрузки страницы, большинство скребок не увидит его.
Например, я использую библиотеку Mechanize для выполнения моих выскабливаний. Механизм не выполняет Javascript - это не современный браузер - он просто анализирует HTML, позволяет мне следить за ссылками и извлекать текст и т.д. Всякий раз, когда я сталкиваюсь с страницей, которая сильно использует Javascript, я задыхаюсь - без полностью написанного сценария браузер (который поддерживает всю гамму Javascript) Я застрял.
Это та же проблема, которая затрудняет автоматическое тестирование высокоинтерактивных веб-приложений.
Ответ 21
Я никогда не думал, что предотвратит печать экрана... возможно, что вы знаете, посмотрите новый tech - sivizion.com. С их технологией видео-буфера нет возможности сделать экран печати, классный, действительно классный, хотя и сложный в использовании... Я думаю, что они тоже лицензионные технологии, проверьте это. (Если я ошибаюсь, напишите здесь, как это можно взломать.)
Найденный здесь: Как предотвратить печать экрана