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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№128-06-2015 10:51:55

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 38.0

Сделать редирект <РЕШЕНО>

Сейчас многие сайты блокируются провайдером. Причем использование прокси не всегда позволяет обойти блокировку.
К счастью есть альтернативные способы входа. И пока они работают. Например, на Флибусту
при блокировании основного адреса

скрытый текст
flibusta.net можно войти через proxy.flibusta.net
а на http://nnm-club.me заходим по ipv6.nnm-club.me.ipv4.sixxs.org

Помогите сделать скрипт который бы перенаправлял с одного адреса на другой (с сохранением путей)
Есть похожий скрипт и вроде рабочий
скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        Redirect to Userscripts-MIRROR
// @namespace   uso2usom
// @description On any web page it will check if the clicked links goes to userscripts.org. If so, the link will be rewritten to point to userscripts-mirror.org
// @include     http://*.*
// @include     https://*.*
// @exclude     http://userscripts.org/*
// @exclude     https://userscripts.org/*
// @exclude     http://userscripts.org:8080/*
// @exclude     https://userscripts.org:8080/*
// @version     1
// @grant       none
// ==/UserScript==

// This is a slightly brute force solution, but there is no other way to do it using only a userscript. A full-fledged addon may be created soon.

document.body.addEventListener('click', function(e){
    var targ = e.target || e.srcElement;
    if ( targ && targ.href && targ.href.match('https?:\/\/userscripts.org') ) {
        targ.href = targ.href.replace('://userscripts.org', '://userscripts-mirror.org');
    }
});


Пробовал его переделать, но не выходит. Не работает, зараза
скрытый текст

Выделить код

Код:

// ==UserScript==
// @name        Редирект Флибуста
// @namespace   *
// @include     http://*.*
// @include     https://*.*
// @version     1
// @grant       none
// ==/UserScript==


document.body.addEventListener('click', function(e){
    var targ = e.target || e.srcElement;
    if ( targ && targ.href && targ.href.match('http?:\/\/flibusta.net') ) {
        targ.href = targ.href.replace('://flibusta.net', '://proxy.flibusta.net');
    }
});

Отредактировано Ultima2m (29-07-2016 18:50:31)

Отсутствует

 

№228-06-2015 15:24:04

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 41.0

Re: Сделать редирект <РЕШЕНО>

Ultima2m
Я, будучи ленивой задницей, предпочитаю на всем готовеньком. И для таких целей просто использую HTTPS Everywhere. :D

скрытый текст
Создаем (если нет) в папке профиля браузера папку HTTPSEverywhereUserRules и в ней xml (посто текстовый и переименовываем) файл с правилом для каждого сайта. Например, такое для NNM:

Выделить код

Код:

<ruleset name="(my)NNM-Club">
        <target host="nnm-club.me"/>
        <target host="*.nnm-club.me"/>
        <target host="nnm-club.ru"/>
        <target host="*.nnm-club.ru"/>
        <securecookie host="^(?:.*\.)?nnm-club\.me$" name=".+"/>
        <rule from="^http(s)?://(www\.|ipv6\.)?nnm-club\.(ru|me)/" to="https://ipv6.nnm-club.me/"/>
    </ruleset>

Для флибусты:

Выделить код

Код:

<ruleset name="(my)flibusta.net">
        <target host="flibusta.net"/>
        <target host="*.flibusta.net"/>
        <rule from="^http(s)?://(www\.)?flibusta\.net/" to="http://proxy.flibusta.net/"/>
    </ruleset>

Отсутствует

 

№328-06-2015 18:30:39

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 38.0

Re: Сделать редирект <РЕШЕНО>

turbot, спасибо.
Я тоже такой ленивый. Да еще и трусливый, поэтому использую для таких случаев ТОР. :D
Но хотелось бы что-то попроще, а не еще одно дополнение.

Отсутствует

 

№428-06-2015 21:23:47

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 41.0

Re: Сделать редирект <РЕШЕНО>

Ultima2m
Ну, держите:

Выделить код

Код:

// ==UserScript==
// @name        Redirect for sites
// @namespace   dev/null
// @include     http://*.*
// @include     https://*.*
// @version     1.0
// @grant       none
// ==/UserScript==
document.body.addEventListener('click', function(e){
    var targ = e.target || e.srcElement;
    var site1 = targ && targ.href && targ.href.match(/^https?:\/\/(www\.)?flibusta\.net\//);
    var site2 = targ && targ.href && targ.href.match(/^https?:\/\/(www\.)?nnm-club\.(ru|me)\//);
    if (site1) {
        targ.href = targ.href.replace(/(www\.)?flibusta\.net/, 'proxy.flibusta.net');
    }
    if (site2) {
        targ.href = targ.href.replace(/(www\.)?nnm-club\.(ru|me)/, 'ipv6.nnm-club.me.ipv4.sixxs.org');
    }
});

Добавляйте другие сайты в скрипт по образцу.
Но это не будет перехватывать при вставке в адресную строку/через редиректы (гугловские, например)/со спиддиалов всяких/истории. Можно, наверное, и в скрипте такое сделать (в Custom Buttons - точно), но я пас. Просите помощи в соответствующей теме.

Отсутствует

 

№529-06-2015 08:40:30

Ultima2m
Участник
 
Группа: Members
Откуда: Россия
Зарегистрирован: 28-11-2013
Сообщений: 608
UA: Firefox 38.0

Re: Сделать редирект <РЕШЕНО>

Спасибо, turbot
Действительно с поисковиков не работает. И с сохраненных страниц тоже. :(
Еще в скрипт желательно добавлять исключения типа

скрытый текст
@exclude http://nnm-club.me/*

А то с нормального сайта будет на зеркало перекидывать.

Отсутствует

 

Board footer

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