Une part croissante d'internet vit désormais à l'intérieur des applications mobiles. Certaines entreprises ont presque totalement abandonné l'expérience navigateur et livrent le même catalogue, les mêmes annonces ou le même contenu via une application native. Cette évolution suit les smartphones dans la poche de tout le monde : les abonnements smartphone ne cessent d'augmenter d'année en année, et les apps qui y vivent renferment des prix, des avis, des annonces et des signaux que les équipes souhaitent véritablement analyser.
Le problème, c'est qu'une application n'est pas une page web, et les techniques auxquelles vous recourez pour scraper un site web ne se transfèrent pas facilement. Cet article explique en quoi les données d'applications mobiles diffèrent des données web, l'approche réaliste pour les collecter (annonces publiques dans les stores d'applications et endpoints d'API publics plutôt que le binaire de l'application elle-même), les outils et proxies dont vous avez besoin, les difficultés que vous rencontrerez, et comment procéder de manière responsable en vous limitant aux données publiques. À la fin, vous saurez quelles parties des "données d'applications mobiles" sont pratiques à collecter et lesquelles ne valent pas la peine.
En quoi les données d'applications mobiles diffèrent des données web
Un site web est indépendant de la plateforme. N'importe quel navigateur sur n'importe quel appareil connecté peut demander une URL et afficher le même HTML, de sorte qu'un scraper peut imiter un navigateur, demander la page et lire ce qui revient. Comme le contrat est ouvert et prévisible, le code source de la page est là pour être parsé. C'est pourquoi la plupart des guides de scraping, y compris le nôtre sur scraper un site web avec Python, supposent que vous travaillez contre du HTML que vous pouvez récupérer directement.
Une application mobile rompt cette hypothèse de deux façons. Premièrement, l'application est conçue pour une plateforme spécifique (Android ou iOS) et s'exécute dans ce runtime plutôt que dans un navigateur que vous pouvez piloter. Il n'y a pas de code source de page public à demander : l'écran que vous voyez est rendu par du code natif à partir de données que l'application a récupérées en arrière-plan. Deuxièmement, ces données en arrière-plan transitent généralement par une API à laquelle l'application parle, et de plus en plus ce trafic est chiffré et parfois ancré à l'application, de sorte que même le capturer depuis l'appareil est délicat. Les données que vous souhaitez existent, mais elles se trouvent à une couche supplémentaire de tout ce qu'une requête HTTP normale peut atteindre.
C'est pourquoi pointer un scraper sur "l'application" est rarement le bon cadrage. Vous ne scrapez pas l'application comme vous scrapez une page. Vous collectez les données publiques que l'application expose ailleurs, et c'est ce recadrage qui rend l'exercice abordable.
L'approche réaliste : annonces publiques et APIs publiques
Le moyen fiable d'obtenir des données d'applications mobiles est d'arrêter d'essayer de lire à l'intérieur de l'application et de collecter plutôt les mêmes informations depuis des surfaces publiques. Deux d'entre elles comptent le plus.
Annonces publiques dans les stores d'applications
Les stores d'applications publient de nombreuses métadonnées structurées et publiques pour chaque application : le nom, le développeur, la catégorie, la note, le nombre d'avis public, le prix, les captures d'écran, la description et l'historique des versions. Ces annonces vivent sur des pages web ordinaires et des endpoints de stores, ce qui signifie qu'elles se comportent comme des données web et peuvent être collectées avec les techniques que vous connaissez déjà. Si votre objectif est la veille concurrentielle sur les applications elles-mêmes, ce qui existe, comment elles sont notées, comment elles sont positionnées, l'annonce dans le store est la source, pas le binaire de l'application. Apple et Google exposent tous deux cela via leurs interfaces de store, et Apple propose en outre des endpoints officiels de consultation pour les métadonnées d'applications.
Endpoints d'API publics
La plupart des applications qui ont débuté comme des sites web disposent encore d'une contrepartie web, et cette version web est soutenue par une API publique ou semi-publique. Quora, Reddit, LinkedIn, Amazon, Instagram et bien d'autres proposent des expériences web qui servent le même contenu que l'application. Collecter depuis la propriété web, ou depuis une API publique documentée que l'entreprise propose, vous donne les données que l'application aurait affichées sans jamais toucher à l'application. Lorsqu'une API officielle existe, c'est presque toujours la meilleure voie : elle est conçue pour être interrogée, elle est stable, et elle vous maintient dans le cadre des règles du fournisseur. N'ayez recours à la collecte non officielle que lorsqu'aucune API ne couvre ce dont vous avez besoin, et uniquement sur des surfaces publiques.
Si vous pouvez obtenir les données depuis une API officielle ou une annonce web publique, faites-le d'abord. La capture du trafic depuis un appareil ou l'émulation de l'application doit être un dernier recours, et de nombreuses applications la rendent de toute façon impraticable via le chiffrement et l'ancrage de certificats.
Qu'en est-il de la lecture du trafic depuis l'appareil ?
Il vaut la peine de comprendre pourquoi la voie de capture depuis l'appareil, celle que les anciens guides préconisaient, n'en vaut généralement pas la peine. L'approche classique consistait à exécuter l'application Android sur un ordinateur via un émulateur ou un outil comme ARC Welder, puis à surveiller le réseau avec un proxy tel que Fiddler ou Wireshark pour voir les appels HTTP et HTTPS effectués par l'application. En théorie, vous rétro-ingénériez l'API de l'application à partir de ce trafic et l'appelez vous-même.
En pratique, deux inconvénients rendent cela pénible. Les outils de capture enregistrent tout ce qui entre et sort de la machine, vous obtenez donc un trafic mixte et bruyant que vous devez ensuite trier pour trouver les appels de l'application. Plus important encore, les applications modernes chiffrent leur trafic et ancrent fréquemment des certificats, de sorte que les charges utiles capturées sont illisibles sans les clés propres à l'application. Entre le bruit et le chiffrement, vous passez généralement plus de temps à lutter contre la capture que vous n'en auriez dépensé à collecter les mêmes données depuis une annonce publique ou une API. Pour la plupart des projets, la conclusion honnête est que la complexité et le coût n'en valent pas la peine lorsqu'une surface publique existe.
Outils et langages adaptés
Une fois que vous collectez depuis des annonces web et des APIs publiques, la chaîne d'outils est la chaîne d'outils de scraping web familière, et la plupart des langages populaires fonctionnent bien. Choisissez en fonction de ce que votre équipe connaît déjà.
- Python. Le choix le plus courant pour ce type de travail, avec Requests pour HTTP, BeautifulSoup et Scrapy pour le parsing, et Selenium pour les pages nécessitant un navigateur. Notre guide BeautifulSoup couvre l'aspect parsing.
- Node.js et JavaScript. Collecte côté serveur avec Axios, node-fetch ou l'API Fetch intégrée, et Superagent côté client. Un choix naturel quand la source est une API JSON.
- Ruby. Bien adapté à la collecte scriptée avec RestClient ou HTTParty pour les appels HTTP.
- PHP. Guzzle, cURL et Requests gèrent la récupération, et de nombreuses équipes web y sont déjà à l'aise.
- Java. Robuste pour les systèmes plus importants, avec des clients HTTP comme OkHttp et des frameworks plus larges quand vous en avez besoin.
- cURL. Le couteau suisse en ligne de commande pour appeler un endpoint directement et inspecter la réponse brute avant d'écrire du code.
- Postman. Pas un langage mais inestimable pour explorer et tester une API manuellement, façonner des requêtes et lire des réponses avant de les automatiser.
Pour le cas d'API publique, le travail se réduit souvent à une seule requête bien formée. La forme ci-dessous suffit pour extraire le JSON d'une annonce dans le store avant tout parsing :
# Apple's public app lookup returns listing metadata as JSON curl "https://itunes.apple.com/lookup?id=APP_ID"
Cet unique appel retourne le nom, la catégorie, la note, le prix et le nombre d'avis pour une annonce publique, sans émulateur ni capture de trafic. Le même pattern, requête puis parsing, s'applique que la source soit un endpoint de store ou la version web du contenu d'une application.
Pourquoi les proxies comptent ici
Collecter des annonces de stores et des endpoints publics à tout volume réel rencontre les mêmes défenses que le scraping web. Envoyez trop de requêtes depuis une même adresse et vous vous retrouvez limité ou bloqué, et certaines sources font varier ce qu'elles retournent selon la région. Les proxies résolvent les deux problèmes. La rotation d'IPs résidentielles ou mobiles répartit vos requêtes sur de nombreuses adresses pour qu'aucune ne déclenche une limite, et les IPs géo-ciblées vous permettent de voir les annonces et prix régionaux comme un utilisateur local. Comme beaucoup de contenu applicatif est servi aux clients mobiles, des IPs mobiles en particulier peuvent correspondre plus étroitement au profil de trafic attendu que des plages de datacenters. Notre guide sur scraper sans être bloqué va plus loin sur la rotation et l'hygiène des requêtes.
Collecter des annonces publiques de stores d'applications et les endpoints web derrière les apps implique de gérer vous-même la rotation, le géo-ciblage, le rendu JavaScript et les CAPTCHAs occasionnels. La Crawlbase Crawling API s'occupe de tout cela derrière un seul endpoint : elle fait tourner les IPs, rend les pages nécessitant un navigateur et gère les blocages pour que vous puissiez demander une annonce et recevoir du HTML ou du JSON propre. Vous disposez de jusqu'à 20 000 requêtes gratuites pour commencer et ne payez que les requêtes réussies.
Pourquoi les équipes scrapent des données d'applications mobiles
La motivation est la même que pour le scraping web : les données à l'intérieur et autour des applications sont une fenêtre sur un marché. Voici quelques-unes des raisons les plus courantes pour lesquelles les équipes les collectent :
- Analyse concurrentielle. Les marques du e-commerce et d'autres secteurs suivent les annonces des applications concurrentes pour surveiller les prix, le positionnement et l'évolution de l'interface, ce qui informe leurs propres décisions produit et marché.
- Intelligence tarifaire. Les prix sont un levier de revenus primordial, et observer les prix pratiqués dans un secteur à travers les applications et les annonces aide une équipe à fixer les siens. Notre note sur le web scraping pour l'intelligence tarifaire couvre la discipline.
- Transport et navigation. Les données de transports publics, de trafic et de covoiturage alimentent les outils de navigation, l'optimisation des trajets et d'autres services de localisation.
- Signaux financiers. L'actualité des marchés en temps réel et les données financières publiques soutiennent des décisions d'investissement et de stratégie plus rapides et plus éclairées.
- Immobilier. Les annonces immobilières publiques, les taux et les détails des logements collectés à grande échelle économisent des heures de navigation manuelle lors des recherches.
- Analyse de l'empreinte numérique. Agréger la présence publique d'un concurrent sur le web et les réseaux sociaux permet de se faire une idée de ce qu'il fait et de là où vous pouvez faire mieux.
Défis de la collecte de données d'applications mobiles
Même en restant sur des surfaces publiques, ce travail comporte de réels obstacles. Les connaître à l'avance préserve un projet des ennuis.
- Conditions d'utilisation. La plupart des applications et des sites qui les soutiennent publient des conditions régissant ce que les utilisateurs peuvent faire avec leurs données. Examinez-les avant de collecter, car les ignorer peut créer une exposition légale.
- Lois sur la vie privée. Les règles de protection des données telles que le RGPD et le CCPA s'appliquent dès lors que des données personnelles sont impliquées. Renseignez-vous sur les lois qui couvrent vos données et votre juridiction, et respectez les politiques d'utilisation des données de chaque source.
- Propriété intellectuelle et droit d'auteur. Le contenu, les images et le matériel propriétaire d'une annonce peuvent être protégés. Ne republiez pas de contenu protégé par le droit d'auteur, et traitez les données d'une autre partie comme leur appartenant.
- Défenses anti-scraping. Les limites de débit, les CAPTCHAs et la détection de bots protègent de nombreuses sources. Respectez-les plutôt que de chercher à les contourner, et maintenez un débit de requêtes raisonnable.
- Chiffrement et durcissement des applications. Comme évoqué ci-dessus, le trafic chiffré et ancré par certificat rend la lecture à l'intérieur de l'application impraticable, ce qui est la principale raison pour laquelle les annonces publiques et les APIs sont la meilleure cible.
- Réglementation sectorielle. Les secteurs sensibles comme la finance et les jeux d'argent restreignent davantage la collecte de données. Vérifiez les règles applicables au secteur que vous touchez avant de commencer.
Scraper de manière responsable
Les données d'applications mobiles méritent une attention particulière car une grande partie de ce que les applications traitent est personnelle. Restez sur des données publiques uniquement : les métadonnées publiques du store telles que le nom, la note, la catégorie, le prix et le nombre total d'avis sont légitimes, mais le contenu des avis individuels et tout ce qui identifie une personne doivent être traités comme des données personnelles, agrégés plutôt que profilés, et gérés selon les lois sur la vie privée applicables. Préférez toujours une API officielle lorsqu'elle existe, car elle est conçue à cet effet et vous maintient dans le cadre des règles du fournisseur. Respectez les conditions d'utilisation et le robots.txt de chaque source, maintenez un débit de requêtes raisonnable pour ne pas surcharger un service, et ne redistribuez jamais de contenu protégé par le droit d'auteur. Collectées avec cette discipline, les données publiques des applications constituent un apport légitime et précieux ; collectées négligemment, elles sont une responsabilité.
Points clés
- Une application n'est pas une page web. Il n'y a pas de code source public à récupérer, et le trafic des applications est souvent chiffré, donc le manuel du scraping web ne se transfère pas directement.
- Collectez depuis des surfaces publiques, pas depuis le binaire. Les annonces publiques dans les stores d'applications et les APIs publiques ou versions web qui soutiennent les apps vous donnent les mêmes données sans toucher à l'application.
- Évitez la capture depuis l'appareil quand vous le pouvez. La capture de trafic via émulateur et proxy est bruyante et généralement bloquée par le chiffrement et l'ancrage de certificats, c'est donc un dernier recours.
- Utilisez la chaîne d'outils familière plus des proxies. Python, Node, Ruby et consorts gèrent la récupération, et la rotation d'IPs résidentielles ou mobiles prévient les blocages et déverrouille les données régionales.
- Restez sur des données publiques et respectez les règles. Préférez les APIs officielles, agrégez les données personnelles, respectez les conditions et la loi sur la vie privée, et maintenez votre débit raisonnable.
Foire aux questions
Peut-on scraper des données directement depuis une application mobile ?
Pas de la même façon qu'on scrape un site web. Une application n'a pas de code source public à demander, et ses données transitent généralement par une API chiffrée difficile à lire depuis l'appareil. Plutôt que de scraper l'application elle-même, vous collectez les mêmes informations publiques depuis les annonces dans les stores et depuis l'API publique ou la version web qui soutient l'application, ce qui est à la fois plus fiable et plus facile à maintenir.
Quelle est la meilleure façon d'obtenir des données d'applications mobiles ?
Commencez par une API officielle si le fournisseur en propose une, car elle est conçue pour être interrogée et vous maintient dans le cadre des règles. Si aucune API ne couvre votre besoin, collectez les métadonnées publiques des annonces dans les stores et le contenu depuis la contrepartie web de l'application en utilisant des outils de scraping web standard. La capture de trafic depuis un appareil avec un émulateur et un proxy est un dernier recours et souvent bloquée par le chiffrement.
Pourquoi ne pas simplement capturer le trafic réseau de l'application ?
Vous pouvez essayer avec un émulateur et un proxy comme Fiddler ou Wireshark, mais deux problèmes le rendent généralement impraticable. La capture enregistre tout le trafic de la machine, vous devez donc trier les appels de l'application dans le bruit, et les applications modernes chiffrent leur trafic et ancrent des certificats, rendant les charges utiles illisibles sans clés propres à l'application. Pour la plupart des projets, les annonces publiques et les APIs livrent les mêmes données avec bien moins d'effort.
Ai-je besoin de proxies pour collecter des données d'applications ?
Pour tout ce qui dépasse une poignée de requêtes, oui. Collecter des annonces de stores et des endpoints publics en volume déclenche des limites de débit et des blocages depuis une seule IP, et certaines sources font varier les résultats selon la région. La rotation d'IPs résidentielles ou mobiles répartit les requêtes sur de nombreuses adresses pour éviter les blocages, et les IPs géo-ciblées vous permettent de voir les annonces et prix régionaux qu'un utilisateur local verrait.
Quel langage de programmation est le mieux adapté pour scraper des données d'applications ?
N'importe lequel des langages populaires convient, alors choisissez ce que votre équipe connaît. Python est le plus courant, avec Requests, BeautifulSoup, Scrapy et Selenium. Node.js convient aux APIs JSON avec Axios ou l'API Fetch, et Ruby, PHP, Java et cURL simple gèrent tous le travail HTTP. La logique de collecte est la même logique de scraping web indépendamment du langage.
Est-il légal de scraper des données d'applications mobiles ?
Cela dépend de ce que vous collectez et comment. Les métadonnées publiques non personnelles telles que les noms d'applications, les notes, les catégories et les prix présentent généralement un risque plus faible, mais vous devez respecter les conditions d'utilisation de chaque source, respecter les droits d'auteur et la propriété intellectuelle, et suivre les lois sur la vie privée comme le RGPD et le CCPA dès lors que des données personnelles sont impliquées. Préférez les APIs officielles, agrégez les données personnelles, et limitez la collecte aux surfaces publiques. En cas de doute, consultez un juriste pour votre cas d'usage spécifique.
Crawlez n'importe quel site à grande échelle, sans combattre l'infrastructure.
Crawlbase gère les proxies, les empreintes et les CAPTCHA afin que votre équipe livre des pipelines de données au lieu de maintenir la plomberie de crawl. 1 000 requêtes gratuites, sans carte requise.
