Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Модификация в реал-тайме ("на лету") загружаемой в Firefox веб-страницы. Возможно ли? (https://javascript.ru/forum/css-html-firefox-mizilla/65765-modifikaciya-v-real-tajjme-na-letu-zagruzhaemojj-v-firefox-veb-stranicy-vozmozhno-li.html)

Исмаил Прокопенко 06.11.2016 20:24

Модификация в реал-тайме ("на лету") загружаемой в Firefox веб-страницы. Возможно ли?
 
Хочу написать расширение (аддон) Firefox, которое позволяет править/парсить HTML и CSS код загружаемой странички "на лету" и выдавать её в заданном юзверем стиле.

Т.е., типа, юзверь пишет свой скрипт, и этот скрипт автоматически приаттачивается к страницам, с заданными ювзерем URL-ами.

К примеру, хочу я чтобы выдача яндекса отображалась в виде EXCEL-таблички, с графами "Домен", "Ключевые слова", "посещалась/не посещалась ссылка".

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

Возможно ли такое написать на JavaScript?


В частности, мне нужно "повыкусывать" из выдачи яндексы сниппеты, в которых содержаться факты, которые уже есть в моей базе данных или в "черном списке". Как это можно сделать?

Aetae 06.11.2016 20:48

Всё возможно. Однако именно "на лету" можно работать только с чистым текстом(а точнее даже бинарными данными) и кусками(что очевидно). Если же нужна структура документа, то тут уж придётся подождать загрузки и (частичной) обработки.
Для второго достаточно greasemonkey, смысла городить ещё чего - нет. В первом же случае скорее всего потребуется обзёрвер на http-on-examine-response. Или иные варианты.

Исмаил Прокопенко 06.11.2016 21:36

Цитата:

Сообщение от Aetae
Однако именно "на лету" можно работать только с чистым текстом

А на другом форуме мне сказали, что аддон Firefox с названием Greasemonkey это делает на раз.
Т.е. запускает скрипт, который правит код веб-страницы на лету и юзверь видит в броузере уже не оригинальную веб-страницу, а её версию, обработанную юзер-скриптом.

В частности, может видеть выдачу яндекса с выкущенными сниппетами в виде Excel-таблички.

Это так?
В смысле, можно так скриптами сделать в броузере?

Исмаил Прокопенко 06.11.2016 21:39

Тут я вижу пока только одну проблему: запись и чтение с харда.
Насколько мне известно, политика безопасности запрещает JS-коду выполнять чтение и запись с харда.

И как тогда реализовать взаимодействие моего скрипта с базой знаний на харде?

Aetae 06.11.2016 21:56

Цитата:

Сообщение от Исмаил Прокопенко (Сообщение 434258)
А на другом форуме мне сказали, что аддон Firefox с названием Greasemonkey это делает на раз.

Он не имеет доступа к исходным данным до их обработки движком. Можно запускать скрипт с параметром
//@run-at document-start
и удалять ненужные элементы по мере их появления. Можно это даже обставить так, что пользователь не заметит. Но какое-то время они всё же будут присутствовать в документе.

Цитата:

Сообщение от Исмаил Прокопенко (Сообщение 434259)
Насколько мне известно, политика безопасности запрещает JS-коду выполнять чтение и запись с харда.
И как тогда реализовать взаимодействие моего скрипта с базой знаний на харде?

В веб песочнице - никак.
Если же вы пишете расширение - то у вас есть доступ к потрохам браузера, и творить с системой юзера вы можете что хотите.
При использовании greasemonkey остаётся только indexdDB или GM_set\getValue.

Исмаил Прокопенко 06.11.2016 22:06

Цитата:

Сообщение от Aetae
Он не имеет доступа к исходным данным до их обработки движком.

Пофиг если :
Цитата:

Сообщение от Aetae
Можно это даже обставить так, что пользователь не заметит.

Главное чтобы в итоге веб-страничка выглядела так, как обработал ее мой парсер

Исмаил Прокопенко 06.11.2016 22:08

Цитата:

Сообщение от Aetae
В веб песочнице - никак.
Если же вы пишете расширение - то у вас есть доступ к потрохам браузера, и творить с системой юзера вы можете что хотите.

Никогда этого не понимал.
Ведь аддон - это тот же ява скрипт.
Тогда ява скрипт аддона может читать и писать на хард юзверя, а просто ява скрипт не может.

Где находится тот "флажок", который разрешает/запрещает доступ к харду клиента?

Aetae 06.11.2016 22:14

Исмаил Прокопенко, браузеры предоставляют аддонам API для небезопасных действий. И если API того же хрома довольно скуден, то в Firefox картина совсем другая, ибо сам firefox наполовину работает на javascript, а другая половина прокинута внутрь привилегированно кода с помощью обёрток.

Исмаил Прокопенко 07.11.2016 02:12

Цитата:

Сообщение от Aetae
браузеры предоставляют аддонам API для небезопасных действий.

Т.е. я могу написать скрипт на JS, который для записи и чтения с харда будет использовать API Firefox?

Deff 07.11.2016 02:32

Исмаил Прокопенко,
В старой опере была такая фича http://sg.uploads.ru/qCR9e.jpg
Правдо стиль задавался либо дефолтный, либо файлом в настройках оперы
2. На лету совсем нет смысла, ибо страницу открыть нужно чтобы понять, что править...
По идее сгородить типа бокового сайдбара, чуть сужающего экран, и там выпарсенный стиль...

По идее, фича нужна лишь для избранных сайтов, с запоминаемым отредактированным стилем в двух вариантах:
a) Для всего домена http://javascript.ru/
б) Для конкретной группы страниц типа http://javascript.ru/forum/...

Но вообщем то занудство, зная структуру конкретного сайта можно легко сделать скрипт закладку, меняющего стиль, ибо обычный юзер вряд ли полезет в css, а кто будет лезть, знает верстку, а раз знает, (а таких будет доли процента от пользователей браузера... сможет для конкретного сайта сам сделать... Карочь стартап мудрёный и невостребованный
============
В принципе есть к примеру скрипты смены стилей для конкретных структуры сайта => http://hostjs-mybb2011.narod.ru/ChangeStyle.htm
Легко перевести подобное и в скрипт-закладку,
Писать универсальный... ну если ток для себя... но есть же инструменты в браузере позволяющие править стиль, а вставить подготовленное(распарсив тем же скриптом все элементы по кнопке завершения) можно уже и закладкой и сrazy monkey js и т.д.

Т.е вся соль что правка на "Лету" - реально будет десятки минут

Aetae 07.11.2016 02:43

Цитата:

Сообщение от Исмаил Прокопенко (Сообщение 434285)
Т.е. я могу написать скрипт на JS, который для записи и чтения с харда будет использовать API Firefox?

Да.

Deff 07.11.2016 02:58

PS: Из приятный стартапов на эту тематику видел лишь один плагин к браузеру, позволяющий жестом мыши разгонять лишние элементы за пределы экрана(на мыши нужно было нажать одновременно две кнопки, возврат в исходное - двойной клик обоими), Либо кликая несколько раз колёсико увеличивать нужный элемент в размерах

Исмаил Прокопенко 07.11.2016 11:51

Цитата:

Сообщение от Deff
Но вообщем то занудство, зная структуру конкретного сайта можно легко сделать скрипт закладку, меняющего стиль

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

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

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

Кроме того.
Хотелось бы добавить к скрипту юзер-интерфейс и интерактивность.
К примеру, выделил мышкой слово, кликнул и в контекстном меню выбрал, что нужно сделать.
А самые важные меню внедрить прямо в "морду" Firefox.
Это можно сделать на JS?

Исмаил Прокопенко 07.11.2016 11:57

Цитата:

Сообщение от Deff
Т.е вся соль что правка на "Лету" - реально будет десятки минут

Нихрена себе :blink:
Это почему?
Не очень понял.
Мне то надо, чтобы "подмена" оригинальной веб-страницы длилась столько, чтобы глаз не успевал заметить. Т.е. доли секунды

Исмаил Прокопенко 07.11.2016 12:04

Цитата:

Сообщение от Deff
Карочь стартап мудрёный и невостребованный

Вы просто не поняли задачи.
Объясню подробней.
Я хочу написать что-то типа метапоисковика-паука-граббера, который сам будет парсить выдачу яндекса, гугла и др. поисковиков, ходить по ссылкам и исследовать их контент, сохранять в базу только нужное, и отображать результаты работы в броузере фильтруя из выдачи не нужное. При этом прямо в броузере должна поддерживаться интерактивность как при работе с интернетом так и с локальной базой данных, реализуемая кнопочками, в строенными в браузер панелями и контекстными меню.


Есть такая программа.
Называется FileForFiles (aka SiteSutnik). Я ей пользуюсь. Но у неё мне много чего не хватает.
Так вот я хочу написать более продвинутый и удобный броузерный вариант этой программы

Aetae 07.11.2016 14:13

Цитата:

Сообщение от Исмаил Прокопенко (Сообщение 434328)
Нихрена себе :blink:
Это почему?
Не очень понял.

Я тоже. Он наверное имел ввиду что-то другое.)

По поводу вашей задачи ещё раз говорю: в firefox (пока?) возможно всё, практически полностью его переделать можно.
Самый простой для вас сейчас вариант - идёте на https://addons.mozilla.org/ru/firefox/ и скачиваете аддоны, которые делают что-то примерно похожее на то, что вам нужно, или выглядят примерно так, как вам нужно и смотрите их код: .xpi и .ja - обычные zip архивы.

Исмаил Прокопенко 07.11.2016 15:05

Цитата:

Сообщение от Aetae
Самый простой для вас сейчас вариант - идёте на https://addons.mozilla.org/ru/firefox/ и скачиваете аддоны, которые делают что-то примерно похожее на то, что вам нужно, или выглядят примерно так, как вам нужно и смотрите их код: .xpi и .ja - обычные zip архивы.

Проблема в том, что там кроме JS нужно знать API Firefox, XUL, CSS, XML и еще Бог весть сколько "языков". Короче, целый зоопарк разных языков и наречий.
Которые, к тому же, постоянно меняются и перекраиваются при выходе новых версий Firefox.
Даже саму архитектуру аддонов меняют

Aetae 07.11.2016 15:24

Ага, жизнь - боль, хе-хе.

Исмаил Прокопенко 08.11.2016 19:24

господа! как думаете! сколько времени у меня займет написание такого приложения учитывая что я полный ноль как в JS (я кодил десктопные приложения не работающие с вебом на с++) так и в написании аддонов.

Все же были новичками.

Aetae 08.11.2016 19:51

Исмаил Прокопенко, месяца два
...после которых ты потеряешь энтузиазм и бросишь это дело нафиг.)

На самом деле зависит от того, насколько ты серьёзен в данном вопросе. Если ты написал себе чёткое тз и имеешь опыт программирования серьёзных вещей, а не только "утилиток для себя" - то за те же пару месяцев и напишешь.


Часовой пояс GMT +3, время: 09:15.