Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FIXED] Открываем .onion через Тор #44

Closed
sergeevabc opened this issue Dec 8, 2018 · 17 comments
Closed

[FIXED] Открываем .onion через Тор #44

sergeevabc opened this issue Dec 8, 2018 · 17 comments

Comments

@sergeevabc
Copy link

Подключил Антицензорити.PAC в Firefox при включённом Торе (SOCKS5 127.0.0.1:9050).
Обычные блокированные адреса открываются, а *.onion адреса почему-то нет.
Пробовал network.proxy.socks_remote_dns = true и network.dns.blockDotOnion = false — не помогло.
А вот беру Антизапретовский PAC и допиливаю его следующим образом:

...
function FindProxyForURL(url, host) {

  if (dnsDomainIs(host, ".onion")) {return "SOCKS5 127.0.0.1:9050;";}
...

то *.onion начинают открываться. В поисках решения попробовал допилить так же Антицензорити PAC, но луковые адреса по-прежнему не открываются. Что посоветуете?

@ilyaigpetrov
Copy link
Collaborator

Добавил проксирование всех *.onion сайтов в Антицензорити.
Далее network.proxy.socks_remote_dns = true и network.dns.blockDotOnion = false.
Стал открываться http://www.flibustahezeous3.onion, но не другие сайты.

@ilyaigpetrov
Copy link
Collaborator

У вас что-то изменилось после добавления *.onion в проксируемые? Работает ли http://www.flibustahezeous3.onion и другие сайты? В какой-то момент у меня перестала работать и флибуста.

@ilyaigpetrov
Copy link
Collaborator

Решено с помощью добавления отдельной проверки .onion в PAC-скрипте "Антицензорити": https://github.com/anticensority/pac-script-generator/blob/production/src/generator.js#L368-L370:

    if (host.endsWith('.onion')) {
      return true;
    }

@sergeevabc
Copy link
Author

Заработало, спасибо.

P.S. Подскажите, а замена фрагмента SOCKKS5 localhost:9150; SOCKS5 localhost:9050; на SOCKS5 127.0.0.1:9050; позволяет выиграть несколько миллисекунд, верно?

@ilyaigpetrov
Copy link
Collaborator

Не эксперт по внутренностям ОС, но если в ОС не используется захаркоденные значения для localhost, то да, при каждом разрешении имени происходит обращение к файлу на жёстком диске, который для производительности постоянно загружен в область оперативной памяти, т.е. при каждом разрешении адреса вы тратите одно обращение к RAM. Как-то так, думаю. Спасибо за идею использовать IP вместо имени.

@sergeevabc
Copy link
Author

sergeevabc commented Dec 15, 2018

Через несколько дней понял, что ваше предложение по *.onion это не совсем то. Сейчас идёт бинарная проверка: либо завернуть запрос на проксю, либо пропустить (direct). Хочется гибче: заблокированные сайты на быструю проксю (например, на свой socks5), onion на очевидно медленную тор-проксю (тот самый 127.0.0.1:9050), остальное пропустить (direct). Поможете?

P.S. Допиленный описанным образом Антизапрет выглядит так, а с Антицензорити сложнее…

@ilyaigpetrov
Copy link
Collaborator

Если PROXY_STRING потом заменяется на быстрый прокси, то можно примерно так:

function FindProxyForURL(url, host) {

  let ifByHost = false;
  let ifByMaskedIp = false;
  // Remove last dot.
  if (host[host.length - 1] === '.') {
    host = host.substring(0, host.length - 1);
  }

  return
    host.endsWith('.onion')
    ? 'SOCKS5 localhost:9150; SOCKS5 localhost:9050; DIRECT'
    : (
        (function isCensored(){

          ifByHost = areSubsCensored(host);
          if (ifByHost) {
            return true;
          }

          const ip = dnsResolve(host);
          if (ip) {
            if (ifFoundByBinaryInString(ips[ip.length] || '', ip)) {
              return true;
            }
            ifByMaskedIp = isCensoredByMaskedIp(ip);
            if (ifByMaskedIp) {
              return true;
            };
          }

          return false;

        })() ? PROXY_STRING : 'DIRECT'
    );
}

К сожалению у меня в ближайший месяц почти нет возможности работать над скриптом, нет времени внести изменения и тщательно их протестировать, потому я просто оставлю вам данный кусок кода в качестве возможного решения. Если вы оставите комментарий, то, возможно, я смогу ответить. Сообщите, подходит ли вам приведённое решение.

@sergeevabc
Copy link
Author

sergeevabc commented Dec 16, 2018

Надо поднять host.endsWith('.onion') на уровень return, тогда работает. Спасибо!

@ilyaigpetrov
Copy link
Collaborator

Я поднял host.endsWith('.onion') на уровень return в PAC-скрипте "Антицензорити".

@sergeevabc
Copy link
Author

Вместо host.endsWith (".onion") уместнее использовать dnsDomainIs (host, ".onion"), ибо

2

@sergeevabc sergeevabc changed the title Firefox, Антицензорити, Onion [FIXED] Открываем .onion через Тор Apr 12, 2019
@ilyaigpetrov
Copy link
Collaborator

Да, исправил.
Только я старый IE не хотел поддерживать, т.к. он плохо кеширует PAC-скрипт.
Я даже добавил особую строчку, но возможно, что она не срабатывает для старых IE:

if (/*@cc_on!@*/!1) {
  throw new TypeError('https://rebrand.ly/ac-anticensority');
}

@sergeevabc
Copy link
Author

sergeevabc commented Mar 14, 2021

Решил попробовать ваше расширение для Firefox, чтобы

  • открывать заблокированные ресурсы через Antizapret
  • открывать .onion через локальный Tor на 9050 порту

Однако, как ни настраиваю расширение, второй пункт не работает.

@ilyaigpetrov
Copy link
Collaborator

  1. Иконка синей ленты -> свои прокси -> Использовать свой локальный Тор.
  2. Иконка синей ленты -> свои прокси -> Проксировать .onion.

Обе галочки стоят? Тор установлен и запущен (браузер или консольное приложение)?
firefox-onion

@ilyaigpetrov
Copy link
Collaborator

https://rebrand.ly/ac-tor:

Тор-браузер использует порт 9150, просто Тор использует порт 9050.

@sergeevabc
Copy link
Author

либо

Mar 14 17:24:19.954 [notice] Tor 0.4.5.2-alpha (git-135b8eea36edd992) running on Windows 7
Mar 14 17:24:35.577 [notice] Opening Socks listener on 127.0.0.1:9050
Mar 14 17:24:40.000 [notice] Bootstrapped 100% (done): Done

Другие расширения для выборочного проксирования типа MM3-ProxySwitch или SmartProxy работают.
Либо опять же скачиваю antizapret.pac, добавляю строчку, прописываю путь в настройки прокси Fireefox — работает.

@ilyaigpetrov
Copy link
Collaborator

ilyaigpetrov commented Mar 14, 2021 via email

@ilyaigpetrov
Copy link
Collaborator

Включите все 3 типа уведомлений.
Можно посмотреть на код модифицированного PAC-скрипта: иконка синей ленты -> Проблемы? -> Отладка PAC-скрипта -> READ.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants