3

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

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

4 ответа4

9

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

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();
  }
}
2

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

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

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

0

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

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

-1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .