Pergunta

Como posso usar um proxy de meias 4/5 com urllib2 para baixar uma página da web?

Foi útil?

Solução

Você pode usar Socksipy módulo. Basta copiar o arquivo "Socks.py" para o diretório Lib/Site-Packages do seu Python, e você está pronto para ir.

Você deve usar meias antes do urllib2. (Tente pip install PySocks )

Por exemplo:

import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen('http://www.google.com').read()

Você também pode experimentar Pycurl Lib e Tsocks, para obter mais detalhes, clique em aqui.

Outras dicas

Adicionando uma alternativa à resposta de Pan quando você precisa usar muitos proxies diferentes ao mesmo tempo.

Nesse caso, você precisa criar um abridor como faz com um proxy HTTP. Há um código disponível no github https://gist.github.com/869791

opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS4, 'localhost', 9999))
print opener.open('http://www.whatismyip.com/automation/n09230945.asp').read()

Como as meias são um proxy de nível de soquete, você deve substituir o objeto de soquete usado por urllib2. Por favor, dê uma olhada um isto solução. Se o patch de macaco não for bom o suficiente para você, você pode tentar subclasse ou copiar modificar o código do urllib2 Biblioteca padrão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top