Audit de site interne

Bonjour,

J’aimerais réaliser l’audit de site d’un site en interne donc qui ne necessite pas de passer par le proxy.

Voici le lien : http://(...)reseau-local.dgfip/ or lorsque je veux effectuer un audit de site le formulaire m’affiche dans un bouton rouge Please enter a valid URL (ex: http(s)://example.com).

Comment je peux faire y a-t-il une configuration à faire ?

Merci

Bonjour @vivileds,

C’est effectivement une limitation du formulaire d’ajout d’un contrat de site
qui permet d’ajouter actuellement uniquement des TLD officiels (.com, .net, .job, .paris, …) et des adresses IP. Dans la prochaine release localhost sera aussi utilisable.


Arrives-tu à faire des audits de page
sur cette URL du réseau local http://(…).reseau-local.(…)/ ?

Dans ce cas, tu peux utiliser les audits de scénario en générant au préalable la liste des URL à crawler. Si tu choisi cette solution, nous pourrons d’aider trouver à un crawler et ensuite à passer d’un fichier plat (1 URL par ligne) à un fichier JSON valide.


Si cette URL du réseau local http://(…).reseau-local.(…)/ est aussi consultable via son adresse IP (mais ce n’est peut-être pas le cas), tu peux alors utiliser un contrat de site sur cette IP.


Il existe une autre solution via la DB mais je n’arrive pas
à reproduire l’environnement réseau adapté pour tester.

Bonjour,

Merci de votre réponse, en effet l’audit de page avec l’adresse local fonctionne sans problème tout comme l’audit de scenario.

C’est un site qui nécessite une connexion es-ce que le crawler pourra passer dessus dans le cas où l’on génère la liste d’URL ?

Oui le site est accessible par son adresse IP, mais lorsque j’effectue un audit de site j’ai une erreur toujours la meme

13-06-2016 09:36:44:780 67984 DEBUG org.asqatasun.crawler.processor.AsqatasunWriterProcessor  - should process? http://192.168.82.78/robots.txt with mime type text/html;charset=utf-8 true
13-06-2016 09:36:44:780 67984 DEBUG org.asqatasun.crawler.processor.AsqatasunWriterProcessor  - inner process? http://192.168.82.78/robots.txt
13-06-2016 09:36:44:782 67986 DEBUG org.asqatasun.crawler.CrawlerImpl  - Unreachable resource http://192.168.82.78/robots.txt : 403
13-06-2016 09:36:45:700 68904 DEBUG org.asqatasun.crawler.framework.AsqatasunFetchHTTP  - curi.isPrerequisite() false
13-06-2016 09:36:45:700 68904 DEBUG org.asqatasun.crawler.framework.AsqatasunFetchHTTP  - curi.getContentType() text/html;charset=utf-8
13-06-2016 09:36:45:700 68904 DEBUG org.asqatasun.crawler.framework.AsqatasunFetchHTTP  - checkMidfetchAbort false
13-06-2016 09:36:45:714 68918 DEBUG org.asqatasun.crawler.processor.AsqatasunWriterProcessor  - should process? http://192.168.82.78/ with mime type text/html;charset=utf-8 true
13-06-2016 09:36:45:715 68919 DEBUG org.asqatasun.crawler.processor.AsqatasunWriterProcessor  - inner process? http://192.168.82.78/
13-06-2016 09:36:45:715 68919 DEBUG org.asqatasun.crawler.CrawlerImpl  - Unreachable resource http://192.168.82.78/ : 403
13-06-2016 09:36:46:666 69870 DEBUG org.asqatasun.crawler.framework.AsqatasunCrawlJob  - CrawlJob changes state to STOPPING
13-06-2016 09:36:46:667 69871 DEBUG org.asqatasun.crawler.framework.AsqatasunCrawlJob  - CrawlJob changes state to EMPTY
13-06-2016 09:36:48:267 71471 DEBUG org.asqatasun.crawler.framework.AsqatasunCrawlJob  - CrawlJob changes state to FINISHED
13-06-2016 09:36:48:672 71876 DEBUG org.asqatasun.crawler.CrawlerImpl  - remove Orphan related contents  0 elements
13-06-2016 09:36:48:690 71894 DEBUG org.asqatasun.crawler.CrawlerImpl  - remove Orphan SSPs  0 elements
13-06-2016 09:36:48:768 71972 DEBUG org.asqatasun.service.CrawlerServiceImpl  - Number Of SSP From WebResource http://192.168.82.78/ : 2
13-06-2016 09:36:48:768 71972 DEBUG org.asqatasun.service.CrawlerServiceImpl  - Set audit to ssp from  0 to 20
13-06-2016 09:36:48:771 71975 DEBUG org.asqatasun.service.CrawlerServiceImpl  - Retrieving  20 SSP took 3 ms
13-06-2016 09:36:48:853 72057 DEBUG org.asqatasun.service.CrawlerServiceImpl  - Persisting  20 SSP took 82 ms
13-06-2016 09:36:48:862 72066 DEBUG org.asqatasun.service.CrawlerServiceImpl  - Number Of Related Content From WebResource?http://192.168.82.78/ : 0
13-06-2016 09:36:48:932 72136 WARN  org.asqatasun.service.AuditServiceImpl  - Audit has no content
13-06-2016 09:36:49:014 72218 WARN  org.asqatasun.service.command.AuditCommandImpl  - Audit status isERROR whileCONTENT_ADAPTING was required
13-06-2016 09:36:49:043 72247 WARN  org.asqatasun.service.command.AuditCommandImpl  - Audit status isERROR whilePROCESSING was required
13-06-2016 09:36:49:069 72273 WARN  org.asqatasun.service.command.AuditCommandImpl  - Audit status isERROR whileCONSOLIDATION was required
13-06-2016 09:36:49:071 72275 WARN  org.asqatasun.service.command.AuditCommandImpl  - Audit status isERROR whileANALYSIS was required

Par contre l’audit de page fonctionne très bien en passant par l’IP.

Merci

Si le site nécessite une authentification, tu ne pourra pas utiliser l’audit de site. Le code HTTP 403 retourné par le serveur du site est caractéristique du fait que le crawler ne passe pas l’authentification. La seule solution est donc l’audit de scénario.

Quel type d’authentification est utilisée ?

  • via une formulaire dans une page HTML (comme Asqatasun) ?
  • via une authentification HTTP (pop pup du navigateur) ? (cf image ci-dessous)

Bonjour,

Merci pour votre aide j’ai reussi à configurer et l’audit de site interne fonctionne.

Encore un grand merci à votre communauté :heart:

@vivileds, pourrais-tu nous en dire un peu plus sur les réglages que tu as fait
pour pouvoir réaliser cet audit de site ? à priori, sur un site nécessitant une authentification ? Tu as fait des modifs dans le asqatasun.conf ?

une petite :dizzy: sur GitHub ou un fork serait top ! :wink:

Pour l’audit de site interne j’ai remplacé dans les classes CreateUserFormValidator, CreateContractFormValidator et SignUpFormValidator, l’appel au constructeur du org.apache.commons.validator.routines.UrlValidator en ajoutant un RegexValidator comme ceci :

UrlValidator urlValidator = new UrlValidator(schemes, new RegexValidator(".*"), UrlValidator.ALLOW_2_SLASHES);

Ce contournement permet, dans la page de gestion des contrats, de valider n’importe quelle URL.

J’ai une contrainte réseau : pour accéder aux sites externes il faut passer par un proxy mais pour les sites internes il ne faut pas l’utiliser. Cela se résout via proxyExclusionUrl pour les audits de pages.
Mais pour les audits de site, le crawler effectue tout d’abord une requête au serveur DNS afin de savoir si l’hôte distant est atteignable. Cependant le serveur DNS interne ne retourne de réponse positive que pour les sites internes ce qui provoque une erreur de domaine non résolvable pour les sites externes.

J’ai donc investigué dans le code de heritrix pour en déduire que le bean fetchProcessors lancent des processors avant le fetchHttp.
Le processors preconditions transforme les URLs http / https en dns: si celles-ci n’ont pas été résolues puis le processors fetchDns envoie réellement une requête au serveur DNS.
Pour résoudre mon problème j’ai donc commenté les lignes faisant références à ces deux beans. Le premier bean actif de la liste est maintenant le fetchHttp :

<bean id="fetchProcessors" class="org.archive.modules.FetchChain">
    <property name="processors">
        <list>
            <!-- recheck scope, if so enabled... -->
            <!--<ref bean="preselector"/>-->
            <!-- ...then verify or trigger prerequisite URIs fetched, allow crawling... -->
            <!-- <ref bean="preconditions"/> -->
            <!-- ...fetch if DNS URI... -->
            <!-- <ref bean="fetchDns"/>  -->
            <!-- ...fetch if HTTP URI... -->
            <ref bean="fetchHttp"/>
            <!-- ...extract oulinks from HTTP headers... -->
            <ref bean="extractorHttp"/>
            <!-- ...extract oulinks from HTML content... -->
            <ref bean="extractorHtml"/>
            <!-- ...extract oulinks from CSS content... -->
            <ref bean="extractorCss"/>
            <!-- ...extract oulinks from Javascript content... -->
            <!--ref bean="extractorJs"/-->
            <!-- ...extract oulinks from Flash content... -->
            <!--ref bean="extractorSwf"/-->
        </list>
    </property>
</bean>

Si je comprend bien, tu as fait des modifications dans le code source, compilé avec maven, installé le nouveau .war et relancé tomcat… :sparkles: :soccer:

C’est possible de commiter ces modifications (1 commit par fonctionnalité) dans une branche sur ton fork Github ? Histoire de conserver ces modifications… :slight_smile:

Tu as regardé l’option bypassUrlCheck dans asqatasun.conf pour le problème de requête au DNS avant de faire les modifications du code source ?

Hello @vivileds

Une suggestion : dans la version 4.0.2 qui vient de sortir, on a enlevé le check sur les URLs “à la localhost”.

Ça vaudrait peut-être le coup de jeter un oeil à l’image Docker voir si ça te convient ?

ping @vivileds :telephone_receiver:

Bonjour,

L’option bypassUrlCheck ne résoud pas le problème de requête DNS. Si je comprend bien cette option, cela désactive le check si l’url spécifié est atteignable au niveau de Asqatasun et non au niveau du Crawler. Cette option n’est pas utilisé dans le configuration du Crawler. Dans les fichiers Spring, je ne vois qu’une utilisation de la variable dans asqatasun-resources/src/main/resources/conf/context/beans-processor.xml qui l’injecte dans la classe org.asqatasun.util.http.HttpRequestHandler or cette classe n’est pas utilisé par le Crawler si je ne me trompe pas.

Les modifications se trouvent à cette adresse : https://github.com/bureau-si1a-soda/Asqatasun/tree/dns-skip-and-custom-domain

Cordialement

merci @vivileds pour la contribution

@koj et @mfaure, un avis sur ces 2 commits ?