Как использовать публичный прокси-сервер SOCKS4 во всей системе?

Быстрое решение :не используйте буквы с диакритическими знаками на клавиатуре, используйте вкладку -вместо (и настройте ключ SSH так, чтобы вкладка -в комплекте также работала по сети scp, rsyncи т. д. )] или вернуться к подстановочным знакам, потому что то, что вы испытываете, является нормальным предполагаемым поведением.


Это не работает, потому что вы ввели другое имя файла .

Кажется сумасшедшим? Это UTF -8 для вас.

Еще более сумасшедший :Я могу использовать свой волшебный удаленный разум -чтение психической силы , чтобы сказать вам, что у вас есть Apple Mac .

А если серьезно, то :это важная информация, которую вы забыли указать, задавая свой вопрос, но случайно просочились, когда печатали сам вопрос.


При копировании -вставьте ответ выше:

# echo "scp me@example.com:/home/me/cömmön_file.jpg" | hexdump -C
00000000  73 63 70 20 6d 65 40 65  78 61 6d 70 6c 65 2e 63  |scp me@example.c|
00000010  6f 6d 3a 2f 68 6f 6d 65  2f 6d 65 2f 63 6f cc 88  |om:/home/me/co..|
00000020  6d 6d 6f cc 88 6e 5f 66  69 6c 65 2e 6a 70 67 20  |mmo..n_file.jpg |
00000030  2f 68 6f 6d 65 2f 6d 65  2f 0a                    |/home/me/.|
0000003a

Обратите внимание на кодировку буквы «ö»:6f cc 88. Буква «o», за которой следует дополнительная кодовая точка UTF -8. (на самом деле, на моем терминале он отображается даже не как 'ö', а как 'o')

Когда, когда я (= пользователь Linux )введите:

echo /home/me/cömmön_file.jpg | hexdump -C
00000000  2f 68 6f 6d 65 2f 6d 65  2f 63 c3 b6 6d 6d c3 b6  |/home/me/c..mm..|
00000010  6e 5f 66 69 6c 65 2e 6a  70 67 0a                 |n_file.jpg.|
0000001b

Снова внимательно посмотрите на символ 'ö' :c3 b6, совершенно другую кодовую точку UTF -8 и отсутствие дополнительного буквенного ASCII.


Крайне короткое объяснение:UTF -8 нормализация (композиция против декомпозиции).


Подробное объяснение:

В Unicode существует несколько способов кодирования чего-то похожего на 'ö'.

  • первый способ: составные символы:есть кодовая точка, которая буквально 'ö' унаследована от латиницы -1 (ISO/IEC 8859 -1 :1998 )кодовые точки, кодовая точка Unicode U+00f6 (, закодированная как c3 b6 в UTF -8)
  • второй способ: разложенные символы:вы сначала выводите ASCII o, а затем добавляете специальную кодовую точку , что означает ' Пожалуйста, объедините умлаут с предыдущей буквой ' , кодовая точка Unicode U+0308 (, закодированная как cc 88 в UTF -8)

именно это сочетание символов, которые позволяют вам делать все Сумасшедшее дерьме как ̭Z͉̒a̅l̞gͩoͤ и все другое DARK уродств, которые таятся в безумии безумной ELDRITCH мерзости İŞ Utf -8.

гул.

Остальная часть планеты по возможности использует составные символы (, потому что они более компактны, а также потому, что они используют диапазон Unicode, совместимый с латиницей -1, что упрощает обратную совместимость )и прибегают только к комбинированию символы для вещей, у которых нет собственной кодовой точки (в основном менее частые языки ).

Apple живёт, видимо, на другой планете, и они решили, что стараются всегда использовать комбинированные символы (, потому что они поклоняются тёмному властелину За͓̙̘͌l̦̖͉̃ͦ͆͊ͧ̀g͖̭̼̗͉̦̬̍̀̌ͬ̓̍̀̌ͬ̓ͥ҉o̧͉̗̱̥̣̯͍̗̲̲̩͈̲̣̯͍̗̲̩ͪ͘͘ ).

При вводе на клавиатуре буквы, похожей на «ö», просто не генерируется одна и та же двоичная последовательность в зависимости от того, на каком компьютере вы набираете клавишу.

Затем вступает в игру еще одна вещь :большинство Unix, как правило, используют файловые системы (такие как Linux EXT4 ), которые чувствительны к регистру И чувствительны к кодированию Unicode (, где поддерживается UTF -8 ). Они пытаются сохранить, был ли текст составлен или нет. Таким образом, они проводят различие между двоичной последовательностью UTF -8 6f cc 88и c3 b6, даже если они кодируют один и тот же конечный результат 'ö'. (таким же образом проводится различие между «А» и «а», даже если это одна и та же латинская буква ). Таким образом, ваш «ö», созданный вашей клавиатурой, и «ö» на сервере не совпадают.

Бывает, что стековый обмен просто сохраняет любое кодирование Unicode, которое вы ему подбрасываете, как -, что приводит к мифическим ответам, таким как парсер HTML RegEx . (Таким образом, ваш Mac выдал себя определенной последовательностью байтов, которая записала 'ö' ).

0
17.02.2021, 08:07
1 ответ

По крайней мере, в моей системе man nmcliговорит следующее о значении proxy.pac-script:

proxy.pac-script

Read the JavaScript PAC (proxy auto-config) script from file or pass it directly on the command line. Prefix the value with "file://" or "js://" to force one or the other.

Возможно, вы захотите сделать это так:

set proxy.pac-script file:///full/path/to/proxy.pac

Кроме того, ваш формат proxy.pacможет быть неправильным. Я не силен в JavaScript, но, насколько я знаю, должно быть так:

function FindProxyForURL (url, host) {
  return 'SOCKS4 proxy_host:proxy_port';
}

Если вы хотите использовать прокси для подключения только к определенному хосту (с ), вам может потребоваться сделать что-то вроде этого:

function FindProxyForURL(url, host)
{
    if (shExpMatch(host, "somehost*")
        || shExpMatch(host, "*.some.sub.domain")) {
        return "SOCKS4 proxy_host:proxy_port";
    }
}

Больше примеров в Википедии:https://en.wikipedia.org/wiki/Proxy_auto-config

0
18.03.2021, 22:29

Теги

Похожие вопросы