Bagaimana cara menjalankan perintah menggunakan server proxy tertentu?

12

Beberapa aplikasi mendukung proksi (proksi http atau proksi kaus kaki), dan beberapa tidak.

Untuk browser, saya dapat menentukan server proxy dalam dialog preferensi / opsi, dan aplikasi lain mungkin dapat mengonfigurasi server proxy dalam file konfigurasi.

Untuk tujuan umum, dapatkah saya menjalankan perintah menggunakan proxy tertentu? Seperti berikut:

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

Saya menggunakan Ubuntu Maverick.

PS

Di win32, ini dapat diimplementasikan dengan membajak dll soket, mungkin, saya tidak terbiasa dengan pemrograman Linux, tapi saya kira itu mungkin di Linux. meskipun.

Xiè Jìléi
sumber

Jawaban:

17

Kebanyakan Linux perintah akses bahwa tampilan Internet di HTTP_PROXY, FTP_PROXY, dan SOCKS_SERVERvariabel lingkungan untuk informasi proxy. Jadi, untuk melakukan sesuatu seperti contoh Anda, jalankan:

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

Sintaks untuk HTTP_PROXYdan FTP_PROXYsedikit berbeda:

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

Lingkungan desktop GNOME default yang disertakan dengan pengaturan proksi Ubuntu memiliki tombol Terapkan Sistem-Lebar , yang secara otomatis akan mengatur variabel lingkungan tersebut untuk Anda. Jika tidak, Anda dapat menambahkan exportbaris ke ~/.bashrcfile Anda untuk membuatnya berlaku di setiap login.

Sayangnya, sama wgetsekali tidak mendukung SOCKS. Anda dapat menggunakan curl, yang disertakan dengan Ubuntu, untuk mencapai banyak hal wget. Sayangnya, itu tidak memeriksa SOCKS_SERVER, sementara itu memeriksa HTTP_PROXY(seperti halnya wget). Untuk menggunakan curl untuk mengunduh halaman ini dengan server SOCKS5 (melakukan resolusi DNS dengan server itu) dan menyimpannya sebagai superuser.html, jalankan ini:

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

Jika Anda ingin curlselalu menggunakan proxy SOCKS itu, Anda bisa membuat alias shell. Cukup tambahkan baris berikut ke Anda ~/.bashrc:

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

Anda perlu me-restart terminal Anda atau menjalankan baris itu seolah-olah itu adalah perintah agar perubahan diterapkan.

Tambalan
sumber
Saya sudah mencoba wgetdengan SOCKS_SERVER, tetapi tampaknya tidak bekerja. wgethanya baca pengaturan proxy dari /etc/wgetrc. Saya mencoba linksjuga, tidak apa-apa untuk menentukan links -socks-proxy 127.0.0.1:7878 <url>, tetapi gagal digunakan export SOCKS_SERVER=...; links <url>.
Xiè Jìléi
@ 谢 继 雷: Sayangnya beberapa program tidak membaca SOCKS_SERVER, meskipun banyak yang populer suka ssh. Juga, wgetsepertinya tidak mendukung SOCKS sama sekali. Namun, Anda dapat menggunakannya curl. Saya akan menambahkan informasi ke jawaban saya tentang itu.
Tambalan
Juga youtube-dltidak membaca SOCKS_SERVER, http_proxymalah dibaca . Dan itu tidak mendukung proxy kaus kaki. Umm ... Daftar program dan lingkungan proxy yang didukungnya bisa sangat membantu.
Xiè Jìléi
Jika Anda mencari BXR.SU , sepertinya tidak ada yang mendukung SOCKS_SERVER sama sekali, tentu saja bukan OpenSSH . Ini tentu saja hanya opsi yang didukung oleh socksifyutilitas dari paket keamanan / dante .
cnst
wget(1)dapat mendukung proxy SOCKS sejak versi 1.4.0 (sekitar 1999) jika dibuat dengan--with-socks yang hampir tidak pernah terjadi dalam versi paket.
bufh
10

Coba rantai proxy .

Dapat diinstal dengan apt-get. Maka Anda harus membuat file konfigurasi di salah satu dari

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

dan Anda akan dapat memanggil perintah lain seperti proxychains wget google.com- koneksi akan melalui proxy. Anda dapat menentukan beberapa proksi yang digunakan sekaligus atau dalam urutan acak.

Sebagai contoh:

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

Saya menghapus beberapa tag HTML dan IP, tetapi karena Anda dapat melihat proksi digunakan dan alamat IP berubah.

Halus
sumber
3
Karena rantai proxy asli tidak dikelola, Anda dapat menggunakan proxy-rantai sebagai gantinya.
Denilson Sá Maia
1

wget tidak mendukung kaus kaki, ikal bekerja seperti kata Patches :

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

Jika Anda perlu wget, Anda dapat menginstal tsocks.

Instal sudo aptitude install tsocksdan setup:

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

Pemakaian:

tsocks wget /superuser//q/262956/66003
PiNomor
sumber
1
torsocks tampaknya merupakan versi terbaru dari tsocks: superuser.com/a/1000811/128124
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件