Python - Usando requests anônimos através da rede Tor

A biblioteca requests é muito usada para web scraping em Python. Com ela é possível extrair informações de websites de forma automatizada. Neste artigo veremos como integrar a requests com a rede Tor usando Linux.

[ Hits: 5.578 ]

Por: Fábio Berbert de Paula em 02/02/2021 | Blog: https://www.instagram.com/alexabolada/


Introdução



Para a criação do artigo usei um desktop Linux rodando Debian 10 Buster. O processo de instalação e configuração do ambiente necessário não deve mudar muito caso esteja usando outra distribuição.

Para início de conversa, vamos atualizar a lista de pacotes dos repositórios APT:

sudo apt update

Em seguida instale o Tor:

sudo apt install tor

Também precisaremos instalar suporte aos protocolos de obfuscação (obfuscation protocols):

sudo apt install obfs4proxy

Configuração do Tor

Entre no diretório de configuração do Tor:

cd /etc/tor/

Faça um backup do arquivo de configuração original:

sudo cp torrc torrc.original

E substitua todas as linhas do arquivo original pelo conteúdo abaixo:

sudo vim torrc

BridgeRelay 1

# Replace "TODO1" with a Tor port of your choice.
# This port must be externally reachable.
# Avoid port 9001 because it's commonly associated with Tor and censors may be scanning the Internet for this port.
ORPort 12345

ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy

# Replace "TODO2" with an obfs4 port of your choice.
# This port must be externally reachable and must be different from the one specified for ORPort.
# Avoid port 9001 because it's commonly associated with Tor and censors may be scanning the Internet for this port.
ServerTransportListenAddr obfs4 0.0.0.0:23456

# Local communication port between Tor and obfs4.  Always set this to "auto".
# "Ext" means "extended", not "external".  Don't try to set a specific port number, nor listen on 0.0.0.0.
ExtORPort auto

# Replace "" with your email address so we can contact you if there are problems with your bridge.
# This is optional but encouraged.
ContactInfo

# Pick a nickname that you like for your bridge.  This is optional.
Nickname PickANickname

Não esqueça de substituir as seguintes linhas por algo de sua preferência:
  • ORPort 12345 - aqui coloquei 12345
  • ServerTransportListenAddr obfs4 0.0.0.0:23456 - aqui coloquei 23456
  • ContactInfo - preencha com seu email
  • Nickname PickANickname - preencha com seu nickname

Reinicie o serviço Tor:

sudo systemctl restart tor

Código Python

Crie um script em Python com o seguinte conteúdo:

import requests
session = requests.session()
session.proxies = {}

session.proxies['http'] = 'socks5h://localhost:9050'
session.proxies['https'] = 'socks5h://localhost:9050'

// requisição NORMAL
r = requests.get('http://httpbin.org/ip')
print(r.text)

// requisição pela rede TOR
r = session.get('http://httpbin.org/ip')
print(r.text)

O código é bem simples, em resumo criamos uma sessão (session) de requests e nela configuramos os servidores proxy para os protocolos http e https, que são direcionados para o serviço tor-socks que roda na porta 9050 da máquina local.

Se você usar requests.get() o Python irá usar a chamada tradicional da biblioteca requests, o que resultará numa request usando seu IP local.

Se você usar session.get() o Python realizará a request usando a sessão criada, onde a requisição irá passar pelo tor-socks e consequentemente terá um IP anônimo.

Enfim, é isso. Espero que o artigo tenha sido útil.

Referências


   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Convertendo Texto em Fala com Python e pyttsx3

HOWTO: Como se tornar moderador do Viva o Linux

Corretor Ortográfico no Vim - Guia definitivo

O Surgimento do Linux

Root no Samsung Galaxy S3 usando GNU/Linux

Leitura recomendada

Robótica com Android e Arduino

Trabalhando com permutações em ordem lexicográfica crescente

Splash Screen para Inkscape

ISO8583py - Utilizando Python para o tratamento de mensagens ISO8583

Pydev - Preparando o Eclipse para o Python

  
Comentários
[1] Comentário enviado por maurixnovatrento em 02/02/2021 - 22:35h


Bem bacana.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[2] Comentário enviado por CapitainKurn em 07/02/2021 - 07:14h

Show!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts