Resulta muy útil en actividades de scraping poder cambiar la ip de tus bots de vez en cuando
1. Instalar tor
apt-get update
apt-get install tor
/etc/init.d/tor restart
Ahora debes generar una contraseña para tor
tor --hash-password micontrasenya
Te saldrá un hash de la contraseña. Debes copiar el hash y luego pegarlo en el archivo
/etc/tor/torrc
Debes descomentar estas dos líneas
ControlPort 9051
HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C
Una vez hecho esto debes reiniciar tor:
/etc/init.d/tor restart
Ahora instalaremnos Privoxy:
apt-get install privoxy
Ahora hay que añadir esta línea al final del archivo de configuración de Privoxy
/etc/privoxy/config:
forward-socks5 / localhost:9050 .
No hay que olvidarse del punto. .Es importante
Reiniciamos Privoxy:
/etc/init.d/privoxy restart
Y aquí está el script para ver si funciona:
import time
import socket
import socks
import urllib2
from stem import Signal
from stem.control import Controller
controller = Controller.from_port(port=9051)
controller.authenticate(password='micontrasenya')
def connectTor():
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5 , "127.0.0.1", 9050, True)
socket.socket = socks.socksocket
def renew_tor():
controller.signal(Signal.NEWNYM)
time.sleep(controller.get_newnym_wait())
def showmyip():
new_ip= urllib2.urlopen("http://icanhazip.com/").read()
print(new_ip)
for i in range(3):
renew_tor()
connectTor()
showmyip()
En los test realizados TOR tardaba entre 10 y 15 segundos en cambiar la IP.