Comment scraper anonymement avec Python et des Tor Proxies?

Sasha Bouloudnine●
December 16, 2022

●
5 min read
Lorsque l’on fait du scraping en ligne, en utilisant son propre serveur ou ordinateur, il peut arriver que l’on soit bloquĂ© par le site web cible, qui bloque alors l’adresse IP. Il s’agit d’un hardblock, qui rend toute collecte supplĂ©mentaire difficile. Par exemple, sur le site https://www.carrefour.fr/, protĂ©gĂ© par l’outil de bot-mitigation fourni par https://www.cloudflare.com/.
how-to-scrape-data-anonymously-using-tor-proxies-with-torpy-and-python-image-1.png
Il est alors particuliĂšrement tentant d’utiliser un fournisseur de proxy externe, comme le solide https://brightdata.com/, ou le trĂšs bon et facile d’utilisation https://www.scrapingbee.com/. Et ainsi changer d’IP pour masquer sa vraie identitĂ© et contourner le blocage. Toutefois, ces fournisseurs proposent souvent un service coĂ»teux — 0.5 EUR par GB chez brightdata par exemple.

Dans ce tutoriel, nous allons voir comment utiliser le rĂ©seau de proxies de Tor, l’acronyme anglais de The Onion Router, avec Python 3 et Torpy pour naviguer en ligne. Il s’agit d’un rĂ©seau collaboratif et dĂ©centralisĂ©, oĂč le message envoyĂ© passe par une sĂ©rie d’identitĂ©s distinctes avant d’arriver Ă  destination, ce qu’on appelle le Onion Routing.

how-to-scrape-data-anonymously-using-tor-proxies-with-torpy-and-python-image-2.png

D’oĂč ce joli logo qui prend la forme d’un oignon. Le code complet est disponible ici.

En avant!

Prérequis

Afin de rĂ©aliser ce tutoriel de bout en bout, soyez sur d’avoir les Ă©lĂ©ments suivants installĂ©s sur votre ordinateur.

  1. python3
  2. SublimeText

Vous pouvez cliquer sur les liens ci-dessous, qui vous dirigeront soit vers un tutoriel d’installation, soit vers le site en question.

Pour prĂ©ciser l’utilitĂ© de chacun des Ă©lĂ©ments citĂ©s ci-dessus: python3 est le langage informatique avec lequel nous allons scraper le pdf, et SublimeText est un Ă©diteur de texte. Sublime.

À nous de jouer!

Installation

On va procéder comme suit:

  1. télécharger tor
  2. installer tor
  3. installer torpy
Pour la premiĂšre Ă©tape, il suffit de se rendre ici: https://www.torproject.org/download/

TĂ©lĂ©charger ensuite le navigateur qui correspond Ă  votre systĂšme d’exploitation. Ici pour moi, Mac OS:

how to scrape data anonymously using Tor proxies with Torpy and Python?-image-3.png

Et suivez tranquillement les instructions d’installation:

how to scrape data anonymously using Tor proxies with Torpy and Python?-image-4.png
Enfin, on va installer la librairie Python Torpy, et requests qui permet de se déplacer sur Internet avec Python :
f
$ pip3 install requests $ pip3 install torpy

Et voilĂ , nous sommes prĂȘts Ă  scraper.

NB: avec 273 stars, 43 forks, et un commit le plus rĂ©cent en date du 15/04/2021, la librairie Torpy est la librairie d’accĂšs Ă  Tor via Python 3 la plus populaire, la plus facile d’utilisation, et la mieux maintenue

🌟

Le code

Voilà le code en intégralité:

f
# On importe la classe TorRequests depuis la librairie torpy from torpy.http.requests import TorRequests print('start') with TorRequests() as tor_requests: # On rĂ©alise un premiĂšre requĂȘte vers ipify.org pour connaĂźtre notre adresse IP print("build circuit #1") with tor_requests.get_session() as sess: print(sess.get("https://api.ipify.org/").text) # On rĂ©alise un premiĂšre requĂȘte vers ipify.org pour connaĂźtre notre adresse IP print("build circuit #2") with tor_requests.get_session() as sess: print(sess.get("https://api.ipify.org/").text) print('~~success')

Le code se décompose en 3 parties distinctes:

  1. on import de la librairie torpy
  2. on instancie une session Tor
  3. on requĂȘte https://api.ipify.org/ qui nous renvoie notre adresse IP

Et lorsque qu’on exĂ©cute le code depuis le terminal:

f
$ python3 torpy-tor-proxies-python-tutorial.py start build circuit #1 185.220.100.252 build circuit #2 185.220.101.33 ~~success

On voit donc bien qu’à chaque fois qu’une session est ouverte, une nouvelle adresse IP nous est assignĂ©e.

C’est un succùs total!

✹

Bénéfices

Ce code va vous permettre, en 50 secondes, d’accĂ©der, depuis Python 3 et Ă  l’aide de la librairie Torpy, au rĂ©seau de proxies Tor.

Or d’aprĂšs Tor Metrics, le rĂ©seau compte en 2022 de 1000 Ă  2000 adresses IPs de sortie, ce qu’on retrouve Ă  la place de exit. C’est Ă  dire que vous allez pouvoir vous appuyez sur un pool d’IPs de cette taille lĂ 

Autrement dit, vous allez pouvoir

  1. utiliser un pool de 1000-2000 adresses IPs
  2. anonymiser votre navigation
  3. gratuitement

Magnifique!

🧅

Limitations

Attention, si le rĂ©seau d’IPs est gratuit, la taille du rĂ©seau est relativement petite. A titre de comparaison, le fournisseur de proxies leader du marchĂ© Brightdata promet un rĂ©seau de plus de 1.5 millions d’adresses IPs de datacenter. 1000 fois plus grand, rien que ça.
Par ailleurs, en plus d’ĂȘtre de petite taille et accessible par tous, le rĂ©seau est utilisĂ© lors de la navigation sur le Darknet, et prendre part Ă  des activitĂ©s plus ou moins lĂ©gales. Aussi, vous prenez le risque d’ĂȘtre rapidement bloquĂ© par un site cible.

Vous pouvez toutefois normalement accéder à Google, quand vous avez un peu de chance:

how-to-scrape-data-anonymously-using-tor-proxies-with-torpy-and-python-image-6.png
Enfin, puisqu’il faut passer par un rĂ©seau de serveurs afin de garantir l’anonymat de la requĂȘte, le fameux Onion Routing, la vitesse de requĂȘte est relativement lente. Ainsi, si on calcule la requĂȘte d’accĂšs Ă  https://api.ipify.org/, entre le rĂ©seau Tor et une IP classique de chez Brightdata, on a une diffĂ©rence de vitesse de 1 Ă  4.

Le résultat du script ci-dessous:

f
$ python3 test-speed-tor-vs-brightdata.py tor ip 185.82.127.25 delay 3.131886832998134 brightdata ip 185.255.166.252 delay 0.8867947079997975 ~~success

Avancer masqué oui, mais avancer lentement.

🐌

Conclusion

Et c’est la fin du tutoriel!

Dans ce tutoriel, nous avons vu comment utiliser les proxies du rĂ©seau Tor avec Python 3, et Torpy, la derniĂšre librairie la plus facile d’utilisation du marchĂ©.

Si vous avez des questions, ou si vous avez besoin d’un service de scraping sur-mesure, solide et scalable, capable d’utiliser un pool d’IPs vaste et performant, contactez-nous ici.

Happy scraping!

🩀

1516989175726.jpegSasha Bouloudnine

Co-founder @ lobstr.io depuis 2019. Fou de la data et amoureux zélé du lowercase. Je veille à ce que vous ayez toujours la donnée que vous voulez.

Related Articles