Làm thế nào để gọi lệnh bằng máy chủ proxy cụ thể?


12

Một số ứng dụng hỗ trợ proxy (http proxy hoặc proxy proxy), và một số thì không.

Đối với trình duyệt, tôi có thể chỉ định máy chủ proxy trong hộp thoại tùy chọn / tùy chọn và các ứng dụng khác có thể định cấu hình máy chủ proxy trong tệp cấu hình.

Đối với mục đích chung, tôi có thể gọi một lệnh bằng proxy cụ thể không? Thích như sau:

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

Tôi đang sử dụng Ubuntu Maverick.

PS

Trong win32, nó có thể được thực hiện bằng cách chiếm quyền điều khiển ổ cắm, có thể, tôi không quen với lập trình Linux, nhưng tôi đoán nó có thể có trong Linux. Tuy nhiên.

Câu trả lời:


17

Hầu hết các Linux lệnh truy cập mà giao diện Internet trong HTTP_PROXY, FTP_PROXYSOCKS_SERVERcác biến môi trường để biết thông tin proxy. Vì vậy, để làm một cái gì đó giống như ví dụ của bạn, chỉ cần chạy:

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

Cú pháp cho HTTP_PROXYFTP_PROXYhơi khác nhau:

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

Môi trường máy tính để bàn Gnome mặc định có trong cài đặt proxy của Ubuntu có nút Áp dụng toàn hệ thống , sẽ tự động đặt các biến môi trường đó cho bạn. Nếu không, bạn có thể thêm các exportdòng vào ~/.bashrctệp của mình để làm cho chúng có hiệu lực mỗi lần đăng nhập.

Thật không may, wgetkhông hỗ trợ SOCKS cả. Bạn có thể sử dụng curl, đi kèm với Ubuntu, để đạt được nhiều thứ wget. Thật không may, nó không kiểm tra SOCKS_SERVER, trong khi nó không kiểm tra HTTP_PROXY(như vậy wget). Để sử dụng curl để tải xuống trang này với máy chủ SOCKS5 (thực hiện độ phân giải DNS với máy chủ đó) và lưu nó dưới dạng superuser.html, hãy chạy nó:

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

Nếu bạn muốn curlluôn luôn sử dụng proxy SOCKS đó, bạn có thể tạo bí danh shell. Chỉ cần thêm dòng sau vào ~/.bashrc:

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

Bạn sẽ cần phải khởi động lại thiết bị đầu cuối của mình hoặc chạy dòng đó như thể đó là một lệnh để các thay đổi có hiệu lực.


Tôi đã thử wgetvới SOCKS_SERVER, nhưng có vẻ như không hoạt động. wgetchỉ đọc cài đặt proxy từ /etc/wgetrc. Tôi cũng đã cố gắng linksđể xác định links -socks-proxy 127.0.0.1:7878 <url>, nhưng không thành công khi sử dụng export SOCKS_SERVER=...; links <url>.
Xiè Jìléi

@ 谢 继: Thật không may, một số chương trình không đọc SOCKS_SERVER, mặc dù nhiều chương trình phổ biến thích sshlàm. Ngoài ra, wgetdường như không hỗ trợ SOCKS. Bạn có thể, tuy nhiên, sử dụng curl. Tôi sẽ thêm thông tin vào câu trả lời của tôi về điều đó.
Bản vá lỗi

Cũng youtube-dlkhông đọc SOCKS_SERVER, http_proxythay vào đó nó đọc . Và nó không hỗ trợ proxy proxy. Umm ... Một danh sách các chương trình và các vars môi trường proxy được hỗ trợ của chúng có thể rất hữu ích.
Xiè Jìléi

Nếu bạn tìm kiếm BXR.SU , có vẻ như không có gì hỗ trợ SOCKS_SERVER cả, chắc chắn không phải OpenSSH . Đây chắc chắn chỉ là một tùy chọn được hỗ trợ bởi socksifytiện ích từ gói bảo mật / dante .
cnst

wget(1)có thể hỗ trợ proxy SOCKS kể từ phiên bản 1.4.0 (khoảng năm 1999) nếu bản dựng--with-socks gần như không bao giờ xảy ra trong các phiên bản đóng gói.
bufh

10

Hãy thử proxy .

Nó có thể được cài đặt với apt-get. Sau đó, bạn sẽ cần tạo một tệp cấu hình trong một trong hai

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

và bạn sẽ có thể gọi các lệnh khác như proxychains wget google.com- các kết nối sẽ thông qua proxy. Bạn có thể chỉ định nhiều proxy được sử dụng cùng một lúc hoặc theo thứ tự ngẫu nhiên.

Ví dụ:

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

Tôi đã tước một số thẻ và IP HTML, nhưng như bạn có thể thấy proxy đã được sử dụng và địa chỉ IP đã thay đổi.


3
Vì các proxy ban đầu không được xác định, thay vào đó , bạn có thể sử dụng proxychains-ng .
Denilson Sá Maia

1

wget không hỗ trợ vớ, curl hoạt động như Patch nói:

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

Nếu bạn cần wget bạn có thể cài đặt tsocks.

Cài đặt sudo aptitude install tsocksvà thiết lập:

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

Sử dụng:

tsocks wget /superuser//q/262956/66003

1
torsocks dường như là phiên bản cập nhật của tsocks: superuser.com/a/1000811/128124
Ciro Santilli
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.