Wie rufe ich einen Befehl mit einem bestimmten Proxy-Server auf?

11

Einige Anwendungen unterstützen Proxy (http-Proxy oder Socks-Proxy), andere nicht.

Für Browser kann ich im Dialogfeld "Einstellungen / Optionen" einen Proxyserver angeben, und andere Anwendungen können möglicherweise Proxyserver in Konfigurationsdateien konfigurieren.

Kann ich einen Befehl für allgemeine Zwecke über einen bestimmten Proxy aufrufen? Wie folgt:

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

Ich benutze Ubuntu Maverick.

PS

In Win32 kann es durch Hijacken der Socket-DLLs implementiert werden. Vielleicht bin ich nicht mit Linux-Programmierung vertraut, aber ich denke, dass es in Linux möglich ist. obwohl.

Xiè Jìléi
quelle

Antworten:

17

Die meisten Linux - Befehle, die das Internet in den Blick zugreifen HTTP_PROXY, FTP_PROXYund SOCKS_SERVERUmgebungsvariablen für die Proxy - Informationen. Also, um so etwas wie dein Beispiel zu machen, führe einfach Folgendes aus:

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

Die Syntax für HTTP_PROXYund FTP_PROXYist etwas anders:

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

Die standardmäßige GNOME-Desktop-Umgebung, die in den Proxy-Einstellungen von Ubuntu enthalten ist, verfügt über eine Schaltfläche " Systemweit anwenden" , mit der diese Umgebungsvariablen automatisch für Sie festgelegt werden. Andernfalls können Sie die exportZeilen zu Ihrer ~/.bashrcDatei hinzufügen , damit sie bei jeder Anmeldung wirksam werden.

wgetUnterstützt SOCKS leider überhaupt nicht. Sie können curldas in Ubuntu enthaltene Programm verwenden, um viele Aufgaben zu wgeterledigen. Leider prüft es nicht SOCKS_SERVER, während es prüft HTTP_PROXY(wie es tut wget). Gehen Sie wie folgt vor, um diese Seite mit curl von einem SOCKS5-Server herunterzuladen (und mit diesem Server eine DNS-Auflösung durchzuführen) und zu speichern superuser.html:

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

Wenn Sie curldiesen SOCKS-Proxy immer verwenden möchten , können Sie einen Shell-Alias ​​erstellen. Fügen Sie einfach die folgende Zeile hinzu ~/.bashrc:

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

Sie müssen Ihr Terminal neu starten oder diese Zeile ausführen, als wäre es ein Befehl, damit die Änderungen wirksam werden.

Aufnäher
quelle
Ich habe es wgetmit versucht SOCKS_SERVER, aber es scheint nicht zu funktionieren. wgetLies nur Proxy-Einstellungen von /etc/wgetrc. Ich habe es auch versucht links, es ist in Ordnung anzugeben links -socks-proxy 127.0.0.1:7878 <url>, aber die Verwendung ist fehlgeschlagen export SOCKS_SERVER=...; links <url>.
Xiè Jìléi
@ 谢 谢 雷: Leider lesen einige Programme nicht SOCKS_SERVER, obwohl es viele beliebte mögen ssh. Außerdem wgetscheint nicht SOCKS überhaupt zu unterstützen. Sie können jedoch verwenden curl. Ich werde meiner Antwort darüber Informationen hinzufügen.
Patches
Auch youtube-dlnicht liest SOCKS_SERVER, liest er http_proxystattdessen. Und es unterstützt keine Socken Proxy. Umm ... Eine Liste von Programmen und deren unterstützten Proxy-Umgebungen kann sehr hilfreich sein.
Xiè Jìléi
Wenn Sie nach BXR.SU suchen , scheint nichts SOCKS_SERVER zu unterstützen, schon gar nicht OpenSSH . Dies ist mit Sicherheit nur eine Option, die vom socksifyDienstprogramm aus dem Paket security / dante unterstützt wird .
CNST
wget(1)kann SOCKS-Proxy seit Version 1.4.0 (ca. 1999) unterstützen, wenn --with-socksBuilds verwendet werden, was in gepackten Versionen fast nie der Fall ist.
bufh
10

Versuchen Sie Proxy-Ketten .

Es kann mit installiert werden apt-get. Dann musst du eine Konfigurationsdatei in einer von beiden erstellen

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

und Sie können andere Befehle wie aufrufen proxychains wget google.com- die Verbindungen werden über Proxy geleitet. Sie können mehrere gleichzeitig oder in zufälliger Reihenfolge verwendete Proxys angeben.

Zum Beispiel:

➜  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.*.*

Ich habe einige HTML-Tags und IPs entfernt, aber wie Sie sehen, wurde der Proxy verwendet und die IP-Adresse hat sich geändert.

Flauschige
quelle
3
Da die ursprünglichen Proxy-Ketten nicht gepflegt sind, können Sie stattdessen proxychains-ng verwenden.
Denilson Sá Maia
1

wget unterstützt keine Socken, Locken funktioniert wie Patches sagten:

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

Wenn Sie wget benötigen, können Sie installieren tsocks.

Installieren sudo aptitude install tsocksund einrichten:

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

Verwendungszweck:

tsocks wget https://superuser.com/q/262956/66003
PiTheNumber
quelle
1
torsocks scheint die aktualisierte Version von tsocks zu sein: superuser.com/a/1000811/128124
Ciro Santilli新疆改造中心996ICU六四事件