Solicitações através do Tor utilizando Python

Em sua essência, o Tor nada mais é que um proxy SOCKS 5, que vai redirecionar seu tráfego através da rede Tor. Sendo assim, a única coisa que você deve fazer, é instalar o Tor, executar, configurar um proxy SOCKS 5 no seu código Python e fazer as solicitações através dele. A maneira mais simples que eu encontrei de fazer isso é utilizando a biblioteca chamada requesocks.

[ Hits: 5.803 ]

Por: Marcelo Theodoro em 14/07/2015


Introdução



Publicado originalmente no meu blog:
Em sua essência, o Tor nada mais é que um proxy SOCKS 5, que vai redirecionar seu tráfego através da rede Tor.

Sendo assim, a única coisa que você deve fazer, é instalar o Tor, executar, configurar um proxy SOCKS 5 no seu código Python e fazer as solicitações através dele.

A maneira mais simples que eu encontrei de fazer isso é utilizando a biblioteca chamada requesocks.

A lib requesocks é um fork da lib requests, sendo a única diferença é que ela pode trabalhar com proxy SOCKS. De resto, o funcionamento é idêntico.

Obs.: estarei utilizando Python 2.7.9 neste exemplo. Não sei se a lib requesocks funciona no Python 3.

Vamos ao tutorial:

Instalação da biblioteca requesocks.

Para fazer a instalação da biblioteca requesocks, no meu sistema operacional (Debian 7), só tive que executar:

sudo pip install requesocks

Caso você não tenha o pip instalado:

sudo apt-get install python-pip

Para testar se está tudo certo, digite:

python

E depois:

>>> import requesocks

Caso não tenha ocorrido nenhum erro, quer dizer que a biblioteca já está instalada.

Instalação do Tor

A instalação do Tor mais utilizada hoje é o Tor Browser, que basicamente é o Tor e um browser pré-configurado. Nós não precisamos do browser, apenas do Tor em si. Então acredito que seja melhor fazer uma instalação um pouco diferente.

No repositório padrão do Debian, o Tor está disponível, não tenho certeza em relação a outras distribuições, mas acredito que deve ter também.

No meu caso, a única coisa que preciso fazer é executar o comando:

sudo aptitude install tor

Se você instalou através dos repositórios também, apenas verifique se o serviço Tor já está rodando, e siga em frente para a próxima parte do tutorial.

Caso sua distribuição não tenha o Tor disponibilizado nos seus repositórios, ou, talvez, você seja chato (brinks) e exija usar sempre a versão mais atualizada de tudo, pode fazer o download do source code no site do Projeto Tor.

Depois de baixar o source code e descompactar, basta entrar no diretório do código de fonte e executar os comandos:

./configure
make

E para executar o Tor:

src/or/tor

Não execute o Tor como root. Ele não permite isso. E o bom senso sempre nos diz que se você pode fazer algo como usuário normal, você não deve utilizar o root.

Enfim... após executar esses passos, o Tor já estará executando em um tela do terminal. A saída esperada é algo como:

src/or/tor
Jul 09 01:56:45.521 [notice] Tor v0.2.6.9 (git-d41ab97294ec69c7) running on Linux with Libevent 2.0.21-stable, OpenSSL 1.0.1k and Zlib 1.2.8.
Jul 09 01:56:45.521 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
Jul 09 01:56:45.521 [notice] Configuration file "/usr/local/etc/tor/torrc" not present, using reasonable defaults.
Jul 09 01:56:45.526 [notice] Opening Socks listener on 127.0.0.1:9050
Jul 09 01:56:45.000 [notice] Bootstrapped 0%: Starting
Jul 09 01:56:46.000 [notice] Bootstrapped 5%: Connecting to directory server
Jul 09 01:56:47.000 [notice] Bootstrapped 10%: Finishing handshake with directory server
Jul 09 01:56:48.000 [notice] Bootstrapped 15%: Establishing an encrypted directory connection
Jul 09 01:56:48.000 [notice] Bootstrapped 20%: Asking for networkstatus consensus
Jul 09 01:56:48.000 [notice] Bootstrapped 25%: Loading networkstatus consensus
Jul 09 01:56:51.000 [notice] Bootstrapped 45%: Asking for relay descriptors
Jul 09 01:56:52.000 [notice] Bootstrapped 50%: Loading relay descriptors)
Jul 09 01:56:56.000 [notice] Bootstrapped 57%: Loading relay descriptors
Jul 09 01:56:59.000 [notice] Bootstrapped 65%: Loading relay descriptors
Jul 09 01:56:59.000 [notice] Bootstrapped 70%: Loading relay descriptors
Jul 09 01:56:59.000 [notice] Bootstrapped 80%: Connecting to the Tor network
Jul 09 01:56:59.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
Jul 09 01:57:00.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Jul 09 01:57:00.000 [notice] Bootstrapped 100%: Done


Caso tenha aparecido isso, tudo certo.

Colocando em prática

Com o Tor e o requesocks já funcionando, vamos agora começar a escrever nosso código Python.

Importante notar que, por padrão, o Tor abre o proxy SOCKS 5 no localhost, porta 9050. Se você não alterou essa porta, provavelmente é esta mesmo.

A forma mais simples de usar, é:

#! /usr/bin/env python
# coding: utf-8
import requesocks

req = requesocks.session()
# Criamos o objeto
req.proxies = {'http': 'socks5://127.0.0.1:9050', 'https': 'socks5://127.0.0.1:9050'}
# Setamos que os protocolos http e https irão o proxy socks5
page = req.get('https://marcelo-theodoro.github.io/')
# Fazemos a solicitação
print page.text
# Exibimos o retorno

Geralmente, eu prefiro definir uma função pra fazer as solicitações, algo como:

#! /usr/bin/env python
# coding: utf-8
import requesocks

req = requesocks.session()
req.proxies = {'http': 'socks5://127.0.0.1:9050', 'https': 'socks5://127.0.0.1:9050'}

def request_tor(url):
    page = req.get(url)
    text = page.text
    return text

print request_tor('https://marcelo-theodoro.github.io/')

Caso você queira confirmar que os requests realmente estão sendo feitos através do Tor, apenas envie um request para a URL: https://api.ipify.org

Ela vai te retornar o IP pelo qual foi feita a solicitação em modo raw, daí você pode comparar com o seu IP real.

That's all folks.

   

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

Tor e Hidden Service Protocol - Explicando tecnicamente a "Deep Web"

Hidden Service - Disponibilizando seu site na Deep Web através do Tor

Leitura recomendada

Recuperação (parcial) de Arquivos em Pendrive Infectado por Ransomware Spora

Um pouco sobre Budgie Desktop

Permissões no Linux

Ubuntu ou Debian com KDE Plasma

ArchBang, o Arch Linux fácil!

  
Comentários
[1] Comentário enviado por wagnerfs em 15/07/2015 - 22:55h

Parabéns pelo artigo e por compartilhar o conhecimento.
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782

[2] Comentário enviado por turok360 em 17/07/2015 - 13:29h


Obrigado por compartilhar!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts