Como invocar um comando usando um servidor proxy específico?

11

Alguns aplicativos suportam proxy (proxy HTTP ou proxy de socks) e outros não.

Para navegadores, posso especificar o servidor proxy na caixa de diálogo preferências / opções, e outros aplicativos podem configurar servidores proxy em arquivos de configuração.

Para uso geral, posso chamar um comando usando um proxy específico? Da seguinte forma:

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

Estou usando o Ubuntu Maverick.

P.S.

No win32, ele pode ser implementado sequestrando as dlls de soquete, talvez eu não esteja familiarizado com a programação do Linux, mas acho que é possível no Linux. embora.

    
por Xiè Jìléi 27.03.2011 / 03:50

3 respostas

16

A maioria dos comandos do Linux que acessam a Internet observam as variáveis de ambiente HTTP_PROXY , FTP_PROXY e SOCKS_SERVER para informações de proxy. Então, para fazer algo parecido com o seu exemplo, basta executar:

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

A sintaxe para HTTP_PROXY e FTP_PROXY é um pouco diferente:

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

O ambiente de trabalho padrão do GNOME incluído nas configurações de proxy do Ubuntu tem um botão Aplicar todo o sistema , que irá definir automaticamente essas variáveis de ambiente para você. Caso contrário, você pode adicionar as linhas export ao seu arquivo ~/.bashrc para que elas entrem em vigor a cada login.

Infelizmente, wget não suporta SOCKS. Você pode usar curl , que está incluído no Ubuntu, para obter muitas coisas que wget faz. Infelizmente, ele não verifica SOCKS_SERVER , enquanto verifica HTTP_PROXY (como wget ). Para usar o curl para baixar esta página com um servidor SOCKS5 (executando a resolução de DNS com esse servidor) e salvá-lo como superuser.html , execute este:

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

Se você quiser que curl sempre use esse proxy SOCKS, poderá criar um alias de shell. Basta adicionar a seguinte linha ao seu ~/.bashrc :

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

Você precisará reiniciar seu terminal ou executar essa linha como se fosse um comando para que as alterações entrem em vigor.

    
por 27.03.2011 / 05:02
9

Tente os proxies .

Pode ser instalado com apt-get . Então você precisará criar um arquivo de configuração em

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

e você poderá invocar outros comandos como proxychains wget google.com - as conexões passarão pelo proxy. Você pode especificar vários proxies usados de uma só vez ou em ordem aleatória.

Por exemplo:

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

Eu tirei algumas tags HTML e IPs, mas como você pode ver, o proxy foi usado e o endereço IP foi alterado.

    
por 11.11.2012 / 11:57
1

wget não suporta meias, o curl funciona como Patches disse:

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

Se você precisar do wget, pode instalar o tsocks .

Instale sudo aptitude install tsocks e configuração:

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

Uso:

tsocks wget https://superuser.com/q/262956/66003
    
por 01.10.2013 / 13:37