Come invocare un comando utilizzando un server proxy specifico?


12

Alcune applicazioni supportano il proxy (proxy http o proxy socks), altre no.

Per i browser, posso specificare il server proxy nella finestra di dialogo preferenze / opzioni e altre applicazioni potrebbero essere in grado di configurare i server proxy in file di configurazione.

Per scopi generali, posso invocare un comando usando un proxy specifico? Come segue:

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

Sto usando Ubuntu Maverick.

PS

In win32, può essere implementato dirottando le socket socket, forse non ho familiarità con la programmazione Linux, ma suppongo sia possibile in Linux. anche se.

Risposte:


17

La maggior parte dei comandi di Linux che l'accesso a Internet lo sguardo nei HTTP_PROXY, FTP_PROXYe SOCKS_SERVERvariabili di ambiente per le informazioni proxy. Quindi, per fare qualcosa come il tuo esempio, esegui:

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

La sintassi per HTTP_PROXYed FTP_PROXYè leggermente diversa:

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

L'ambiente desktop GNOME predefinito incluso con le impostazioni proxy di Ubuntu ha un pulsante Applica a livello di sistema , che imposterà automaticamente quelle variabili di ambiente per te. Altrimenti, puoi aggiungere le exportrighe al tuo ~/.bashrcfile per renderle effettive ad ogni accesso.

Sfortunatamente, wgetSOCKS non supporta affatto. Puoi usare curl, incluso in Ubuntu, per ottenere molte cose wget. Sfortunatamente, non controlla SOCKS_SERVER, mentre controlla HTTP_PROXY(come fa wget). Per usare l'arricciatura per scaricare questa pagina con un server SOCKS5 (eseguendo la risoluzione DNS con quel server) e salvarlo come superuser.html, eseguire questo:

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

Se si desidera curlutilizzare sempre quel proxy SOCKS, è possibile creare un alias di shell. Aggiungi la seguente riga al tuo ~/.bashrc:

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

Dovrai riavviare il tuo terminale o eseguire quella linea come se fosse un comando per rendere effettive le modifiche.


Ho provato wgetcon SOCKS_SERVER, ma non sembra il lavoro. wgetleggere solo le impostazioni proxy da /etc/wgetrc. Anche io ho provato links, va bene specificare links -socks-proxy 127.0.0.1:7878 <url>, ma non è riuscito a utilizzare export SOCKS_SERVER=...; links <url>.
Xiè Jìléi,

@ 谢 继 雷: Sfortunatamente alcuni programmi non leggono SOCKS_SERVER, anche se molti popolari lo sshfanno. Inoltre, wgetsembra non supportare affatto SOCKS. Puoi, tuttavia, usare curl. Aggiungerò informazioni alla mia risposta al riguardo.
Patch del

Inoltre youtube-dlnon legge SOCKS_SERVER, legge http_proxyinvece. E non supporta proxy calzini. Umm ... Un elenco di programmi e i relativi ambienti proxy supportati possono essere molto utili.
Xiè Jìléi,

Se cerchi BXR.SU , sembra che nulla supporti SOCKS_SERVER, certamente non OpenSSH . È certamente solo un'opzione supportata socksifydall'utilità dal pacchetto security / dante .
primo

wget(1)può supportare il proxy SOCKS dalla versione 1.4.0 (circa 1999) se compilato con--with-socks quasi mai nelle versioni in pacchetto.
bu

10

Prova le proxychain .

Può essere installato con apt-get. Quindi dovrai creare un file di configurazione in uno dei due

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

e sarai in grado di invocare altri comandi come proxychains wget google.com: le connessioni passeranno attraverso il proxy. È possibile specificare più proxy utilizzati contemporaneamente o in ordine casuale.

Per esempio:

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

Ho rimosso alcuni tag HTML e IP, ma come puoi vedere è stato utilizzato il proxy e l'indirizzo IP è cambiato.


3
Poiché le proxychains originali non sono mantenute, è possibile utilizzare proxychains-ng .
Denilson Sá Maia,

1

wget non supporta i calzini, il ricciolo funziona come Patch ha detto:

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

Se hai bisogno di wget puoi installarlo tsocks.

Installa sudo aptitude install tsockse imposta:

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

Uso:

tsocks wget /superuser//q/262956/66003

1
torsocks sembra essere la versione aggiornata di tsocks: superuser.com/a/1000811/128124
Ciro Santilli 15 改造 中心 法轮功 六四 事件
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.