Помогите пожалуйста!
Проблема такая.
Есть Aurora 9.0.1 (сильно доработанная сторонними программистами) и дополнение refspoof 0.9.5
Дополнение работает отлично в рамках своих возможностей, но не работает главная функция. В URL строке можно ввести ссылку вида spoof://site.ru;ref://site2.ru и при переходе на site1.ru реферером будет site2.ru. Вроде все просто и на обычных фаерфоксах все работает.
Но тут не работает. Аврора пишет, что протокол Spoof она не знает.
Подскажите пожалуйста, как ей указать на это дополнение, что оно должно его обрабатывать.
Стоит отметить, что при вводе в тулбар этого дополнения, все работает, а в URL строке ошибка. В конфиге никаких зацепок нет.
Спасибо за любую помощь!
Отсутствует
Боюсь, что это невозможно, прошло уже года 3-4 и связи с ними нет. Я тогда то просто готовый продукт скачивал, поддержка его давно закончилась со стороны разработчиков. Может быть знаете, где протоколы обрабатываются?
+забыл сказать, сильно доработанная, это просто в нее интегрированы дополнения специальные по обработке JS, которые доступны только для нее.
Отредактировано Sekotka (26-02-2015 13:47:11)
Отсутствует
Приложение поддерживается для версии FF 3.0, с 4.0 вроде как перестало, я его в обход ставил, возможно поэтому. Вот файл, который отвечает за этот протокол spoof
// edited by ebricca 2004/04/16
// came from the magpie / bkstr implementation from bengoodger to this
// ideas also from the livehttpheaders -> observer
// ty sent me a correction to get it working with ffx 20 .. that i incorporate here
// spoof protocol related
const kSCHEME = "spoof";
const kPROTOCOL_NAME = "Spoofing Protocol";
const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
const kPROTOCOL_CID = Components.ID("65F7562E-DAB9-11D8-B5F0-00039388DA40");
// Mozilla defined
const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
const nsISupports = Components.interfaces.nsISupports;
const nsIIOService = Components.interfaces.nsIIOService;
const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
const nsIURI = Components.interfaces.nsIURI;
var refnsiURI = null;
// logging
var aConsoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
function dumpme(aString)
{
aConsoleService.logStringMessage(aString);
}
function Protocol()
{
}
Protocol.prototype =
{
//
QueryInterface: function(iid)
{
if (!iid.equals(nsIProtocolHandler) &&
!iid.equals(nsISupports))
throw Components.results.NS_ERROR_NO_INTERFACE;
return this;
},
scheme: kSCHEME,
defaultPort: -1,
protocolFlags: nsIProtocolHandler.URI_STD |
nsIProtocolHandler.URI_LOADABLE_BY_ANYONE,
allowPort: function(port, scheme)
{
return false;
},
newURI: function(spec, charset, baseURI)
{
var uri = Components.classes[kSIMPLEURI_CONTRACTID].createInstance(nsIURI);
uri.spec = spec;
return uri;
},
newChannel: function(aURI)
{
// before even beginning to spoof make sure it even has an effect
xpPref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
xpPref.setIntPref("network.http.sendRefererHeader", 2);
//history handling / handle spoofuri
xpPref.setCharPref("refspoof.historyWatch", aURI.spec);
var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
var silentnsiURI = ios.newURI("javascript:", null, null);
var silentChannel = ios.newChannelFromURI(silentnsiURI).QueryInterface(Components.interfaces.nsIChannel);
return silentChannel;
}
}
var ProtocolFactory = new Object();
ProtocolFactory.createInstance = function (outer, iid)
{
if (outer != null)
throw Components.results.NS_ERROR_NO_AGGREGATION;
if (!iid.equals(nsIProtocolHandler) &&
!iid.equals(nsISupports))
throw Components.results.NS_ERROR_NO_INTERFACE;
return new Protocol();
}
/**
* JS XPCOM component registration goop:
*
* We set ourselves up to observe the xpcom-startup category. This provides
* us with a starting point.
*/
var nsSpoofProtocolModule = new Object();
nsSpoofProtocolModule.registerSelf = function (compMgr, fileSpec, location, type)
{
compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
compMgr.registerFactoryLocation(kPROTOCOL_CID,
kPROTOCOL_NAME,
kPROTOCOL_CONTRACTID,
fileSpec,
location,
type);
}
nsSpoofProtocolModule.getClassObject = function (compMgr, cid, iid)
{
if (!cid.equals(kPROTOCOL_CID))
throw Components.results.NS_ERROR_NO_INTERFACE;
if (!iid.equals(Components.interfaces.nsIFactory))
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
return ProtocolFactory;
}
nsSpoofProtocolModule.canUnload = function (compMgr)
{
return true;
}
function NSGetModule(compMgr, fileSpec)
{
return nsSpoofProtocolModule;
}
Отсутствует
Спасибо
Может быть Вы еще подскажете... Дополнение hxxp делает тоже самое, но имеет вид ссылки hxxp://site1.ru;ref://site2.ru , но также не работает. У меня задача проста, с помощью дополнений или как угодно иметь возможность вручную задавать рефферара к открываемому URL. Т.е. открывать новую вкладку с site1.ru, чтобы реферером стоял site2.ru. Все.
Может быть эту проблему можно решить через CustomButtons или еще как?
Отредактировано Sekotka (26-02-2015 16:40:10)
Отсутствует
Спасибо, но немного не то. Мне нужно простого вида функция URL:сайт1 и REF:сайт2, где я на лету могу менять или брать из файла, а не вручную вписывать каждый раз при малейших изменениях. У меня работа с большим количеством рефереров, потому Ваш вариант усложнит работу в 10 раз, нежели это делало ранее дополнение refspoof или hxxp...
Отредактировано Sekotka (27-02-2015 01:17:00)
Отсутствует