diff --git a/rapport/text/2-introduction.md b/rapport/text/2-introduction.md index beea140f2f7e98e9ca6c554c5e3f26d52744caec..92fa36e2a3ab358c470f4e733191003c3472149b 100644 --- a/rapport/text/2-introduction.md +++ b/rapport/text/2-introduction.md @@ -8,7 +8,7 @@ L'informatique permet d'automatiser les actions répétitives. Cela permet d'acc L'objectif de ce travail est de proposer un système nommé Inari satisfaisant ces critères. Il devra proposer un système simple pour qu'un utilisateur final puisse s'en servir. Ce travail se base sur le travail de semestre ayant posé les bases d'une telle application. Un intérêt scientifique et social est présent : d'une part, on peut mesurer l'efficacité d'un tel outil pour voir si oui ou non une machine peut accélérer la récupération de documents ainsi que sa praticité, et d'autre part, on peut trouver des applications pratiques où un individu a besoin de récupérer des informations en masse. De tels logiciels peuvent être utiles pour bien des professions en dehors de l'informatique. -Pour atteindre l'objectif de ce travail, une étude des solutions existantes a été menée et un cahier des charges a été fixé, ce qui permet par la suite de poser l'architecture de ce projet. Une fois l'implémentation terminée, des mesures sur différents sites ont été effectuées. Cela a permis de déterminer la vitesse de traitement du logiciel ainsi que 'utilité d'un tel logiciel. +Pour atteindre l'objectif de ce travail, une étude des solutions existantes a été menée et un cahier des charges a été fixé, ce qui permet par la suite de poser l'architecture de ce projet. Une fois l'implémentation terminée, des mesures sur différents sites ont été effectuées. Cela a permis de déterminer la vitesse de traitement du logiciel ainsi que l'utilité d'un tel logiciel. Ce travail a suivi donc le cheminement suivant : analyser les solutions actuelles en étudiant les techniques employées, s'inspirer de ces dernières pour implémenter le logiciel dont la structure et le fonctionnement seront présentés et enfin, mesurer l'efficacité d'Inari sur plusieurs sites différents, de façon à mesurer sa performance. La vitesse d'un humain et celles d'Inari ont été comparées. Pour conclure, le travail a été jugé selon le cahier des charges établi. L'intégralité du code, des mesures et des fichiers de configuration sont disponibles sur le serveur git de l'HEPIA[^0]. diff --git a/rapport/text/3-etude.md b/rapport/text/3-etude.md index 04c81a1898e595f9ac445e21f0f73a7af593df01..f2463a9867a669dd7f6bbed9963d311ce22f657b 100644 --- a/rapport/text/3-etude.md +++ b/rapport/text/3-etude.md @@ -12,6 +12,8 @@ La récupération des données automatisée est un moyen de réduire le temps pe Plusieurs façons de télécharger les documents existent. Il est nécessaire de les étudier afin de comprendre leur fonctionnement et leurs implications. +Morale et éthique, faute de définition ou de référence objective sont des notions indéterminées. Ci-après, l'auteur entend par éthique, un comportement qui n'est pas illégal et qui n'a pas pour objet d'abuser des ressources d'autrui ou de les utiliser dnas un but que leur auteur ne leur destinait pas. + ## Étude et analyse Chaque site web contient un certain nombre de données : documents, images, films, présentations, texte. tout contenu lisible par un utilisateur peut être considéré comme téléchargeable. Au vu de la hétérogénéité des sites web en matière de style, de topologie et de façons de construire un site, aucun véritable standard n'existe sur les sites web ; chacun se sert des outils permettant de faire son site comme bon lui semble. Il n'existe dès lors aucun standard pour récupérer des données. @@ -33,16 +35,17 @@ Chaque site web contient un certain nombre de données : documents, images, film \caption*{\textit{Source : \url{www.ranch.ch}, \url{www.archive.org}, \url{www.admin.ch}, ref. URL02, URL03, URL04}} \end{figure} -Il existe toutefois plusieurs techniques étant particulièrement utilisées. Certaines entités proposent un service permettant de récupérer leurs données dans un format directement extractible : on parle alors de manière générale d'une (+API_a). D'autres proposent encore de diffuser l'information par des flux (+RSS_a), l'équivalent d'un blog lisible par un ordinateur. Certains proposent encore, malgré leur disparition, d'utiliser des CDs, DVDs ou disque durs pour récupérer leurs données. L'État de Genève propose encore cette méthode de distribution [@noauthor_commande_nodate]. +Il existe toutefois plusieurs techniques particulièrement utilisées. Certaines entités proposent un service permettant de récupérer leurs données dans un format directement extractible : on parle alors de manière générale d'une (+API_a). D'autres proposent de diffuser l'information par des flux (+RSS_a), l'équivalent d'un blog lisible par un ordinateur. Certains proposent encore, malgré leur disparition, d'utiliser des CDs, DVDs ou disque durs pour récupérer leurs données, ce qui est le cas d'un des services de l'État de Genève [@noauthor_commande_nodate]. Au vu de leur utilisation, les (+API_a) restent aujourd'hui la méthode préférée d'échange de données. Elles ont l'avantage, contrairement aux autres méthodes, de proposer quasi-directement la récupération des informations. -Les (+API_a) restent rares; de nombreux sites n'en ont pas. Dans le cas où elles en proposent, elles sont souvent payantes, accessibles sur permission uniquement, limitées et peu ou pas documentées. En outre, une (+API_a) représente une charge supplémentaire au site puisqu'elles représentent à elles seules $83\%$ du trafic HTTP mondial [@akamai_state_2019], augmentant les coûts pour l'exploitant. Qui plus est, il est potentiellement nécessaire de payer un développeur pour la développer et la maintenir. +Les (+API_a) cependant restent rares; de nombreux sites n'en ont pas. Dans le cas où elles en proposent, elles sont souvent payantes, accessibles sur permission uniquement, limitées et peu ou pas documentées. +En outre, les (+API_a), lesquelles représentent $83\%$ du trafic HTTP mondial [@akamai_state_2019], constitue une lourde charge pour l'exploitant du site, qu'elle soit technique ou financière. Qui plus est, il est potentiellement nécessaire de payer un développeur pour la développer et la maintenir. D'autres sites, qui composent la grande majorité des sites, ne proposent aucun système de récupération. Le site web lui-même est le seul accès aux documents possible. L'utilisateur doit alors aller récupérer manuellement les documents un par un. Par exemple, un des sites de l'Etat de Genève nommé FAO refuse de proposer une API car les informations sont disponibles gratuitement en ligne [@departement_presidentiel_notitle_2018]. Il existe une méthode alternative nommée _scraping_. Cette dernière consiste à simuler la visite d'un site, comme si un utilisateur le visualisait, pour récupérer les informations s'y trouvant. -Cette méthode, très utilisée par les géants de l'Internet comme Google [@kosir_is_2014], n'est pas particulièrement utilisée ailleurs. Les logiciels de scraping disponibles sur le marché sont rares et sont répartis en trois catégories détaillées plus bas. Beaucoup d'entreprises considèrent cette pratique comme malveillante et n'hésitent pas à attaquer toute personne ou entreprise connue pour avoir utilisé une méthode de scraping sur leur site. C'est toutefois une pratique qui n'est pas illégale, puisque la justice a, à plusieurs reprises, défendu des entreprises accusées de scraper des sites tiers [@bode_court_2019] [@igor_us_2018] +Cette méthode, très utilisée par les géants de l'Internet comme Google [@kosir_is_2014], n'est pas particulièrement utilisée ailleurs. Les logiciels de scraping disponibles sur le marché sont rares et sont répartis en trois catégories détaillées plus bas. Beaucoup d'entreprises considèrent cette pratique comme malveillante et n'hésitent pas à attaquer toute personne ou entreprise connue pour avoir utilisé une méthode de scraping sur leur site. C'est toutefois une pratique qui n'est pas illégale, puisque la justice a, à plusieurs reprises, donné raison à des entreprises accusées de scraper des sites tiers [@bode_court_2019] [@igor_us_2018] En outre, les scrapers (les logiciels en charge de l'opération de _scraping_) ont la réputation d'être fragiles, ces derniers se basant sur l'architecture du site scrapé. Le moindre changement dudit site provoque de manière générale l'arrêt du fonctionnement du scraper. Trois grandes catégories de scrapers existent : @@ -65,14 +68,14 @@ Les plateformes (+SAAS_a) possèdent les caractéristiques inverses. Elles sont La dernière catégorie, les solutions payantes humaines, consiste à payer une tierce personne pour qu'elle récupère les documents. Cette solution est analysée en détail plus bas. -Un autre point de vue à considérer est la partie _Open Source_ : si le logiciel est Open Source, il est possible de consulter son code pour l'améliorer, ajouter des fonctionnalités et s'assurer qu'il fonctionne exactement comme il l'a été décrit. Les logiciels non open source sont décrits comme _privateurs de liberté_ par de nombreux développeurs célèbres comme Richard Stallmann [@williams_hackers_2002]. Il est impossible de dire avec certitude ce que fait un logiciel qui n'est pas open source, justement parce que le code source n'est pas disponible. +Un autre point de vue à considérer est la partie _Open Source_ : si le logiciel est Open Source, il est possible de consulter son code pour l'améliorer, ajouter des fonctionnalités et s'assurer qu'il fonctionne exactement conformément à ses spécificités. Les logiciels non open source sont décrits comme _privateurs de liberté_ par de nombreux développeurs célèbres comme Richard Stallmann [@williams_hackers_2002]. Il est impossible de dire avec certitude ce que fait un logiciel qui n'est pas open source, justement parce que le code source n'est pas disponible. ### Comparaison morale La comparaison morale est un point qui peut sembler peu important au premier abord pour la questiom du scraping, mais qui est en vérité essentiel lors de l'étude des différentes solutions. -En considérant certaines solutions existantes sur le marché, comme la plateforme _Mechanical Turk_ d'Amazon, il est possible d'y apercevoir, selon l'opinion publique, certains abus moraux. La plateforme _Mechanical Turk_ permet à tous et à toutes de récupérer des masses de documents en payant une autre personne pour le faire. Cette personne recoit un salaire journalier de quatre à cinq dollars par jour [@semuels_online_nodate] pour des actions répétitives. En supposant qu'une journée de travail dure huit heures, que chaque document prend 30 secondes à télécharger et qu'il y a un nombre de documents suffisant pour au moins une journée, le téléchargement d'un document est payé entre 0.004$ et 0.005$. Avec de telles sommes, une nouvelle catégorie de précarité est ouverte puisqu'il n'atteint que 50% du salaire le plus bas d'Europe [@noauthor_monthly_nodate]. +En considérant certaines solutions existantes sur le marché, comme la plateforme _Mechanical Turk_ d'Amazon, il est possible d'y apercevoir, selon l'opinion publique, certains abus moraux. La plateforme _Mechanical Turk_ permet à tous et à toutes de récupérer des masses de documents en payant une autre personne pour le faire. Cette personne reçoit un salaire journalier de quatre à cinq dollars par jour [@semuels_online_nodate] pour des actions répétitives. En supposant qu'une journée de travail dure huit heures, que chaque document prend 30 secondes à télécharger et qu'il y a un nombre de documents suffisant pour au moins une journée, le téléchargement d'un document est payé entre 0.004$ et 0.005$. Avec de telles sommes, une nouvelle catégorie de précarité est ouverte puisqu'il n'atteint que 50% du salaire le plus bas d'Europe [@noauthor_monthly_nodate]. -Les *turkers* dépendent de ce maigre revenu pour survivre. Ils ne sont pas toujours en mesure de quitter leur précarité et éprouvent donc une grande difficulté à se séparer de ces plateformes. +Les *turkers*, c'est-à-dire les employés de ces plateformes, dépendent de ce maigre revenu pour survivre. Ils ne sont pas toujours en mesure de quitter leur précarité et éprouvent donc une grande difficulté à se séparer de ces plateformes. Soutenir de telles plateformes est perçu par l'opinion publique comme amoral, qui vont même jusqu'à parler "d'esclavage moderne" [@soyez_turc_nodate]. La plateforme d'Amazon n'est qu'un exemple parmi d'autres : de tels ateliers de misère similaires à _Mechanical Turk_ existent par dizaines. D'autres services, utiles au scraping, proposent la résolution de captcha par des humains ($0.001\$$ par captcha) dans des pays pour la plupart pauvres. @@ -83,13 +86,13 @@ l'application permet d'éviter l'utilisation non-informée d'une plateforme expl ### Comparaison légale -En étudiant différents (+SAAS_a) et frameworks, aucun n'a semblé violer la loi à la connaissance de l'auteur. Certains de ces derniers utilisent permettant d'éviter les blocages du fournisseur, tels que l'utilisation d'un proxy, d'un (+VPN_a) ou d'un pool d'adresses (+IP_a). +En étudiant différents (+SAAS_a) et frameworks, aucun n'a semblé violer la loi à la connaissance de l'auteur. Certains (+SAAS_a) utilisent des techniques de détournement de blocages du fournisseur, tels que l'utilisation d'un proxy, d'un (+VPN_a) ou d'un pool d'adresses (+IP_a). Certains se servent en outre de services de résolution de captcha, comme mentionné plus haut. Outre l'aspect de sous-payer des travailleurs dans des pays dont la plupart sont en difficulté, l'aspect légal de contourner une protection est tout à fait douteux. Une étude de l'université de San Diego [@motoyama_re_nodate] décrivait l'acte de contourner les captchas :_"it can be argued that CAPTCHAs are an access control mechanism and thus evading them exceeds the authorization granted by the site owner, in potential violation of the Computer Fraud and Abuse Act (and certainly of their terms of service)."_ (on peut soutenir que les CAPTCHAs sont un mécanisme de contrôle d'accès et que les éviter dépasse les autorisations données par le propriétaire du site, en violation potentielle avec la loi sur la sécurité des systèmes d'information et certainement de leurs conditions de service). -C'est toutefois un sujet à controverse. L'avocate Jennifer Granick dit, en parlant des captchas :_"Technologically and legally captchas can be thought of as nothing more than a speed bump as opposed to a barrier"_ ("D'un point de vue technologique et juridique, les captchas peuvent être considérés comme un simple ralentisseur plutôt qu'une barrière") [@zetter_is_2010]. +C'est toutefois un sujet à controverse. L'avocate Jennifer Granick indique, en parlant des captchas :_"Technologically and legally captchas can be thought of as nothing more than a speed bump as opposed to a barrier"_ ("D'un point de vue technologique et juridique, les captchas peuvent être considérés comme un simple ralentisseur plutôt qu'une barrière") [@zetter_is_2010]. Certains systèmes particulièrement perfectionnés sont à même de simuler un comportement humain [@zetter_is_2010]. -Employer des techniques douteuses n'est pas puni par la loi mais peut être vu du public comme socialement inacceptable [@soyez_turc_nodate]; si une entreprise dépendant de sa renommée utilisait de telles techniques (et que cela se venait à s'apprendre), cela pourrait nuire à leur image de marque. +Employer des techniques douteuses n'est pas puni par la loi mais peut être vu du public comme socialement inacceptable [@soyez_turc_nodate]; si une entreprise dépendant de sa renommée utilisait de telles techniques (et que cela se venait à s'apprendre), cela pourrait nuire à son image de marque. La question juridique du scraping est complexe. C'est un sujet décrié par les grandes entreprises [@bode_court_2019], qui semble commencer à être réglementé [@igor_us_2018]. La règle d'or semble être de faire preuve de bon sens en ne causant aucun tort à l'entreprise fournissant des données[^8]. Pour pouvoir le vérifier, un contrôle total de l'application est nécessaire, ce qui est uniquement possible avec un framework. @@ -110,11 +113,11 @@ Quelques applications d'un tel logiciel sont proposées ci-dessous. Cette liste * **Téléchargement de documents** : L'utilisation la plus normale d'Inari rentre dans la capture et le téléchargement d'informations sous forme de documents. Cela consiste principalement à visiter un site, télécharger les documents et éventuellement traiter ces documents pour y récupérer une information en particulier. * **Remplissage de documents** : A l'inverse de récupérer des informations, Inari pourrait très bien remplir des formulaires répétitifs, comme la prise de rendez-vous, des formulaires de contact, etc. * **Traitement de documents** : Il est possible de se servir d'Inari ni pour la collecte de documents, ni pour le remplissage de formulaires, mais pour traiter rapidement des documents. Par exemple, récupérer une information particulière dans de nombreux documents similaires. Si par exemple $2000$ documents contenaient des informations au même endroit, il serait possible avec Inari d'itérer sur chaque document pour récupérer l'information en question. -* **Activités illicites** : Inari pourrait théoriquement, au vu de sa capacité à être distribué, être utilisé pour empêcher à un site d'être accédé. Il suffirait pour cela de lancer un grand nombre de connexions sur un site. On parle alors de (+DDoS_a). Cette utilisation n'est évidemment ni cautionnée par l'auteur de ce travail, ni recommandée du point de vue légal ou du sens commun. A titre de rappel, les (+DDoS_a) sont punis par la loi. +* **Activités illicites** : Inari pourrait théoriquement, au vu de sa capacité à être distribué, être utilisé de manière malveillante pour empêcher d'accéder à un site. Il suffirait pour cela de lancer un grand nombre de connexions sur un site. On parle alors de (+DDoS_a). Cette utilisation n'est évidemment ni cautionnée par l'auteur de ce travail, ni recommandée du point de vue légal ou du sens commun. A titre de rappel, les (+DDoS_a) sont punis par la loi. ## Bilan -Le choix d'un logiciel de scraping n'est pas évident; il demande une réflexion certaine afin de ne pas faire les mêmes erreurs que d'autres. Peu importe la solution choisie, une vigilance accrue doit être apportée pour respecter les règles, quelles qu'elles soient. Les services de scraping étant de façon générale mal vus par les entreprises, ces dernières n'hésitent pas à saisir la justice pour faire arrêter le scraping [@rummler_facebook_nodate] [@schaal_ryanair_2018] de leur site. +Le choix d'un logiciel de scraping n'est pas évident; il demande une réflexion certaine afin de ne pas reproduire les mêmes erreurs que d'autres. Peu importe la solution choisie, une vigilance accrue doit être apportée pour respecter les règles, quelles qu'elles soient. Les services de scraping étant de façon générale mal vus par les entreprises, ces dernières n'hésitent pas à saisir la justice pour faire arrêter le scraping [@rummler_facebook_nodate] [@schaal_ryanair_2018] de leur site. Les frameworks ne sont pas parfaits : de complexité variable et difficilement utilisables de surcroît par les utilisateurs n'étant pas familiers avec la programmation ou l'informatique en général. Ils permettent en outre un contrôle accru de la récupération des données, ce qui permet d'éviter les problèmes cités plus haut. diff --git a/rapport/text/4-conception.md b/rapport/text/4-conception.md index c05b89b873b812d5748fe8db5cbfc0c34f1946ac..ef9c570751b927fe38c7bcda03ecc7db354d4711 100644 --- a/rapport/text/4-conception.md +++ b/rapport/text/4-conception.md @@ -18,7 +18,7 @@ Plusieurs critères permettent de garantir un fonctionnement optimal lors de la * **Distributivité** : Les différents workflow doivent être distribués, c'est-à-dire répartis sur plusieurs machines différentes. De cette façon, il est possible d'accélérer le téléchargement de données et de répartir la charge sur plusieurs machines. * **Parallélisme** : Pour accélérer le téléchargement de données, il est encore possible d'utiliser les différents coeurs du processeur de chaque machine accueillant Inari. * **Simple d'utilisation** : Un utilisateur sans formation préalable doit être en mesure de se servir de ce logiciel. -* **Robustesse** : Le logiciel doit être capable de résister aux pannes. Par exemple, si un client Inari devait à s'arrêter, il devrait être possible de le remettre en état pour relancer les tâches que le client était en train de faire. +* **Robustesse** : Le logiciel doit être capable de résister aux pannes. Par exemple, si un client Inari venait à s'arrêter, il devrait être possible de le remettre en état pour relancer les tâches que le client était en train de faire. * **Modulaire** : Le logiciel doit être en mesure de fonctionner sur n'importe quel site, peu importe sa technologie. Par exemple, le système doit être compatible avec un site fonctionnant essentiellement avec javascript. Chacun de ces critères est discuté en détail dans ce chapitre. @@ -100,7 +100,7 @@ Inari a été conçu de façon à pouvoir résister aux erreurs le mieux possibl Par exemple, le contrôleur Inari n'est pas essentiel au fonctionnement de l'application une fois que ce dernier a transmis aux clients Inari leurs tâches respectives. Un client Inari peut subir une panne : le contrôleur est en mesure de renvoyer les tâches d'un client Inari pour reprendre là où le client en était. Enfin, l'interface de contrôle web est complètement détachée du reste du projet : même si elle tombe en panne, aucun composant ne sera impacté. L'exécution des tâches est elle aussi prévue pour résister aux pannes : chaque client Inari signale chaque tâche comme terminée ou en échec. Si trop d'échecs surviennent sur un client, le contrôleur Inari ordonne automatiquement son arrêt temporaire. L'arrêt se caractérise comme une pause de cinq minutes, le temps au client Inari de terminer les tâches en cours. Cette pause de cinq minutes est particulièrement utile lors du ralentissement d'un site web : si le site sur lequel Inari tente de récupérer des documents commence à ralentir, cela s'observe sous forme d'une vague d'erreurs au niveau des tâches. Le contrôleur bloque alors les clients Inari, le temps que le site web retrouve ses performances. -Enfin, le parallélisme des tâches amène lui aussi une robustesse : chaque exécution de workflow est isolée des autres, ce qui permet d'éviter des effets de bords. Si un workflow devait à s'arrêter en cours de route, il serait signalé au contrôleur, renvoyé au client et réexécuté dès qu'un des coeurs est disponible. +Enfin, le parallélisme des tâches amène lui aussi une robustesse : chaque exécution de workflow est isolée des autres, ce qui permet d'éviter des effets de bords. Si un workflow devait s'arrêter en cours de route, il serait signalé au contrôleur, renvoyé au client et réexécuté dès qu'un des coeurs est disponible. ### Fonctionnement du workflow @@ -151,13 +151,13 @@ La première partie du pointeur correspond ici à l'ID unique du module. C'est c Les workflow sont répartis en plusieurs catégories, notamment les scrapers simples et ceux complexes. Un scraper correspond à un workflow. Cette section s'intéresse aux différentes catégories de scrapers. -## Catégorie un : Scrapers simples +## Catégorie une : Scrapers simples -Les scrapers simples correspondent aux workflow où la récupération de documents se limite à consulter une page web et où le traitement (clicks, remplissages de formulaires) est minimal ou inexistant. Cela correspond de manière générale à tous les sites ne dépendant pas de JavaScript pour naviguer. +Les scrapers simples correspondent aux workflows où la récupération de documents se limite à consulter une page web et où le traitement (clicks, remplissages de formulaires) est minimal ou inexistant. Cela correspond à tous les sites ne dépendant pas de JavaScript pour naviguer. ### Application pratique : FAO Genève -La FAO Genève est un site de la République et Canton de Genève, et propose des documents relatant d'avis divers et variés. Les documents sont disponibles sous forme de liste, où chaque document peut être téléchargé en cliquant sur un bouton. Le seul traitement nécessaire est de passer de page en page de façon à récupérer d'anciens documents. +La FAO Genève est un site de la République et Canton de Genève, lequel publie des documents, notamment des actes officiels, et des avis administratifs ainsi que judiciaires. Les documents sont disponibles sous forme de liste, où chaque document peut être téléchargé en cliquant sur un bouton. Le seul traitement nécessaire est de passer de page en page de façon à récupérer d'anciens documents. Pour récupérer les documents, la marche à suivre est la suivante : lancer un navigateur, puis le faire naviguer sur le site web de la FAO Genève (https://fao.ge.ch). Là, un captcha est à résoudre, mais qui peut être évité en remplaçant dans l'URL `captcha` par login. C'est ce qui est alors fait. Une fois le captcha détourné, on accède à la liste des fichiers récents. Il faut alors exécuter une XPath pour retrouver l'URL de téléchargement de chaque document : on simule ensuite ces clics pour récupérer les documents en une seule fois. Le traitement principal consiste donc à aller sur le site, contourner le captcha et détecter les boutons de téléchargement, ce que fait le workflow Inari. @@ -165,7 +165,7 @@ Le traitement ci-dessus correspond à une page. Pour télécharger 200 pages, il ## Catégorie deux : Scrapers complexes -Les scrapers complexes correspondent aux workflow où la récupération de documents demande un traitement conséquent sur la page comme remplir un ou plusieurs formulaires. De manière générale, cela correspond soit aux sites possédant des formulaires à remplir, soit aux sites où la navigation est assurée par Javascript. Dès lors qu'il est nécessaire de faire du prétraitement pour atteindre chaque document, le workflow est considéré comme complexe. +Les scrapers complexes correspondent aux workflows où la récupération de documents demande un traitement conséquent sur la page comme remplir un ou plusieurs formulaires. De manière générale, cela correspond soit aux sites possédant des formulaires à remplir, soit aux sites où la navigation est assurée par Javascript. Dès lors qu'il est nécessaire de faire du prétraitement pour atteindre chaque document, le workflow est considéré comme complexe. ### Application pratique : Swiss-Impex @@ -203,7 +203,7 @@ Certains sites ne rentrent pas entièrement dans l'une des deux catégories : un ### Application pratique : Registre du Commerce -Le registre du commerce est un exemple de site nécessitant une attention particulière au nombre de connexions simultanées. Ce site recense les extraits d'entreprises de tout le canton de Genève. +Le Registre du Commerce est un exemple de site nécessitant une attention particulière au nombre de connexions simultanées. Ce site recense les extraits d'entreprises de tout le canton de Genève. Les documents sur le site sont générés à la demande : afin d'éviter de surcharger le service, il est donc nécessaire de limiter le nombre de documents générés à la fois en limitant le nombre de connexions simultanées. De plus, le site ne propose la génération que d'un document à la fois. Il n'est pas possible de générer un document pour tous les résultats. ## Bilan diff --git a/rapport/text/5-mesures.md b/rapport/text/5-mesures.md index 3dd8f02a0c05a74d32f92d774dced86209043e59..d90653bf1b6f029e2baa6570efb532a21fac8ee9 100644 --- a/rapport/text/5-mesures.md +++ b/rapport/text/5-mesures.md @@ -1,8 +1,8 @@ # Performances d'Inari -Ce chapitre traite des performances d'Inari. Ces dernières donnent non seulement un aperçu de la vitesse de traitement des documents, mais permettent aussi de calculer un pourcentage de gain de performance par rapport à un humain. Grâce à ces deux mesures, il est non seulement possible d'estimer le temps nécessaire au téléchargement d'un bloc de documents, mais le temps gagné par rapport à une opération manuelle (c'est à dire opérée par un humain). +Ce chapitre traite des performances d'Inari. Ces dernières donnent non seulement un aperçu de la vitesse de traitement des documents, mais permettent aussi de calculer un pourcentage de gain de performance par rapport à un humain. Grâce à ces deux mesures, il est non seulement possible d'estimer le temps nécessaire au téléchargement d'un bloc de documents, mais également le temps gagné par rapport à une opération manuelle (c'est-à-dire opérée par un humain). -Plusieurs sources de données sont analysées : chaque source de documents propose une façon différente de récupérer le document. Une première série de mesures seront faites tout d'abord sur la (+FAO_a) du canton de Genève. Une seconde série de mesures sera effectuée sur le service Swiss-Impex. Une dernière sera lancée sur le service (+RC_a) du canton de Genève. +Plusieurs sources de données sont analysées : chaque source de documents propose une façon différente de récupérer le document. Une première série de mesures seront faites tout d'abord sur la (+FAO_a) du canton de Genève. Une seconde série de mesures sera effectuée sur le service Swiss-Impex. Une dernière sera lancée sur le (+RC_a) du canton de Genève. Le but de ce chapitre est de répondre à deux questions : @@ -13,7 +13,7 @@ L'intégralité des mesures effectuées sont disponibles [sur le git associé au ## FAO Genève -La (+FAO_a) Genève publie régulièrement durant la semaine une multitude de documents allant de l'avis de police à l'annonce de démolition. Toute personne peut obtenir par ce biais des informations la concernant. A la différence de courrier envoyés aux intéressés (annonce par courrier), la (FAO_a) fonctionne par publication : il est donc théoriquement nécessaire à chacun de rester informé en permanence via ce site. +La (+FAO_a) Genève publie régulièrement durant la semaine une multitude de documents allant de l'avis de police à l'annonce de démolition. Toute personne peut obtenir par ce biais des informations la concernant. A la différence de courriers envoyés aux intéressés (annonce par courrier), la (+FAO_a) fonctionne par publication : il est donc théoriquement nécessaire à chacun de rester informé en permanence des publications intervenant ce site. ### Théorie @@ -90,7 +90,7 @@ En se basant sur les résultats présentés dans l'expérience A, l'expérience L'expérience C révèle l'avantage de la distribution de calcul. Théoriquement, on s'attend à diviser par deux le temps de traitement par rapport à l'expérience A, puisque l'on passe de deux coeurs à quatre. Le temps nécessaire au téléchargement devrait alors théoriquement être environ égal à $240$ secondes. Toutefois, l'expérience C montre un temps de téléchargement constant plus bas, à $175$ secondes, soit une vitesse à 5.7 documents par seconde (ou 1.42 documents par seconde par coeur). Cela peut s'expliquer de plusieurs façons : tout d'abord, chaque machine a un nombre fini de ressources : il est donc plus intéressant de répartir la charge sur plusieurs machines que sur plusieurs coeurs de la même machine. De cette façon, leur charges respectives sont réduites. Une autre explication serait liée à la façon dont les serveurs web fonctionnent. Si plusieurs ordinateurs se connectent, le serveur peut éventuellement comprendre cela comme du trafic légitime. Dans tous les cas, l'expérience C montre un gain de performance de facteur 17.14, soit un pourcentage de $1614\%$. -L'expérience D semble marquer la fin de l'observation jusqu'ici faite du gain linéaire entre le nombre de coeurs totaux et le temps nécessaire au téléchargement des documents. En effet, en reprenant l'expérience B, il faut $120$ secondes à huit coeurs pour télécharger $1000$ documents, soit 8.3 documents par seconde ou 0.51 documents par seconde par coeur. L'expérience D prendrait alors idéalement deux fois moins de temps que l'expérience B, c'est-à-dire $60$ secondes. En pratique, l'expérience D montre que l'on en prend plutôt $100$ secondes. Ce temps semble trop éloigné de la valeur théorique de 60 secondes. Le modèle jusqu'ici présumant d'une diminution linéaire du temps par rapport au nombre de coeurs est donc invalide. Un autre modèle est estimé à partir des mesures ci-présentes à la fin de cette section. +L'expérience D semble marquer la fin de l'observation jusqu'ici faite du gain linéaire entre le nombre de coeurs totaux et le temps nécessaire au téléchargement des documents. En effet, en reprenant l'expérience B, il faut $120$ secondes à huit coeurs pour télécharger $1000$ documents, soit 8.3 documents par seconde ou 0.51 documents par seconde par coeur. L'expérience D prendrait alors idéalement deux fois moins de temps que l'expérience B, c'est-à-dire $60$ secondes. En pratique, l'expérience D montre que l'on en prend plutôt $100$ secondes. Ce temps semble trop éloigné de la valeur théorique de 60 secondes. Le modèle jusqu'ici présumant d'une diminution linéaire du temps par rapport au nombre de coeurs est donc invalide. Un autre modèle est estimé à partir des mesures présentes à la fin de cette section. L'expérience D montre un gain de performance de facteur 7.5, soit un pourcentage de $650\%$. Ces valeurs sont plus basses que les précédentes. Cette diminution devrait aussi apparaître dans les mesures suivantes. L'expérience E semble confirmer que le modèle linéaire n'est pas adéquat. En effet, on observe un facteur de gain de performance de $8.57$, soit $757\%$ de gain. La théorie du modèle linéaire indique que dans la configuration de l'expérience E (c'est-à-dire 10 machines, deux coeurs) on arriverait à un temps de traitement de 35 secondes. 75 secondes sont nécessaires pour télécharger les 1000 documents, soit une vitesse de 13 documents par seconde, ou 0.65 documents par seconde par coeur. @@ -194,38 +194,38 @@ Il faut selon les mesures effectuées, $9800$ secondes pour télécharger $4092$ ### Bilan -La récupération des documents sur Swiss-Impex est, au vu des mesures, plus longue que sur la FAO Genève. Toutefois, Inari semble tout à fait supporter la montée en charge. Pour reprendre les questions posées en début de chapitre : +La récupération des documents sur Swiss-Impex est, au vu des mesures, plus longue que sur la FAO Genève. Toutefois, Inari semble tout à fait apte à supporter la montée en charge. Pour reprendre les questions posées en début de chapitre : -* Est-ce que l'automatisation de la récupération des documents est plus rapide que le téléchargement des documents un par un ? Bien que les résultats ne soient pas aussi rapides que ceux du site précédent, on arrive malgré tout à des résultats plus rapides qu'un être humain. La réponse est donc oui. Malgré les statistiques hétérogènes, Inari apporte une fiabilité qu'un être humain ne peut apporter sur le long terme. Même quand le pourcentage de performance gagné semble faible par rapport à d'autres pourcentages, Inari continue à traiter ces documents, même suite à une erreur, sans arrêt et est capable de travailler 24 heures sur 24, 7 jours sur 7, en reprenant les tâches échouées. Un humain ne peut apporter ces performances et seront impactés dans leur travail s'ils devaient faire le travail d'Inari. -* Est-ce que la distribution des tâches de téléchargement accélère le traitement des tâches ? Oui, mais pas linéairement. Autrement dit, un observe par exemple qu'à 80 workers simultanés, la fréquence de téléchargement se rapproche de celle d'un humain. +* Est-ce que l'automatisation de la récupération des documents est plus rapide que le téléchargement des documents un par un ? Bien que les résultats ne soient pas aussi rapides que ceux du site précédent, on arrive malgré tout à des résultats plus rapides qu'un être humain. La réponse est donc oui. Malgré les statistiques hétérogènes, Inari apporte une fiabilité qu'un être humain ne peut apporter sur le long terme. Même quand le pourcentage de performance gagné semble faible par rapport à d'autres pourcentages, Inari continue à traiter ces documents, même suite à une erreur, sans arrêt et est capable de travailler 24 heures sur 24, 7 jours sur 7, en reprenant les tâches échouées. Un humain ne peut apporter ces performances et serait impacté dans son travail s'il devait faire le travail d'Inari. +* Est-ce que la distribution des tâches de téléchargement accélère le traitement des tâches ? Oui, mais pas linéairement. Autrement dit, on observe par exemple qu'à 80 workers simultanés, la fréquence de téléchargement se rapproche de celle d'un humain. ## Registre du Commerce (RC) -Le site du Registre du Commerce de Genève recense toute les entreprises enregistrées au Registre du Commerce du canton de Genève. Le site permet d'accéder aux extraits de toutes les entreprises. Chaque extrait contient les changements de statut de chaque entreprise, leurs changements de propriétaires, structure, etc. +Le site du Registre du Commerce de Genève recense toute les entreprises enregistrées dans ce canton. Le site permet de consulter l'extrait de chaque entreprise, lequel mentionne notamment le représentant, le siège social et le capital. Ces informations peuvent s'avérer particulièrement utiles pour des sites comme les sites de gestion du risque, de renseignements d'entreprise, d'analyse de solvabilité, etc. ### Théorie -Le site du Registre du Commerce rappelle la plateforme FAO Genève : aucun formulaire n'est à remplir, et il suffit de cliquer sur un lien pour obtenir un document. Toutefois, la difficulté se situe dans le fait que le registre du commerce bloque les requêtes d'extrait répétitives. Il s'agit donc de télécharger les documents du registre du commerce sans se faire bloquer. +Le site du Registre du Commerce rappelle la plateforme FAO Genève : aucun formulaire n'est à remplir, et il suffit de cliquer sur un lien pour obtenir un document. Toutefois, la difficulté se situe dans le fait que le Registre du Commerce bloque les requêtes d'extrait répétitives. Il s'agit donc de télécharger les documents du Registre du Commerce sans se faire bloquer. Pour tenter d'éviter le bloquage, les documents sont volontairement téléchargés moins vite, afin d'étaler la période de télécharger et donc d'éviter le bloquage. Un autre problème réside dans l'application elle-même : si trop de demandes sont faites à la fois, l'application générant les extraits du commerce cesse de fonctionner, faute de capacité. Il est donc difficile de télécharger les $48000$ documents sans déclencher un (+DDoS_a). Lors de la première mesure, consistant à télécharger les dix premières pages, le site a immédiatement montré des signes de lenteur caractéristiques d'un (+DDoS_a). La mesure a alors été immédiatement arrêtée. Le site du Registre du Commerce est donc un site non téléchargeable, à cause du risque de rendre le site inopérant. Cette application montre les effets néfastes qu'un logiciel tel qu'Inari peut avoir sur un service. Il est donc particulièrement important pour l'utilisateur décidant de télécharger un site de faire attention à la vitesse de traitement des documents. Après examination, rien ne semble permettre une génération des documents de groupe, c'est-à-dire une génération de nombreux documents d'un coup plutôt que de les demander un par un. Or, lancer un trop grand nombre de téléchargement peut amener à un arrêt du site de plusieurs heures. -Le droit Suisse prévoit une peine de privation de liberté d'un an ou plus ou d'une peine pécuniaire dans ce genre de cas. +A noter que le droit suisse prévoit une peine de privation de liberté d'un an ou plus ou d'une peine pécuniaire dans ce genre de cas. -Au vu des constats, il est impossible dans le cas de ce site de répondre aux questions posées en début de chapitre. +Au vu de ces constats, il est impossible de répondre aux questions posées en début de chapitre pour ce site. ## Bilan global des résultats -Pour répondre aux questions initialement posées, la majorité des sites analysés permettent non seulement d'aller plus vite qu'un être humain, mais la parallélisation permet d'accélérer encore plus la vitesse de téléchargement. Au-delà de répondre aux deux questions posées dans l'introduction de ce chapitre, il est possible de tirer certaines conclusions supplémentaires. +Pour répondre aux questions initialement posées, la majorité des sites analysés permettent non seulement d'aller plus vite qu'un être humain, mais la parallélisation permet d'accélérer davantage la vitesse de téléchargement. Au-delà de répondre aux deux questions posées dans l'introduction de ce chapitre, il est possible de tirer certaines conclusions supplémentaires. Tout d'abord, il est montré que le modèle prétendant que la vitesse de téléchargement est linéaire aux nombre de workers est erroné. La vitesse atteint un seuil maximum de vitesse, variable à chaque site web (et pouvant varier sur le même site web en fonction de nombreux facteurs comme la charge du site lors du téléchargement, le nombre de serveurs disponibles, la bande passante des workers, etc.). De façon générale, le modèle semble suivre la forme d'une parabole convexe, où le sommet correspond au nombre idéal de coeurs pour le site sur lequel on télécharge les documents. Il a aussi été montré que dans certains cas (comme celui du Registre du Commerce), il n'était pas possible de télécharger les documents sans causer des problèmes au fournisseur du site. Le risque de mise en panne était trop grand. -Enfin, l'infrastructure Inari a pu résister à la montée en charge sans ralentissement véritable. Les ralentissements sur les récupération à long terme montraient une lenteur de la part des sites hébergeant les données, mais pas de l'infrastructure Inari. Cette infrastructure semble donc résister aux montées en charge. +Enfin, l'infrastructure Inari a pu résister à la montée en charge sans ralentissement véritable. Les ralentissements sur les récupérations à long terme montraient une lenteur de la part des sites hébergeant les données, mais pas de l'infrastructure Inari. Cette infrastructure semble donc résister aux montées en charge. \pagebreak diff --git a/rapport/text/6-conclusion.md b/rapport/text/6-conclusion.md index d9e7b2f609a9df1e7c094bd962686c0a5f291f59..346954fb0916144b3b9d19e11f2de6ce411d8a39 100644 --- a/rapport/text/6-conclusion.md +++ b/rapport/text/6-conclusion.md @@ -12,6 +12,6 @@ Inari propose actuellement le téléchargement de documents de plusieurs sites; Le scraping est un sujet présentant bien des difficultés difficilement maîtrisables : la plupart des problèmes, tels que les ralentissements ou les changements d'apparence du site sont liés au prestataire de service. Ce sont des problèmes complexes mais atténuables en changeant par exemple les réglages des clients Inari. -Le travail semble répondre au problème initialement observé, de façon plus performante qu'un être humain. Il serait maintenant intéressant de le déployer dans une entreprise afin de voir la capacité d'Inari à être véritablement utilisée. Il serait aussi intéressant d'ajouter plusieurs outils au système, plus particulièrement l'ajout de détournement de captchas sans passer par une société tierce, ce qui permettrait de compléter la suite d'outils proposés. Une autre fonctionnalité intéressante à ajouter serait d'ajouter un système de mesure détectant immédiatement les ralentissements du site sur lequel les documents sont téléchargés. Le système actuel ne détecte le ralentissement qu'à posteriori : le nouveau système permettrait de prévenir les ralentissements juste avant qu'ils arrivent. +Le travail semble répondre au problème initialement observé, de façon plus performante qu'un être humain. Il serait maintenant intéressant de le déployer dans une entreprise afin de voir la capacité d'Inari à être véritablement utilisée. Il serait aussi intéressant d'ajouter plusieurs outils au système, plus particulièrement l'ajout de détournement de captchas sans passer par une société tierce, ce qui permettrait de compléter la suite d'outils proposés. Une autre fonctionnalité intéressante à prévoir serait d'inclure un système de mesure détectant immédiatement les ralentissements du site sur lequel les documents sont téléchargés. Le système actuel ne détecte le ralentissement qu'à posteriori : le nouveau système permettrait de prévenir les ralentissements juste avant qu'ils arrivent. \pagebreak \ No newline at end of file diff --git a/rapport/text/7-annexes.md b/rapport/text/7-annexes.md index ff1e73ea06d2552561ccd3a03cbc0aea8fe1fada..ae475912303c779d1faee80eb1f40d5ce35e3fe7 100644 --- a/rapport/text/7-annexes.md +++ b/rapport/text/7-annexes.md @@ -2,7 +2,7 @@ \newappendix{Installation d'un client Inari} -Pour installer le client Inari, certains logiciels sont prérequis. Il est recommandé d'utiliser Ubuntu ou Debian. La liste des logiciels a installer est la suivante : +Pour installer le client Inari, certains logiciels sont prérequis. Il est recommandé d'utiliser Ubuntu ou Debian. La liste des logiciels à installer est la suivante : * Python 3.7 (la 3.8 est recommandée, mais les commandes ci-dessous utiliseront 3.7) * Git