Login
генерировать html на стороне клиента
NEW 17.04.15 20:38
Zuletzt geändert 17.04.15 20:39 (natuerlich blond)
Можно ли внести изменения в html-файл до того, как DOMContentLoaded?
Процесс такой: при загрузке страницы на сервере генерируется html-код (могут быть разные элементы). Клиент через ajax-Request получает этот код и вставляет в страницу.
Очень нужно, чтобы этот html-snippet добавлялся до загрузки контента, т.к. должен читаться при просмотре html-кода в браузере или распознаваться при автоматизированном доступе к странице.
Процесс такой: при загрузке страницы на сервере генерируется html-код (могут быть разные элементы). Клиент через ajax-Request получает этот код и вставляет в страницу.
Очень нужно, чтобы этот html-snippet добавлялся до загрузки контента, т.к. должен читаться при просмотре html-кода в браузере или распознаваться при автоматизированном доступе к странице.
NEW 17.04.15 21:33
in Antwort natuerlich blond 17.04.15 20:57
NEW 17.04.15 21:57
in Antwort natuerlich blond 17.04.15 20:38
Так понимаю нужно Вам это для СЕО. Вы не в ту сторону копаете, а решений всего два:
1) Изменить backend так, что-бы он отдавал при запросе релевантную для СЕО информацию статически. Не всегда можно сделать.
2) Идентифицировать робота и отдавать им слепки страниц. Слепки делать или самому, но нужно быть очень акуратным, или вас могут наказать(подробности лень описывать). Есть коробочные решения, например http://prerender.io
Кстати сегодня и гугл и яндекс в состоянии получать информацию, которая получается аяксом. Конечно не всю. Посмотрите логи Вашего сервера и будете приятно удивлены
1) Изменить backend так, что-бы он отдавал при запросе релевантную для СЕО информацию статически. Не всегда можно сделать.
2) Идентифицировать робота и отдавать им слепки страниц. Слепки делать или самому, но нужно быть очень акуратным, или вас могут наказать(подробности лень описывать). Есть коробочные решения, например http://prerender.io
Кстати сегодня и гугл и яндекс в состоянии получать информацию, которая получается аяксом. Конечно не всю. Посмотрите логи Вашего сервера и будете приятно удивлены
NEW 17.04.15 22:26
in Antwort Posmotrim 17.04.15 21:57
Вообще-то, не для СЕО, а для защиты от ботов.
Цель создать независимый компонент, который можно было бы вставить в любую html-страницу, в том числе и на старых системах.
Этот компонент может отдавать разные компоненты защиты, в зависимости от своей конфигурации и текущей обстановки в сети. Проблема, например, генерировать таким образом honeypot. Если бот не читает JS, то он просто не заметит его в случае, если он был добавлен после загрузки контента.
Цель создать независимый компонент, который можно было бы вставить в любую html-страницу, в том числе и на старых системах.
Этот компонент может отдавать разные компоненты защиты, в зависимости от своей конфигурации и текущей обстановки в сети. Проблема, например, генерировать таким образом honeypot. Если бот не читает JS, то он просто не заметит его в случае, если он был добавлен после загрузки контента.
NEW 18.04.15 07:12
in Antwort natuerlich blond 17.04.15 22:26
Бот читает по протоколу HTTP(S) страницу, отдваваемую фронтендом. О каких клиентских компонентах может идти речь?
Вам подойдёт только серверное решение: определять бота и отдавать шлак.
Ну а вообще сегодня написать бот с обработкой JS не составляет труда. Плюс бота даже и не определишь порой в backend-e, если он примитивно подделает тот-же HTTP_USER_AGENT. Или то, почему Вы собрались его определять.
Удачи.

Ну а вообще сегодня написать бот с обработкой JS не составляет труда. Плюс бота даже и не определишь порой в backend-e, если он примитивно подделает тот-же HTTP_USER_AGENT. Или то, почему Вы собрались его определять.
Удачи.
NEW 18.04.15 12:04
Видимо, я не понимаю, что вы имеете ввиду. Или вы меня. Конечно, валидация будет производиться на стороне сервера, и на сервере будет решаться, что отдавать.
Вопрос был в том, чтобы динамически создавать компоненты защиты, которые были бы добавлены до загрузки контента, чтобы бот вообще имел возможность прочитать их в html. Какие компоненты? Та же классическая CAPTCHA, уже приведенный мной в пример медовый горшок, и еще много-много всяких возможностей.
да, знаю, можно и через эмулятор браузера. для них тоже предусматриваются мероприятия. но простые боты все-таки работают без JS, и их большинство.
для этого и используются другие компоненты защиты, как та же кэпча энд Ко.
Вопрос был именно о том, можно ли как-то манипулировать html еще до загрузки страницы. Видимо придется использовать что-то типа JSF, а так не хотелось.
in Antwort Posmotrim 18.04.15 07:12
В ответ на:
О каких клиентских компонентах может идти речь? Вам подойдёт только серверное решение: определять бота и отдавать шлак.
О каких клиентских компонентах может идти речь? Вам подойдёт только серверное решение: определять бота и отдавать шлак.
Видимо, я не понимаю, что вы имеете ввиду. Или вы меня. Конечно, валидация будет производиться на стороне сервера, и на сервере будет решаться, что отдавать.
Вопрос был в том, чтобы динамически создавать компоненты защиты, которые были бы добавлены до загрузки контента, чтобы бот вообще имел возможность прочитать их в html. Какие компоненты? Та же классическая CAPTCHA, уже приведенный мной в пример медовый горшок, и еще много-много всяких возможностей.
В ответ на:
Ну а вообще сегодня написать бот с обработкой JS не составляет труда.
Ну а вообще сегодня написать бот с обработкой JS не составляет труда.
да, знаю, можно и через эмулятор браузера. для них тоже предусматриваются мероприятия. но простые боты все-таки работают без JS, и их большинство.
В ответ на:
Плюс бота даже и не определишь порой в backend-e, если он примитивно подделает тот-же HTTP_USER_AGENT.
Плюс бота даже и не определишь порой в backend-e, если он примитивно подделает тот-же HTTP_USER_AGENT.
для этого и используются другие компоненты защиты, как та же кэпча энд Ко.
Вопрос был именно о том, можно ли как-то манипулировать html еще до загрузки страницы. Видимо придется использовать что-то типа JSF, а так не хотелось.
NEW 18.04.15 13:47
in Antwort natuerlich blond 18.04.15 12:04
Где у Вас рендерится html в бэкенде на веб сервере, который отдаётся по http? Именно там вам нужно определить что юзер - бот и отдать ему нужный контент.
Можно переложить это на сам веб сервер. В интернете есть примеры как для апача так и для nginx.
Можно переложить это на сам веб сервер. В интернете есть примеры как для апача так и для nginx.
NEW 18.04.15 14:16
html-файлы на сервере никаких изменений не претерпевают. это простые html5-документы.
Задача другая: уже по первому запросу, ДО определения бота, выдать динамический контент, с помощью которого бот и определяется. и вставить его в html.
и только потом по заполненным полям или другим признакам определять на сервере, бот это или нормальный пользователь.
я поняла, изменения в html нужно вносить еще на сервере до того, как документ отправлен клиенту. на клиенте не пойдет.
к сожалению, нужно смотреть в сторону других технологий.
in Antwort Posmotrim 18.04.15 13:47
В ответ на:
Где у Вас рендерится html в бэкенде на веб сервере, который отдаётся по http?
Где у Вас рендерится html в бэкенде на веб сервере, который отдаётся по http?
html-файлы на сервере никаких изменений не претерпевают. это простые html5-документы.
В ответ на:
Именно там вам нужно определить что юзер - бот и отдать ему нужный контент.
Именно там вам нужно определить что юзер - бот и отдать ему нужный контент.
Задача другая: уже по первому запросу, ДО определения бота, выдать динамический контент, с помощью которого бот и определяется. и вставить его в html.
и только потом по заполненным полям или другим признакам определять на сервере, бот это или нормальный пользователь.
я поняла, изменения в html нужно вносить еще на сервере до того, как документ отправлен клиенту. на клиенте не пойдет.
к сожалению, нужно смотреть в сторону других технологий.
NEW 19.04.15 00:51
in Antwort natuerlich blond 18.04.15 14:16
Грузите пустой html с разметкой и скриптом проверкой на бота. Ну а контент подгружать динамически, в случае успешной проверки.
NEW 19.04.15 16:44
in Antwort Posmotrim 19.04.15 00:51
Я вроде разобралась, где мы друг друга недопоняли.
Меня пока совсем не интересует, что должно происходить после проверки на бота. Меня интересует только добавка в html элементов для этой проверки.
Вот в этом и проблема. В большинстве случаев такой способ меня устраивает.
Но в случае с honeypot это работать не будет. Горшочек меда - это обычное input-поле, которое скрывается с помощью CSS, или явойскрипт, или другими способами. Получается, пользователь его не должен видеть и соответственно не заполняет, а бот должен увидеть и заполнить. Но если поле добавляется на стороне клиента через JS после того, как DOMContentLoaded, то оно не включено в html, и бот его не видит.
Получается, надо рендерить на сервере еще до обработки запроса.
Меня пока совсем не интересует, что должно происходить после проверки на бота. Меня интересует только добавка в html элементов для этой проверки.
В ответ на:
Грузите пустой html с разметкой и скриптом проверкой на бота
Грузите пустой html с разметкой и скриптом проверкой на бота
Вот в этом и проблема. В большинстве случаев такой способ меня устраивает.
Но в случае с honeypot это работать не будет. Горшочек меда - это обычное input-поле, которое скрывается с помощью CSS, или явойскрипт, или другими способами. Получается, пользователь его не должен видеть и соответственно не заполняет, а бот должен увидеть и заполнить. Но если поле добавляется на стороне клиента через JS после того, как DOMContentLoaded, то оно не включено в html, и бот его не видит.
Получается, надо рендерить на сервере еще до обработки запроса.
20.04.15 09:57
in Antwort natuerlich blond 18.04.15 14:16
В чем проблема заменить HTML на JSP? Зачем сразу городить лес с JSF?
NEW 20.04.15 16:28
in Antwort scorpi_ 20.04.15 09:57
хотела обойтись без JSF/JSP. Но если на то пошло, то JSF мне проще, тем более что актуально у нас используется.
NEW 20.04.15 19:03
in Antwort natuerlich blond 20.04.15 16:28
JSF проще?? Мда, что-то народ вообще основы перестал изучать...
NEW 20.04.15 19:40
Бот - дурак? :) Неужели такая примитивная проверка работает?
in Antwort natuerlich blond 19.04.15 16:44
В ответ на:
Горшочек меда - это обычное input-поле, которое скрывается с помощью CSS, или явойскрипт, или другими способами.
Горшочек меда - это обычное input-поле, которое скрывается с помощью CSS, или явойскрипт, или другими способами.
Бот - дурак? :) Неужели такая примитивная проверка работает?

NEW 20.04.15 19:52
это типа кто чего привык. зачем делать JSP, если в основном все порталы на JSF?
in Antwort scorpi_ 20.04.15 19:03
В ответ на:
JSF проще??
JSF проще??
это типа кто чего привык. зачем делать JSP, если в основном все порталы на JSF?
20.04.15 19:55
Работает все, что бот не понимает. Если бот понимает явускрипт или специально вычитывает CSS, чтобы определить визуально скрытые поля, или работает через эмулятор браузера, то такая примитивная проверка не работает.
in Antwort Программист 20.04.15 19:40
В ответ на:
Неужели такая примитивная проверка работает?
Неужели такая примитивная проверка работает?
Работает все, что бот не понимает. Если бот понимает явускрипт или специально вычитывает CSS, чтобы определить визуально скрытые поля, или работает через эмулятор браузера, то такая примитивная проверка не работает.
20.04.15 20:07
Зачем работать через какой-то эмулятор, когда есть самый настоящий браузер, через который очень удобно работать. Ничего эмулировать не надо + полный контроль над ссылками и всеми обращениями к серверу.
Неужели есть боты, которые сами парсят веб страницы?
in Antwort natuerlich blond 20.04.15 19:55
В ответ на:
или работает через эмулятор браузера
или работает через эмулятор браузера
Зачем работать через какой-то эмулятор, когда есть самый настоящий браузер, через который очень удобно работать. Ничего эмулировать не надо + полный контроль над ссылками и всеми обращениями к серверу.
Неужели есть боты, которые сами парсят веб страницы?