Pular para o conteúdo

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.
Fábio Berbert de Paula fabio
Hits: 7.300 Categoria: Python Subcategoria: Outros
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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


O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução

Descobrindo o IP externo da VPN no Linux

Mais uma política "suja" de marketing da Microsoft

Blender 5.0 Beta, Firefox 144 e avanço da IA dominam o dia no mundo Linux

Enviando mensagens de WhatsApp no Linux usando Shell Script e ADB

Torne-se um DJ usando Linux

Introdução a Threads e como implementá-las em Python

Threads - Importância dentro de um software

Pydev - Preparando o Eclipse para o Python

RapidScan - Multi-Tool WEB Vulnerability Scanner

Scikit Learn: Projetando o futuro de suas APIs e aplicativos usando machine learning

#2 Comentário enviado por CapitainKurn em 07/02/2021 - 07:14h
Show!

Contribuir com comentário

Entre na sua conta para comentar.