特定のプロキシサーバーを使用してコマンドを呼び出す方法


12

プロキシ(httpプロキシまたはsocksプロキシ)をサポートするアプリケーションもあれば、そうでないアプリケーションもあります。

ブラウザの場合、プリファレンス/オプションダイアログでプロキシサーバーを指定できます。他のアプリケーションは、構成ファイルでプロキシサーバーを構成できる場合があります。

一般的な目的で、特定のプロキシを使用してコマンドを呼び出すことはできますか?次のように:

$ 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/

Ubuntuのプロキシ設定に含まれるデフォルトのGNOMEデスクトップ環境には、システム全体に適用ボタンがあり、これらの環境変数が自動的に設定されます。それ以外の場合は、ファイルにexport行を追加して、~/.bashrcログインするたびに有効にすることができます。

残念ながら、wgetSOCKSはまったくサポートされていません。curlUbuntuに含まれているを使用して、多くのことを実現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

curlSOCKSプロキシを常に使用するようにしたい場合は、シェルエイリアスを作成できます。に次の行を追加するだけ~/.bashrcです:

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

変更を有効にするためのコマンドのように、ターミナルを再起動するか、その行を実行する必要があります。


で試しましたwgetSOCKS_SERVER、うまくいかないようです。wgetからプロキシ設定のみを読み取ります/etc/wgetrc。私も試しましたがlinks、指定しても大丈夫ですがlinks -socks-proxy 127.0.0.1:7878 <url>、を使用して失敗しましたexport SOCKS_SERVER=...; links <url>
謝Jìléi

@谢继雷:残念ながら一部のプログラムは読みませんがSOCKS_SERVER、多くの人気のあるプログラムは読みsshます。また、wgetSOCKSをまったくサポートしていないようです。ただし、を使用できますcurl。それについての答えに情報を追加します。
パッチ

また、youtube-dl読み取りませんSOCKS_SERVERhttp_proxy代わりに読み取ります。また、ソックスプロキシをサポートしていません。うーん...プログラムとそのサポートされているプロキシ環境変数のリストは非常に役立ちます。
謝Jìléi

BXR.SUを検索すると、SOCKS_SERVERをサポートするものはまったくないようで、OpenSSHは確かにサポートしていません。最も確かなのsocksifyは、security / danteパッケージのユーティリティでサポートされているオプションのみです。
cnst

wget(1)パッケージ化されたバージョンではほとんど使用されないビルドである場合バージョン1.4.0(1999年頃) 以降のSOCKSプロキシをサポートできます。--with-socks
bufh

10

proxychainsを試してください。

でインストールできます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
元のプロキシチェーンメンテナンスされていないため、代わりにproxychains-ngを使用できます。
デニルソンサマイア

1

wgetは靴下をサポートしていません。パッチが言ったようにcurlは動作します:

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
torsocksはtsocksの更新バージョンのようです:superuser.com/a/1000811/128124
Ciro Santilli新疆改造中心法轮功六四事件
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.