Какие функции Firefox я использую, чтобы переписать и открыть URL активной страницы?

2628
Egon Willighagen

Наш университет предоставляет прокси-сервис, который позволяет мне просматривать веб-сайты, как если бы я был онлайн через университетскую сеть. Тем не менее, как я ленив, я устал от перехода в поле редактирования URL в Firefox и изменить https://superuser.com/ на http://superuser.com.ezproxy.its.uu.se/ и открыть это новый URL.

Вместо этого я предпочитаю просто нажать кнопку в моем окне Firefox . Поэтому мой вопрос, как я могу создать такую ​​функциональность. Я доволен пользовательским сценарием, вездесущностью или надстройкой в ​​качестве решения: какую функциональность Firefox я должен использовать для задачи добавления ezproxy.its.uu.se в доменную часть любого URL-адреса и открытия этого нового URL-адреса?

3
Просто переписывать то одно другому не достаточно весело. Итак, скажите, пожалуйста, какой будет URL для страниц, подобных этому самому вопросу? Arjan 13 лет назад 0
Как и в приведенном примере, требуется только изменение домена, поэтому URL-адрес этого вопроса будет следующим: http://superuser.com.ezproxy.its.uu.se/questions/154689/how-can-i-add- а-кнопки к светлячок-что-будет-переписать-и-открытой-URL-оф-а Egon Willighagen 13 лет назад 0

4 ответа на вопрос

9
Arjan

Измените местоположение, сохранив следующее как букмарклет :

javascript:(function(){ location.href = location.href.replace( location.hostname, location.hostname + '.ezproxy.its.uu.se' ); })() 

Тем не менее, прежде всего необходимо, чтобы вы попросили Firefox загрузить исходный URL-адрес (то есть: вам нужно нажать Return в строке местоположения), чтобы заполнить объект местоположения . Вместо этого вам будет предложено указать URL-адрес, а не загружать его в браузер (попробуйте):

javascript:(function(){ var url = prompt('Type URL to browse'); var suffix = '.ezproxy.its.uu.se';  /* Don't know how the proxy would handle https or specific ports; * let's just copy them... * $1 = optional protocol, like 'http[s]://' * $2 = domain, like 'superuser.com' * $3 = optional port, like ':8080' * $4 = rest of the URL, like '/questions/154689/ .. page/154692#154692' */ url = url.replace( /(\w*:\/\/)?([^:\/]*)(:[0-9]*)?(.*)/, '$1$2' + suffix + '$3$4' ); if(url.indexOf('http') != 0){ url = 'http://' + url; } location.href = url; })() 


И после того, как вы переключились на использование прокси, вы можете использовать магию jQuery для перезаписи каждого местоположения в HTML, которое обслуживается прокси - но необходимо только в том случае, если оно не делает этого для вас на лету. Чтобы быть сохраненным как пользовательский сценарий (например, для Greasemonkey ), с некоторым исходным кодом, чтобы сначала убедиться, что jQuery доступен, и должен быть включен только для домена вашего прокси-сервера (следовательно, только когда вы просматриваете с помощью этого прокси):

// ==UserScript== // @name Rewrite URLs to use proxy // @namespace http://superuser.com/questions/154689/ // @description Rewrites absolute URLs to use proxy // @include http://*.ezproxy.its.uu.se/* // ==/UserScript==  var $; var suffix = '.ezproxy.its.uu.se';  // Rewrites an attribute to include the proxy server address, if a full // domain is specified in that attribute. function rewriteAttr(attrName){ $('[' + attrName + ']').attr(attrName, function(){ // Don't know how the proxy would handle https or specific ports; // let's just copy them... // $1 = protocol, like 'http[s]://' // $2 = domain, like 'superuser.com' // $3 = optional port, like ':8080' // $4 = rest of the URL, like '/questions/154689/ .. page/154692#154692' return $(this).attr(attrName).replace( /(\w*:\/\/)([^:\/]*)(:[0-9]*)?(.*)/, '$1$2' + suffix + '$3$4' ); }); }  // Rewrite anchors such a <a href="http://superuser.com/xyz"> and references // like <link rel="stylesheet" href="http://sstatic.net/su/all.css"> function letsJQuery() { rewriteAttr('href'); rewriteAttr('src'); }  // Loads jQuery if required.  // See http://joanpiedra.com/jquery/greasemonkey/ (function(){ if (typeof unsafeWindow.jQuery == 'undefined') { var GM_Head = document.getElementsByTagName('head')[0]  || document.documentElement; var GM_JQ = document.createElement('script');  GM_JQ.src =  'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; GM_JQ.type = 'text/javascript'; GM_JQ.async = true;  GM_Head.insertBefore(GM_JQ, GM_Head.firstChild); } GM_wait(); })();  // Check if jQuery's loaded function GM_wait() { if (typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait, 100); } else { $ = unsafeWindow.jQuery.noConflict(true); letsJQuery(); } } 
Я ленивый, я знаю. Как мне создать и сохранить букмарклет? Egon Willighagen 13 лет назад 1
Хорошо, понял это: Закладки -> Организация Закладок; затем выберите «Панель инструментов закладок», щелкните правой кнопкой мыши список элементов и выберите «Создать». Затем я просто копирую / вставляю приведенный выше код как URL. Egon Willighagen 13 лет назад 0
@ Эгон, хорошо! Для дальнейшего использования я также добавил ссылку на [«сохранение следующего как букмарклет»] (http://subsimple.com/bookmarklets/jsbuilder.htm) и добавил еще несколько изменений на случай, если прокси-сервер этого не сделает для вас - но я думаю, что это происходит на лету. Arjan 13 лет назад 0
@Egon, я только что понял, что букмарклет может не работать для URL, которые ваш браузер еще не загрузил? Я добавил еще один вариант ... :-) Arjan 13 лет назад 0
Спасибо за все детали. Прокси действительно все красиво переписывает. И мой пример практического использования - научные статьи ... обычно вы попадаете на домашнюю страницу журнала с рефератом перед вами, но PDF не может быть загружен из-за пределов университетской сети ... поэтому, URL, как правило, уже загружен и ваше первое решение работает отлично! Thanx! Egon Willighagen 13 лет назад 0
2
Peter Murray

Вы также можете взглянуть на LibX - «Плагин браузера для библиотек», который может автоматически выполнять такую ​​функцию:

Вне кампуса доступ через EZProxy или WAM

Поддержка доступа за пределами кампуса к лицензированным ресурсам, если ваше учреждение использует EZ Proxy или WAM III. Вы можете перезагрузить страницу через прокси-сервер или перейти по ссылке через прокси-сервер, чтобы она выглядела так, как будто вы работаете с компьютера в кампусе. Эта функция предоставляет вам доступ к ресурсам, к которым имеют доступ только пользователи в кампусе. Вы можете настроить EZProxy таким образом, чтобы LibX автоматически обнаруживал возможность прокси страницы.

Действительно здорово! (@Egon, вы можете легко изменить принятый ответ, если хотите!) Arjan 13 лет назад 0
Спасибо за добавление цитаты с описанием функции, Arjan! Peter Murray 13 лет назад 0
В то время как я действительно нашел решение JavaScript довольно интересным, оно действительно кажется лучшим решением. Egon Willighagen 13 лет назад 0
0
URLParser.com

Как насчет использования URL Parser Firefox Add-on .

Или используйте букмарклет от urlparser.com/bookmarklet .

-1
Chris Noe

Это именно та ситуация, для решения которой предназначен сценарий автоматической настройки прокси (PAC) . Следующий скрипт настроит Firefox так, что он будет прозрачно направлять запросы через ваш локальный прокси, без необходимости переписывать их. Сохраните этот файл где-нибудь в вашей файловой системе, а затем перейдите в диалоговое окно «Параметры подключения» и укажите путь в параметре «URL-адрес автоматической настройки прокси». (Это поддерживается всеми основными браузерами, а не только Firefox.)

function FindProxyForURL(url, host) { return "com.ezproxy.its.uu.se"; } 

Это функция javascript, поэтому возможна и условная логика.

Я думаю, вы упустили момент, что вы используете не прокси-сервер, настроив браузер для подключения через этот прокси, а прокси, который вы используете, изменив URL. njsg 11 лет назад 0