Как вызвать команду с помощью определенного прокси-сервера?

Некоторый прокси поддержки приложений (прокси HTTP или прокси носков), и некоторые не.

Для браузеров я могу указать прокси-сервер в диалоговом окне предпочтений/опций, и другие приложения могут настраивать прокси-серверы в файлах конфигурации.

Для общей цели я могу вызвать команду с помощью определенного прокси? Как следующее:

$ proxy-exec --type sock5 --server 1.2.3.4:8000 -- wget/ftp ...

Я использую Индивидуалиста Ubuntu.

P.S.

В win32 это может быть реализовано путем угона сокета dlls, возможно, я не знаком с программированием Linux, но я предполагаю, что это возможно в Linux.все же.

11
задан 27.03.2011, 05:13

1 ответ

Большая часть Linux управляет, чтобы доступ Интернет заглянул HTTP_PROXY, FTP_PROXY, и SOCKS_SERVER переменные среды для получения информации прокси. Так, чтобы сделать что-то как Ваш пример, просто работайте:

export SOCKS_SERVER=1.2.3.4:8000
wget http://superuser.com/q/262956/66003

Синтаксис для HTTP_PROXY и FTP_PROXY немного отличается:

export HTTP_PROXY=http://1.2.3.4:3128/
export FTP_PROXY=ftp://1.2.3.4:25/

Рабочая среда GNOME по умолчанию, включенная с настройками Ubuntu прокси, имеет кнопку Apply System-Wide, которая автоматически установит те переменные среды для Вас. Иначе можно добавить export строки к Вашему ~/.bashrc файл, чтобы заставить их вступить в силу при каждом входе в систему.

К сожалению, wget не поддерживает SOCKS вообще. Можно использовать curl, который включен с Ubuntu, для достижения многих вещей это wget делает. К сожалению, это не проверяет SOCKS_SERVER, в то время как это действительно проверяет HTTP_PROXY (как делает wget). Использовать завихрение, чтобы загрузить эту страницу сервером SOCKS5 (выполняющий разрешение DNS с тем сервером) и сохранить его как superuser.html, выполнение это:

curl --socks5-hostname 1.2.3.4:8000 http://superuser.com/q/262956/66003 > superuser.html

Если Вы хотите сделать curl всегда используйте тот прокси SOCKS, Вы могли создать псевдоним оболочки. Просто добавьте следующую строку к Вашему ~/.bashrc:

alias curl='curl --socks5-hostname 1.2.3.4:8000'

Необходимо будет перезапустить терминал или выполнить ту строку, как будто это была команда для изменений для вступления в силу.

17
ответ дан 07.12.2019, 12:12

Теги

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