Comment scraper anonymement avec Python et des Tor Proxies?
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
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:
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:
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.