Як викликати команду за допомогою конкретного проксі-сервера?


12

Деякі програми підтримують проксі (http proxy або socks proxy), а деякі ні.

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

Чи можу я викликати команду за допомогою певного проксі? Як і наступне:

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

Я використовую Ubuntu Maverick.

PS

У програмі win32 це може бути реалізовано шляхом викрадення dll-сокетів, можливо, я не знайомий з програмуванням Linux, але я думаю, що це можливо в Linux. хоч.

Відповіді:


17

Більшість 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). Щоб використовувати curl для завантаження цієї сторінки з сервера 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'

Вам потрібно буде перезапустити термінал або запустити цей рядок так, ніби це була команда, щоб зміни набрали чинності.


Я спробував wgetз SOCKS_SERVER, але це , здається , не працюють. wgetчитати лише налаштування проксі /etc/wgetrc. Я також спробував linksвказати links -socks-proxy 127.0.0.1:7878 <url>, але це не вдається використовувати export SOCKS_SERVER=...; links <url>.
Xiè Jìléi

@ 谢 继 雷: На жаль, деякі програми не читають SOCKS_SERVER, хоча багато популярних програм подобається ssh. Крім того, wgetсхоже, не підтримує SOCKS. Однак можна використовувати curl. Я додам інформацію до своєї відповіді про це.
Патчі

Також youtube-dlне читає SOCKS_SERVER, а читає http_proxyзамість цього. І він не підтримує проксі-шкарпетки. Хм ... Перелік програм та підтримуваних проксі-серверів можуть бути дуже корисними.
Xiè Jìléi

Якщо ви шукаєте BXR.SU , він зовсім не схожий на те, що підтримує SOCKS_SERVER, звичайно не OpenSSH . Це, звичайно, лише варіант, підтримуваний socksifyутилітою з пакету безпеки / dante .
cnst

wget(1)може підтримувати проксі-сервер SOCKS починаючи з версії 1.4.0 (близько 1999 р.), якщо збірка, з--with-socks якою майже не буває в упакованих версіях
bufh

10

Спробуйте проксі-ланцюги .

Його можна встановити за допомогою apt-get. Тоді вам потрібно буде створити конфігураційний файл в будь-якому з

1) ./proxychains.conf
2) $(HOME)/.proxychains/proxychains.conf
3) /etc/proxychains.conf **

і ви зможете викликати інші команди, наприклад proxychains wget google.com- з'єднання пройдуть через проксі. Ви можете вказати кілька проксі-серверів, які використовуються одночасно або у випадковому порядку.

Наприклад:

➜  ssh -ND 4000 sockshost &
[1] 3446
➜  wget whoer.net -q -O- | grep remote_addr
89.71.*.*
➜  cat proxychains.conf 
[ProxyList]
socks5 127.0.0.1 4000
➜  proxychains wget whoer.net -q -O- | grep remote_addr
|D-chain|-<>-127.0.0.1:4000-<><>-95.211.121.18:80-<><>-OK
78.98.*.*

Я позбавив деякі HTML-теги та IP-адреси, але, як ви бачите, був використаний проксі-сервер і IP-адреса змінилася.


3
Оскільки вихідні проксі-ланцюги не підтримуються, ви можете використовувати замість цього проксі-ланцюги .
Denilson Sá Maia

1

wget не підтримує шкарпетки, curl працює, як сказав Patches :

curl --socks5-hostname 1.2.3.4:8000 /superuser//q/262956/66003

Якщо вам потрібен wget, ви можете встановити tsocks.

Встановлення sudo aptitude install tsocksта налаштування:

$ sudo vim /etc/tsocks.conf
server = 1.2.3.4
server_type = 5
server_port = 8000

Використання:

tsocks wget /superuser//q/262956/66003

1
торси, здається, є оновленою версією tsocks: superuser.com/a/1000811/128124
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.