Comment scraper anonymement avec Python et des Tor Proxies?
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/.
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.
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.
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:
- télécharger tor
- installer tor
- 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:
Et suivez tranquillement les instructions dâinstallation:
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:
- on import de la librairie torpy
- on instancie une session Tor
- 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
- utiliser un pool de 1000-2000 adresses IPs
- anonymiser votre navigation
- 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:
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!
đŠ
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.