Что такое пользовательские скрипты
Что такое пользовательские скрипты
Эти страницы находятся в стадии разработки, но они предназначены для того, чтобы помочь пользователям без опыта и знаний понять, как установить и использовать пользовательские скрипты на своих компьютерах.
Что такое пользовательский скрипт?
Такие полезные задачи, как улучшение макета, исправление багов (ошибок), автоматизация основных задач и добавление новых функций, все это могут сделать пользовательские скрипты. Более сложные пользовательские скрипты могут создавать мешанину, соединяя информацию с разных сайтов или внедряя новые данные в веб страницу, например, добавлять отзывы или сравнение цен в интернет магазины.
Что такое библиотека скриптов?
Как я могу использовать пользовательский скрипт?
Для его использования необходимо установить расширение конкретно для вашего браузера. Эти расширения упрощают задачи управления, например, установку, удаление и обновление пользовательских скриптов. Исходным менеджером для управления пользовательскими скриптами был Greasemonkey для браузера Firefox, поэтому вы можете часто услышать, что пользовательские скрипты называют скрипты Greasemonkey. Чтобы узнать, как продолжить, посмотрите на варианты для вашего браузера в таблице ниже.
Каковы риски?
Вы должны быть в курсе вопросов конфиденциальности при использовании пользовательских скриптов и не устанавливать их из источников, которым вы не доверяете. Пользовательские скрипты могут выполнять действия от вашего имени и потенциально могут получить доступ к любой информации на сайте, к которому у вас есть доступ, или которую вы вводите на сайт. Часто им разрешено осуществлять функции, которые скрипты на обычных сайтах не могут осуществить, такие как хранение информации на вашем компьютере и ее обмене с сайтом. Плохо написанные пользовательские скрипты также могут потенциально использоваться вредоносными сайтами.
Чтобы уменьшить риски безопасности, большинство менеджеров пользовательских скриптов позволяют вам контролировать, к каким сайтам пользовательские скрипты будут иметь доступ и смогут ли они работать на безопасных (https) сайтах или локальных файлах на вашем компьютере. На awe.acestream.me исходный код каждого пользовательского скрипта может быть проверен, чтобы другие программисты могли видеть, есть там какой-либо вредоносный код или опасные баги или нет.
Как мне продолжить?
Найдите ваш браузер в табличке ниже и идите по ссылкам, чтобы узнать о вариантах, как сделать так, чтобы пользовательские скрипты заработали на вашем компьютере.
Учимся писать userscript’ы
Доброго времени суток всем желающим приобщиться к миру пользовательских скриптов (они же userscript, userJS, юзерскрипты).
В этой статье я хочу поведать о том, что такое юзерскрипты, c чем их едят и, главное, как их готовят!
Внимание: предполагается минимальное знание javascript.
На практике доказано: юзерскрипты может писать человек, не знакомый с программированием, но обладающий усидчивостью и желанием изучить javascript!
О том, что такое javascript и как с ним обращаться, можно узнать на javascript.ru.
Что такое юзерскрипты?
Кратко: юзерскрипт — это программа, написанная на языке JavaScript, хранящаяся на компьютере пользователя и подключаемая браузером на определенных страницах. Юзерскрипт представляет собой файл с расширением .user.js (именно по расширению браузеры понимают, что файл является юзерскриптом), содержащий метаданные и непосредственно javascript-код.
При подключении к странице юзерскрипт выполняется так же, как и обычные javascript-сценарии.
У юзерскрипта есть доступ к DOM-дереву страницы, в контексте которой он выполняется.
В современных браузерах у юзерскрипта есть доступ к localStorage и прочим HTML5 API.
Юзерскрипты поддерживаются всеми основными современными браузерами (и даже кое-как поддерживаются IE7 и выше).
Самый известный портал юзерскриптов — userscripts.org. Тут можно найти хранилище скриптов, инструменты управления своими скриптами на портале и, что не маловажно, отзывчивый форум (всё на английском).
Немного общей теории
Самыми распространенными являются скрипты под расширение GreaseMonkey для браузера Firefox.
Подробную информацию по GreaseMonkey и написанию юзерскриптов под GreaseMonkey можно узнать на http://wiki.greasespot.net.
Так сложилось исторически, что данный браузер был (и остаётся по сей день) первым, в котором поддержка юзерскриптов была выполнена на высоком уровне.
Не все скрипты, написанные для GreaseMonkey, могут запускаться в других браузерах. Причина в криворукости том, что во многих скриптах используется GM API — набор javascript-функций, специфичных для GreaseMonkey.
Особенности юзерскриптов
Код юзерскриптов может посмотреть любой желающий, вооруженный блокнотом.
Базовые знания javascript позволяют отсечь угрозу установки шпионских и вредоносных скриптов простым анализом кода скрипта (придётся задействовать мозг).
Важно:Если вы не доверяете автору скрипта, главное удостовериться, что скрипт не отсылает пользовательские данные (куки, вводимый текст) на сторонние сервисы!
Все юзерскрипты запускаются после того, как загрузились все основные элементы страницы, но ещё не загрузились картинки. Можно сказать, что юзерскрипты грузятся по событию DOMContentLoaded.
В любом случае, проверки на window.onload не нужны.
Каждый браузер накладывает свои ограничения на исполнение юзерскриптов, но в целом юзерскрипты могут делать почти всё, что могут скрипты на странице.
Чаще всего юзерскрипты используются для изменения интерфейса страницы или для добавления плюшек, блекджека и шлюх(юзерскрипты для социальных сетей).
Бывают и продвинутые юзерскрипты, которые представляют собой самостоятельные программы (аукционные и игровые боты, плагины-помощники и т.д).
Анатомия юзерскриптов
Юзерскрипт — это текстовый файл с расширением user.js. В начале файла располагается блок метаданных — описание самого скрипта. После блока метаданных следует javascript-код, который и будет исполняться браузером.
Рассмотрим тестовый скрипт, который показывает alert с текстом на определенной странице.
Важно: данный скрипт представляет собой оболочку для кроссбраузерных юзерскриптов. Этот же скрипт, но с английскими комментариями, можно стянуть с pastebin.com и использовать безнаказанно.
В самом начале располагается блок метаданных (в виде комментария).
Этот блок состоит из директив описания юзерскрипта. Ниже в таблице представлены основные директивы и их назначение.
Важно:Все директивы, как и сам блок метаданных, могут отсутствовать.
Директива | Назначение |
---|---|
@ name | Название юзерскрипта. Это название будет отображаться в интерфейсе управления юзерскриптами. Если директива отсутствует, то название юзерскрипта будет таким же, как и название файла. |
@ description | Описание юзерскрипта. Это описание будет отображаться в интерфейсе управления юзерскриптами. |
@ namespace | Пространство имён. Определяет уникальность набора скриптов. Сюда можно вписать имя домена, принадлежащего вам. Или любую другую строку. Считайте, что это второе название скрипта. Обязательная директива для Trixie! |
@ author | Имя автора. |
@ license | Название лицензии, по которой распространяется юзерскрипт. |
@ version | Номер версии юзерскрипта. К сожалению, механизма автообновления нету ни в одном браузере, поэтому номер версии — это просто цифры, которые отображаются в интерфейсе. |
@ include | Директива описания url страницы, на которой нужно запускать юзерскрипт. Поддерживает вайлдкард *(применимо в GreaseMoneky, Opera, IE). Для каждого отдельного url нужно использовать отдельную директиву @ include. |
@ exclude | Директива описания url страницы, на которой не нужно запускать юзерскрипт. Поддерживает вайлдкард *(применимо в GreaseMonkey, Opera, IE). Для каждого отдельного url нужно использовать отдельную директиву @ exclude. |
@ match | Аналогично @ include, но с более жесткими ограничениями (применимо в GreaseMonkey старше 0.9.8, Google Chrome). Подробнее об ограничениях и формате директивы можно прочитать на этой странице. Для каждого отдельного url нужно использовать отдельную директиву @ match. |
Важно: При отсутствии директив @ include или @ match, юзерскрипты будут запускаться на всех страницах.
Результат
Наш юзерскрипт готов к использованию!
Нет, серьёзно, вы можете скопировать код юзерскрипта в файл, назвать его my.user.js, и закинуть полученный файл в браузер (используйте Chrome или Firefox с установленным GreaseMonkey).
Конечно, наш юзерскрипт не обладает серьезными функциями, код выглядит страшным и малопривлекательным (для непосвященного человека). Но в итоге мы получили заготовку для кроссбраузерных юзерскриптов.
Это значит, что юзерскрипт можно запустить практически в любом современном браузере!
И это замечательно!
Что такое скрипт
Общее понимание скрипта
С английского языка слово «скрипт» переводится как сценарий, из чего уже можно сделать определенные выводы. Это набор команд, то есть строк кода, которые вкупе выполняют конкретную задачу. Для ее выполнения и создаются скрипты. Они могут быть как очень маленькими по объему и отвечать за запуск каких-то простых служб операционной системы, так и объемными, сравнивая переменные и выводя результат на сайте.
Скрипт хранится в текстовом файле, поэтому при желании его содержимое можно легко просмотреть и даже изменить. Этот текстовый файл запускает цепочку выполнения задачи, которая и запрограммирована в скрипте. Если все строки написаны правильно и целевые объекты удается найти, задача выполняется успешно и скрипт срабатывает.
Скрипты сейчас активно интегрируются на сайтах, в качестве примера можно привести популярный скриптовый язык – JavaScript. Однако изначально они работали в операционных системах и выполнялись при помощи внутреннего синтаксиса командной оболочки.
История появления скриптов
Для общего развития предлагаю немного окунуться в историю появления скриптов и взглянуть на то, какими они были раньше. Начали применять их под управлением семейства операционных систем Unix еще 50 лет назад. Одной из первых командных оболочек была sh, в ней использовались shell scripts, которые позволяли выполнять самые разнообразные задачи на компьютере.
Ниже вы видите небольшой код, предназначенный для конвертирования изображения из JPG в PNG:
Обозначения после знаков # являются комментариями и не относятся к скрипту, они только описывают для пользователя действия. Этот пример был взят из открытой библиотеки и отлично показывает, что всего несколько строк кода позволяют обработать изображение, сменив его формат на другой. Сейчас скрипты могут быть более массивными и выполнять задачи на уровень сложнее.
Сферы использования скриптов
Скрипты часто используются на веб-сайтах. Чаще всего они пишутся на языках PHP и JavaScript. Первый используется для написания той части сайта, которую не видит посетитель, то есть бэкенда, а второй в большинстве случаев отвечает за визуал, то есть разные анимации, плавные переходы и другие действия (фронтэнд).
Если с визуальными скриптами все понятно, то невидимые для глаза посетителя скрипты собирают информацию в базы данных, проверяют правильность заполнения форм и выполняют другие сложные задачи.
Соответственно, в операционной системе скрипты тоже выполняют серьезные операции. Скрипты, запущенные через консоль (командную строку), могут влиять на открытие служб и приложений, вносить изменения в системные файлы или даже устанавливать другие программы (вирусы так и попадают в систему).
Если говорить о Windows, то в ней вы можете найти встроенный инструмент CMD (PowerShell), который и предназначен для запуска скриптов, хранящихся в формате BAT.
Самостоятельное написание и применение скриптов
Разберем самостоятельное написание и применение скриптов на примере Windows. Допустим, у вас стоит задача проверить стабильность соединения с конкретным сайтом без запуска браузера. Для этого есть одна полезная команда, запускаемая через Командную строку. А если нужно еще сформировать и отчет о результатах проверки, не совсем удобно будет вводить несколько разных команд по очереди, особенно в тех случаях, когда задача выполняется раз в несколько дней или чаще. Тогда создается BAT-файл с таким содержимым:
Приведенные выше примеры должны помочь разобраться с тем, что представляют собой скрипты и где они используются. При желании можно даже самому попробовать создать текстовый файл с кодом и запустить его на компьютере, но для использования скриптов в профессиональных целях понадобится выучить один из скриптовых языков программирования.
Что такое Userscripts. Чуть чуть теории.
Статья рассказывает о возможности юзерскриптов (они же пользовательские скрипты, или надстройки, или мезонины).
Постановка задачи
Рано или поздно у любого программера или сайтостроителя возникает зудящая мысль: что-то подправить на сайте, где он гость или пользователь. Увы, на чужом сайте он сделать ничего не может. Он просто элементарно не имеет доступа к коду.
Тем не менее, поправить очень хочется. Например, на неком сайте с полезным контентом вдруг сверху, как гильотина, падает рекламный блок. После испуга возникает раздражение: «Я это здесь разве просил? Оно мне нужно?»
Или такой пример. Когда число знакомых в некой социальной сети (наш instantcms.ru тому пример) превышает некое пороговое значение, их уже тяжело удержать в голове. Хотелось бы иметь некую записную книжку. Держать описания сетевых знакомых на отдельном файле, открывать его, когда сидишь в социальной сети и сверяться с ним? Фи, как пОшло в 21-м веке, в мире автоматизации и прогресса.
Хотелось бы иметь на сайте социальной сети автоматическую записную книжку, которая была бы всегда под рукой, в которую Вы можете вписать краткую характеристику о неком юзере: «Обманула меня в феврале 2015 года, заказала компонент, отказалась, когда он был уже готов, не выплатила гонорар», или «Этот ваще идиот и толстый тролль, сперва приписывает оппоненту гадости, потом заявляет, что оппонент в них уже уличен, а потом приписывает себе победу, хотя оппонент находится оффлайн», или «Потрясающе умная девочка, отличный программер, жалко, редко появляется», или «Мутное чмо с прогрессирущим ПГМ».
Или: на неком интернет-магазине очень неудобно переходить в перечень старых заказов. Приходится листать их интерфейс (который писал какой-то школьник с пофигизмом на удобство пользователя) или где-то запоминать (в другом отдельном файле) адрес страницы, который затем следует вставлять через буфер в адресную строку. Вот бы вставить туда кнопку, пнув которую, можно сразу попасть на нужную страницу!
Но, как говорится, фигвам.
Однако, если нельзя, но очень хочется, то все-таки можно )))
Что это такое — Userscripts, и зачем они нафиг нужны?
Usercripts — это пользовательский скрипт. Я для него нашел несколько прозвищ — юзерсрипт, мезонин, надстройка, пользовательское расширение.
Он пишется на привычном нам js и хранится на локальной машине. При известной ловкости, к этому скрипту можно подключить jquery и наслаждаться дивными удобствами этой библиотеки.
Пролегомены к всемогуществу* ©
Работает эта машинерия так. Браузер при своем запуске загружает в память userscript’ы и применяет их к КАЖДОЙ открытой странице. Таким образом, после загрузки страницы к ней дополнительно подсаживается ваш userscript на js или jquery. А js (а уж, тем более, jquery) позволяет делать с DOM страницы вообще все что угодно. Смекаете, как вкусно пахнет?
Поскольку этот скрипт хранится на локальной машине, и на ней же запускается, никто не в силах (даже великий и ужасный Fuze) запретить мне вешать поверх страниц instantcms.ru заметки из моей записной книжки про разных юзеров. Естественно, поскольку мезонин применяется ко всем открытым в браузере страницам, в коде следует предусмотреть простое условие, чтобы ваше пользовательское расширение применялось к странице с конкретным доменным именем.
При этом я могу писать в мою записную книжку все, что я думаю. Никто не в силах остановить меня, если я вознамерился повыключать на нужном мне сайте раздражающую рекламу. Незачем теперь писать в саппорт, чтобы мне написали в ответ «Спасибо, ваша просьба передана разработчикам», если я и сам могу модернизировать интерфейс чужого сайта. Никто не в силах остановить моего всемогущества, если я грамотно применяю userscripts! Во как.
Если все так хорошо, почему все так плохо?
Набрав в поиске на instantcms.ru слово «userscripts» я получил сакральную фразу «По запросу «userscripts» ничего не найдено». Аналогичную фразу я получил, набрав «пользовательский скрипт». А получив, сел писать эту статью.
Удивительно, что никто из наших гениальных разработчиков до сих пор не напал на эту золотую жилу. А тем не менее, множество продвинутых людей во всем мире этим всемогуществом пользуются. Ведь, если скрипт написан, он может быть опубликован. Например, множество скриптов можно найти на сайте userscripts.org. Более того, существуют репозитории с удобными API, где можно скачать нужный скрипт или удаленно хранить информацию.
Например, FireFox позволяет загрузить расширение GreaseMonkey. После этого использование пользовательских скриптом вообще переходит в детскую забаву — достаточно перетащить иконку скрипта из репозитория себе в браузер.
Chrome ( а с недавних пор и Opera, которая перехала на webKit) поддерживает расширение TamperMonkey, использование которого аналогично GreaseMonkey. Увы, часто бывает, что скрипты, работающие в одной «Обезьяне» не работают на другой.
Чтобы написать действительно кроссбраузерный скрипт, приходится отказываться от API, и полагаться на свои силы.
Структура пользовательского скрипта
Скрипт состоит всего из двух файлов. Эти файлы могут лежать в любой папке на вашем диске и обязательно в одной.
Первому файлу имя вы даете сами, но расширение у файла должно быть обязательно *.user.js. Его вы пишете сами, на js, применяя для его оформления несколько простых правил. Или скачиваете из сети.
Второй файл, manifest.json или манифест, или заголовок, идет в комплекте к первому. Это обычный json-объект, куда помещается вся инфа о вашем пользовательском скрипте. Он должен быть в родительской папке единственным (иначе файловая система, которая ненавидит держать в одной папке два файла с одним именем, один из них переименует в manifest(1).json. Браузер «схватит» файл manifest.json, а не ваш manifest(1).json, что может привести к косякам). Переименовывать или удалять этот файл — означает вызвать недоумение у браузера и ругань с его стороны.
Как ставить userscript себе в браузер
Opera
Chrome
FireFox
О подводных камнях
Бессовестно будет с моей стороны, если я не предупрежу своих читателей о подводных камнях. Другими словами, о тех опасностях, которые ожидают пользователя, который возомнил себя достаточно продвинутым, что ставить себе чужие пользовательские скрипты, но при этом недостаточно продвинут, чтобы разбираться в коде. Другими словами, наивен, беспечен и доверчив.
Вся загвоздка в том, что скрипт попадает на ВАШУ локальную машину и запускается на ней. Скрипт получает полный контроль над ВСЕМИ страницами, которые открыты в браузере. Например, чужой скрипт может попытаться стырить у вас пароли, переслав их хозяину (аякс для того и придуман!). Короче, запуская у себя посторонние скрипты, хотя бы откройте их код и почитайте, что натворил там его автор. Не можете разобраться сами — попросите профи, который пишет на js и которому Вы доверяете. Другими словами, будьте осторожны.
Прощание
Вот и все на сегодня. В ближайшее время ждите от меня пользовательские скрипты. На подходе — записная книжка. Показывает на тех юзеров, которые в нее попали, и в виде всплывающей подсказки дает им характеристику, которые вами же им и даны. Причем строгий Fuze про это хулиганство знать не будет)))
—-
* «Пролегомены к всемогуществу» — так называется пятая глава знаменитой «Суммы технологии» Станислава Лема. Опубликованная еще в 1961 году (когда компьютеры были ламповыми и занимали квартал), эта книга интересна уже тем, что предсказала многие технические достижения нашей эпохи. Например, такие, как Интернет, виртуальная реальность, генная инженерия и многие другие. Уже одно это заставляет преклонятся перед интеллектуальной мощью Лема. Однако эта книга устремлена в глубокое будущее. В ней описаны многие невероятные и восхитительные (но тем не менее, достижимые с помощью науки и техники) чудеса. Не буду пересказывать их здесь, чтобы не сбивать удовольствие у тех, кто эту книгу еще не прочел, но собрался прочесть.
Userscripts. Углубляемся
Как упоминалось в предыдущей статье, юзерскрипты поддерживаются всеми современными браузерами. И даже кое-как поддерживаются в IE7 и выше.
Пару слов о движках
Качество поддержки юзерскриптов находится на разном уровне в разных браузерах. Лучше всего поддержка юзерскриптов выполнена в браузерах Firefox и Chrome.
Эти браузеры предоставляют более менее дружелюбные интерфейсы для управления юзерскриптами.
Самые жесткие ограничения на юзерскрипты накладывает Chrome. Но почти все эти ограничения обходятся упаковыванием скрипта в простое расширение. Подробности этого процесса мы обсудим в следующей статье.
Теперь поговорим подробнее о поддержке юзерскриптов в отдельных браузерах.
Поддержка в Firefox
Mozilla Firefox поддерживает юзерскрипты после установки расширения GreaseMonkey (в русском сленге — обезъяна) или Scriptish.
После установки расширений фаерфокс получает поистине мощную поддержку юзерскриптов.
Рассматриваемая далее информация применима в первую очередь к GreaseMonkey (это расширение было первым).
Исторически, все юзерскрипты писались под браузер Firefox именно из-за наличия удобного плагина.
Это обусловливает тот факт, что все браузеры, которые поддерживают юзерскрипты, дополнительно следуют основным правилам спецификации GreaseMonkey по разбору метаданных.
Это означает, что все скрипты, которые были написаны под GreaseMonkey, будут устанавливаться и запускаться в браузерах, поддерживающих юзерскрипты (с минимумом модификаций).
К сожалению, ни один браузер, кроме Firefox, не предоставляет GM API. Этот печальный факт заставляет использовать эмуляции GM API через расширения или дополнительные юзерскрипты.
В случае разработки юзерскрипта «с нуля», я считаю предпочтительным отказаться от эмуляции GM API и использовать «велосипеды» собственного производства. Это позволяет уменьшить число зависимостей юзерскрипта, что, в свою очередь, позволяет вести разработку в рамках концепции одного файла: модифицировать придётся всего один файл; пользователю нужен всего один файл для запуска юзерскрипта.
Концепция одного файла позволяет существенно уменьшить сложность поддержки и кроссбраузерной разработки юзерскриптов!
Поддержка в Chrome
Google Chrome поддерживает юзерскрипты нативно, т.е. не требует установки плагинов/расширений. Можно (иногда нужно) упаковать юзерскрипт в расширение.
Важно: фактически, расширение и юзерскрипт — разные понятия. И если подходить к вопросу строго, стоит говорить о разработке простых расширений под Chrome.
В случае, когда юзерскрипт требует нестандартного, «тяжелого» функционала, он требует упаковки в расширение.
Для упаковывания юзерскрипта в расширение нужно проделать дополнительные действия один раз. Вся последующая разработка будет вестись в рамках концепции одного файла.
Поддержка в Opera
Opera поддерживает юзерскрипты нативно, но не предоставляет сколь-нибудь дружелюбного пользовательского интерфейса для управления скриптами. Такой интерфейс доступен в расширении UJS Manager.
Поддержка в IE
IE7, IE8, IE9 поддерживают юзерскрипты при использовании плагина Trixie.
К тому же, имеется более продвинутый плагин IE7Pro. В IE7Pro помимо поддержки юзерскриптов имеется множество других бесполезных возможностей.
Важно: Если не отключать дополнительные «приблуды» в IE7Pro, то плагин может изрядно тормозить браузер, особенно на тяжёлых страницах.
Как видите, с запуском скриптов у IE дела обстоят паршиво. Остаётся радоваться, что такая возможность вообще имеется.
Важно: Оба плагина могут существовать в системе одновременно, не мешая друг другу.
Важно: Учитывая вышесказанное, я всегда предлагаю своим пользователям использовать Trixie.
Поддержка в Safari
К сожалению, мне не довелось поработать с данным браузером. Буду рад любым разъяснениям в комментариях!
Поговаривают, что для Safari нужны SIMBL и плагин GreaseKit.
Поддержка в Mobile Safari и прочих браузерах
В виду отсутствия поддержки юзерскриптов в менее популярных браузерах и мобильных браузерах, юзерскрипты придётся предоставлять в виде букмарклета.
Соотстветственно, метаданные в таком случае не нужны, а букмарклет придётся запускать руками после каждого рефреша.