русский
Germany.ruForen → Архив Досок→ Programmierung

генерировать html на стороне клиента

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

Видимо, я не понимаю, что вы имеете ввиду. Или вы меня. Конечно, валидация будет производиться на стороне сервера, и на сервере будет решаться, что отдавать.
Вопрос был в том, чтобы динамически создавать компоненты защиты, которые были бы добавлены до загрузки контента, чтобы бот вообще имел возможность прочитать их в html. Какие компоненты? Та же классическая CAPTCHA, уже приведенный мной в пример медовый горшок, и еще много-много всяких возможностей.
В ответ на:
Ну а вообще сегодня написать бот с обработкой JS не составляет труда.

да, знаю, можно и через эмулятор браузера. для них тоже предусматриваются мероприятия. но простые боты все-таки работают без JS, и их большинство.
В ответ на:
Плюс бота даже и не определишь порой в backend-e, если он примитивно подделает тот-же HTTP_USER_AGENT.

для этого и используются другие компоненты защиты, как та же кэпча энд Ко.
Вопрос был именно о том, можно ли как-то манипулировать html еще до загрузки страницы. Видимо придется использовать что-то типа JSF, а так не хотелось.
#8 
  Posmotrim знакомое лицо18.04.15 13:47
Posmotrim
NEW 18.04.15 13:47 
in Antwort natuerlich blond 18.04.15 12:04
Где у Вас рендерится html в бэкенде на веб сервере, который отдаётся по http? Именно там вам нужно определить что юзер - бот и отдать ему нужный контент.
Можно переложить это на сам веб сервер. В интернете есть примеры как для апача так и для nginx.
#9 
natuerlich blond старожил18.04.15 14:16
natuerlich blond
NEW 18.04.15 14:16 
in Antwort Posmotrim 18.04.15 13:47
В ответ на:
Где у Вас рендерится html в бэкенде на веб сервере, который отдаётся по http?

html-файлы на сервере никаких изменений не претерпевают. это простые html5-документы.
В ответ на:
Именно там вам нужно определить что юзер - бот и отдать ему нужный контент.

Задача другая: уже по первому запросу, ДО определения бота, выдать динамический контент, с помощью которого бот и определяется. и вставить его в html.
и только потом по заполненным полям или другим признакам определять на сервере, бот это или нормальный пользователь.
я поняла, изменения в html нужно вносить еще на сервере до того, как документ отправлен клиенту. на клиенте не пойдет.
к сожалению, нужно смотреть в сторону других технологий.
#10 
  Posmotrim знакомое лицо19.04.15 00:51
Posmotrim
NEW 19.04.15 00:51 
in Antwort natuerlich blond 18.04.15 14:16
Грузите пустой html с разметкой и скриптом проверкой на бота. Ну а контент подгружать динамически, в случае успешной проверки.
#11 
natuerlich blond старожил19.04.15 16:44
natuerlich blond
NEW 19.04.15 16:44 
in Antwort Posmotrim 19.04.15 00:51
Я вроде разобралась, где мы друг друга недопоняли.
Меня пока совсем не интересует, что должно происходить после проверки на бота. Меня интересует только добавка в html элементов для этой проверки.
В ответ на:
Грузите пустой html с разметкой и скриптом проверкой на бота

Вот в этом и проблема. В большинстве случаев такой способ меня устраивает.
Но в случае с honeypot это работать не будет. Горшочек меда - это обычное input-поле, которое скрывается с помощью CSS, или явойскрипт, или другими способами. Получается, пользователь его не должен видеть и соответственно не заполняет, а бот должен увидеть и заполнить. Но если поле добавляется на стороне клиента через JS после того, как DOMContentLoaded, то оно не включено в html, и бот его не видит.
Получается, надо рендерить на сервере еще до обработки запроса.
#12 
  Posmotrim знакомое лицо19.04.15 17:35
Posmotrim
NEW 19.04.15 17:35 
in Antwort natuerlich blond 19.04.15 16:44
Да, нужно рендерить еще на сервере.
#13 
  scorpi_ свой человек20.04.15 09:57
NEW 20.04.15 09:57 
in Antwort natuerlich blond 18.04.15 14:16
В чем проблема заменить HTML на JSP? Зачем сразу городить лес с JSF?
#14 
natuerlich blond старожил20.04.15 16:28
natuerlich blond
NEW 20.04.15 16:28 
in Antwort scorpi_ 20.04.15 09:57
хотела обойтись без JSF/JSP. Но если на то пошло, то JSF мне проще, тем более что актуально у нас используется.
#15 
  scorpi_ свой человек20.04.15 19:03
NEW 20.04.15 19:03 
in Antwort natuerlich blond 20.04.15 16:28
JSF проще?? Мда, что-то народ вообще основы перестал изучать...
#16 
Программист коренной житель20.04.15 19:40
NEW 20.04.15 19:40 
in Antwort natuerlich blond 19.04.15 16:44
В ответ на:
Горшочек меда - это обычное input-поле, которое скрывается с помощью CSS, или явойскрипт, или другими способами.

Бот - дурак? :) Неужели такая примитивная проверка работает?
#17 
natuerlich blond старожил20.04.15 19:52
natuerlich blond
NEW 20.04.15 19:52 
in Antwort scorpi_ 20.04.15 19:03
В ответ на:
JSF проще??

это типа кто чего привык. зачем делать JSP, если в основном все порталы на JSF?
#18 
natuerlich blond старожил20.04.15 19:55
natuerlich blond
NEW 20.04.15 19:55 
in Antwort Программист 20.04.15 19:40
В ответ на:
Неужели такая примитивная проверка работает?

Работает все, что бот не понимает. Если бот понимает явускрипт или специально вычитывает CSS, чтобы определить визуально скрытые поля, или работает через эмулятор браузера, то такая примитивная проверка не работает.
#19 
Программист коренной житель20.04.15 20:07
NEW 20.04.15 20:07 
in Antwort natuerlich blond 20.04.15 19:55
В ответ на:
или работает через эмулятор браузера

Зачем работать через какой-то эмулятор, когда есть самый настоящий браузер, через который очень удобно работать. Ничего эмулировать не надо + полный контроль над ссылками и всеми обращениями к серверу.
Неужели есть боты, которые сами парсят веб страницы?
#20 
1 2 alle