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Ă how-to-scrape-data-anonymously-using-tor-proxies-with-torpy-and-python-image-5.png](https://d37gzvgyugjozl.cloudfront.net/how_to_scrape_data_anonymously_using_Tor_proxies_with_Torpy_and_Python_image_5_1389f70a83.png)

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