5

USO DE PROXIES PARA ENMASCARAMIENTO DE SOLICITUDES CON SCRAPY

Para el uso de proxies de enmascaramiento, una vez se ha iniciado el proyecto se debe:

  1. Tener una lista servidores proxy a ser utilizados, se pueden usar varias fuentes, eje: https://free-proxy-list.net/ o https://socks-proxy.net/, etc. El formato para que los servidores sean validos es: LIST_OF_PROXIES = [ ‘http://IP:Pto’, ‘https://IP:Pto’ , ‘socks4://IP:Pto’]

  2. Dentro del archivo middlewares.py se debe añadir el siguiente código a los métodos creados por scrapy

import random

LIST_OF_PROXIES = [
    'https://...:..',
    'https://...:8080',
    'https://...:53281', ...
]

#dentro de la clase DownloaderclassNombrespiderDownloaderMiddleware(object):
	    
	...
    
	defprocess_request(self, request, spider):
		proxy = random.choice(LIST_OF_PROXIES)
	        request.meta["proxy"] = proxy
        	returnNone	
      
       	...
  1. Luego en el archivo settings.py, se debe activar el DOWNLOADER_MIDDLEWARES
DOWNLOADER_MIDDLEWARES = {
    'nombrespider.middlewares.NombrespiderDownloaderMiddleware': 543,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 593,  
}

Muchas gracias

Escribe tu comentario
+ 2
1
8479Puntos

Me gustaría recomendar aquí un proyecto que me topé en GitHub que se llama CloudProxy. Puedes utilizar instancias de AWS, DigitalOcean, GCP y otros servicios en la nube para crear proxies y así alimentar la lista de proxies con una instancia propia en la nube.

0
18037Puntos

para que sirve el request.meta ??

1
8479Puntos
10 meses

@tydi68 El atributo Request.meta sirve guardar información acerca del Request que están manipulando los middlewares. En la documentación de Request puedes encontrar más información. Al final de todo es solo un diccionario para pasar información entre los middlewares.