Skip to main content

Rotacionador de IP para o Scrapy via Tor

Project description

scrapy-tor-ip-rotator

Este módulo tem por finalidade permitir rotação de IPs ao Scrapy via Tor.

Instalação

Maneira simples de instalação, via pip:

pip install scrapy-tor-proxy-rotation

Configurando Tor

É necessário configurar o Tor. Primeiramente, instale-o:

sudo apt-get install tor

Pare sua execução para realizar configurações:

sudo service tor stop

Abra seu arquivo de configuração como root, disponível em /etc/tor/torrc, por exemplo, usando o nano:

sudo nano /etc/tor/torrc

Coloque as linhas abaixo e salve:

ControlPort 9051
CookieAuthentication 0

Reinicie o Tor:

sudo service tor start

É possível verificar o IP de sua máquina e comparar com o do Tor da seguinte forma:

  • Para ver seu IP:
    curl http://icanhazip.com/
    
  • Para ver o IP do TOR:
    torify curl http://icanhazip.com/   
    

Proxy do Tor não são suportados pelo Scrapy. Para contornar esse problema, é necessário o uso de um intermediário, nesse caso o Privoxy.

O servidor proxy do Tor se encontra, por padrão, no endereço 127.0.0.1:9050

Instalação e configuração do Privoxy:

  • Instalar:
    sudo apt install privoxy
    
  • Pare sua execução:
    sudo service privoxy stop
    
  • Configurá-lo para usar Tor, abra seu arquivo de configuração:
    sudo nano /etc/privoxy/config
    
  • Adicione as seguintes linhas:
    forward-socks5t / 127.0.0.1:9050 .
    
  • Inicie-o:
    service privoxy start
    

Por padrão, privoxy executará no endereço 127.0.0.1:8118

Teste:

torify curl http://icanhazip.com/
curl -x 127.0.0.1:8118 http://icanhazip.com/

O IP mostrado nos dois passos acima deve ser o mesmo.

Uso

Após realizar essas configurações, já é possível integrar o Tor ao Scrapy.

  • Configure o middleware no arquivo de configuração de seu projeto (settings.py):

    DOWNLOADER_MIDDLEWARES = {
        ...,
        'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
        'tor_ip_rotator.middlewares.TorProxyMiddleware': 100
    }
    
  • Habilite o uso da extensão:

    TOR_IPROTATOR_ENABLED = True
    TOR_IPROTATOR_CHANGE_AFTER = #número de requisições feitas em um mesmo endereço IP
    

Por padrão, um IP poderá ser reutilizado após 10 usos de outros. Esse valor pode ser alterado pela variável TOR_IPROTATOR_ALLOW_REUSE_IP_AFTER, como abaixo:

TOR_IPROTATOR_ALLOW_REUSE_IP_AFTER = #

Um número grande demais pode tornar mais lento recuperar um novo IP para uso ou nem encontrar. Se o valor for 0, não haverá registro de IPs usados.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scrapy-tor-proxy-rotation-0.0.1.tar.gz (4.2 kB view hashes)

Uploaded Source

Built Distribution

scrapy_tor_proxy_rotation-0.0.1-py3-none-any.whl (5.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page