Récuperer des infos depuis des sites web - Page 2

Précédent
  • 1
  • 2
  1. CCM
     
    Merci, j'avais déjà mis la main sur ton code depuis ce post, j'avais commencer a réfléchir dessus :

    http://www.commentcamarche.net/forum/affich 2327323 web service recuperer des donnees web

    address = 'http://www.sebsauvage.net/rss/updates.xml'
    document = xml.dom.minidom.parse(urllib.urlopen(address))


    Il faudra rendre la variable "address" dynamique pour ne pas la rentrer en dur.
    Je doit faire en sorte ,que les url varient automatiquement en fonction des pages.
    J'ai une vingtaine de flux rss, chaque flux contient 5 articles.

    J'ai donc une centaine de liens. Et le lendemain, rebelotte, les url changent a nouveau...

    Il faut donc mettre au point un script qui va récupérer les liens de ma page web igoogle (contenant tout les flux RSS) , supprimer les liens inutile du type https://accounts.google.com/ServiceLogin?passive=1209600&continue=https%3A%2F%2Faccounts.google.com%2FManageAccount&followup=https%3A%2F%2Faccounts.google.com%2FManageAccount .... et ensuite passé a la moulinette chaque lien trouvé dans le script de récupération de données.
    Sachant qu'il existe pour un site , certain nom de champs
    for item in document.getElementsByTagName('item'):

    Qu'il n'existera plus sur un autre site.... Sa me donnera un code de 200 lignes environ si l'on compte tout les champs pour chaque sites? A repasé autant de fois qu'il y aura de lien sur ma page Igoogle.
    Soit j'ai tout faux, soit je vais dans la bonne direction ?
    0
  2. CCM
     
    J'ajoute que
    sur ma page igoogle, j'ai un lien par exemple qui pointe vers --> https://www.securityfocus.com/bid/28392
    Et le code source de cette même page le lien est le suivant --> href="#" onclick="return _del('7',25,'url=http://www.securityfocus.com/rss/vulnerabilities.xml')

    En gros je ne récupère pas les liens de mes pages !! :(
    0
  3. clic_droitSAsertAquoi
     
    Debut de mon code

    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
    import urllib, sys, xml.dom.minidom
    
    eeye = ‘https://www.beyondtrust.com/resources’
    red = ‘http://www.red-database-security.com/advisory/published_alerts.xml’
    securityfocus = ‘https://www.securityfocus.com/rss/vulnerabilities.xml’
    securitydotnews = ‘http://securitydot.net/rss/news.xml’
    securitydotvuln = ‘http://securitydot.net/rss/vulnerabilities.xml’
    securitylab = ‘https://www.securitylab.ru/_services/export/rss/notification.php’
    idefens = ‘http://labs.idefense.com/rss/intelligence.rss.php?type=vulnerabilities’
    zdi = ‘http://feeds.feedburner.com/ZDI-Published-Advisories’
    idg = ‘http://feeds.feedburner.com/idg_fr/rt2/virus-alertes/rss’
    
    doceeye = xml.dom.minidom.parse(urllib.u'rlopen(eeye))
    docred = xml.dom.minidom.parse(urllib.urlopen(red))
    docsecurityfocus = xml.dom.minidom.parse(urllib.urlopen(securityfocus))
    docsecuritydotnews = xml.dom.minidom.parse(urllib.urlopen(securitydotnews))
    docsecuritydotvuln = xml.dom.minidom.parse(urllib.urlopen(securitydotnews))
    docsecuritylab = xml.dom.minidom.parse(urllib.urlopen(securitylab))
    docidefens = xml.dom.minidom.parse(urllib.urlopen(idefens))
    doczdi = xml.dom.minidom.parse(urllib.urlopen(zdi))
    docidg = xml.dom.minidom.parse(urllib.urlopen(idg))
    
    
    
    for item in doceeye.getElementsByTagName('item'):
        titre = item.getElementsByTagName('title')[0].firstChild.data
        description = item.getElementsByTagName('desc')[0].firstChild.data
        date = item.getElementsByTagName('date')[0].firstChild.data
        produit = item.getElementsByTagName('product')[0].firstChild.data
        print "Titre: %s" % titre.encode('latin-1','replace')
    
    for item in docred.getElementsByTagName('item'):
        titre = item.getElementsByTagName('title')[0].firstChild.data
        description = item.getElementsByTagName('desc')[0].firstChild.data
        date = item.getElementsByTagName('date')[0].firstChild.data
        produit = item.getElementsByTagName('product')[0].firstChild.data
        print "Titre: %s" % titre.encode('latin-1','replace')
    
    for item in dosecurityfocus.getElementsByTagName('item'):
        titre = item.getElementsByTagName('title')[0].firstChild.data
        description = item.getElementsByTagName('desc')[0].firstChild.data
        date = item.getElementsByTagName('date')[0].firstChild.data
        produit = item.getElementsByTagName('product')[0].firstChild.data
        print "Titre: %s" % titre.encode('latin-1','replace')
    
    for item in docdotnews.getElementsByTagName('item'):
        titre = item.getElementsByTagName('title')[0].firstChild.data
        description = item.getElementsByTagName('desc')[0].firstChild.data
        date = item.getElementsByTagName('date')[0].firstChild.data
        produit = item.getElementsByTagName('product')[0].firstChild.data
        print "Titre: %s" % titre.encode('latin-1','replace')
    


    Voila mes premières ligne de python... qu'en pense tu?
    Où est-ce que tu va récupérer les noms des items? (ici j'ai mit des noms au pif (date product, title, desc ...)
    0
  4. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Grosso-modo, c'est ça.

    Mais c'est bien d'utiliser des tableaux plutôt que de recopier le code à chaque fois.

    Où est-ce que tu va récupérer les noms des items?

    Le nom des logiciels impactés ne fait pas partie de la norme RSS.
    RSS ne permet que de donner titre, résumé, lien, date (grosso-modo).

    Après chaque site de sécurité possède ses pages propre, avec des structures différentes pour chaque.
    Chaque site fait à sa sauce, et tu ne pourra pas faire autrement que de faire des développements spécialisés pour chaque site.

    (Chaque site diffuse peut-être un flux dans un format particulier, avec plus de détails. Ou pire: ils n'ont pas de flux plus détaillé: il faudra aller interpréter leurs pages HTML pour en extraire le contenu.)

    Bon courage !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. CCM
     
    RSS ne permet que de donner titre, résumé, lien, date (grosso-modo).

    Donc il faut que je laisse tomber les RSS, trop pauvre en informations.... Il faudrai que je me rende sur les sites directement.

    Après chaque site de sécurité possède ses pages propre, avec des structures différentes pour chaque.

    Le problème c'est comme je l'avais expliqué tout à l'heure, on ne connais pas les URL exacte pour extraire des informations.
    Les urls sont du type
    www.securityblablabla.com/vulnerabilite/xpsp2/bugNum97812.html 
    et varient a chaque page!
    Sa sous entendrais qu'il faut que j'aille consulter la page, que je prenne l'url, que je developpe un petit agent pour cette page spécifique et ce pour chaque page !! Non?
    0
  7. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Je suggère:
    Que tu utilise le flux RSS du site.
    Pour chaque nouvel ITEM: aller cherche la page HTML indiquée dans le LINK,
    puis extraire de cette page HTML ce qui t'intéresse (n°version, etc.)
    0
  8. -CCM- Messages postés 930 Date d'inscription   Statut Membre Dernière intervention   84
     
    Mes flux rss ne me retournent aucun LINK ! Je n'ai pas l'adresse des articles qui apparait dans la source de ma page contenant les flux.
    0
  9. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Si je prend celui-là:
    http://www.red-database-security.com/advisory/published_alerts.xml

    Je vois:

    <item>	  
      <title>SQL Injection in SYS.KUPV$FT_INT in Oracle 10g. Rel. 1</title>
      <pubDate>17 Jan 2006 18:00:00 GMT</pubDate>
    
      <link>http://www.red-database-security.com/advisory/oracle_sql_injection_kupv$$ft_int.html</link>
      </item>
    	<item>	  
      <title>Event 10053 logs TDE wallet password in cleartext</title>
      <pubDate>17 Jan 2006 13:00:00 GMT</pubDate>
      <link>http://www.red-database-security.com/advisory/oracle_tde_wallet_password.html</link>
      </item>
    
      <item>	  
      <title>Transparent Data Encryption stores key unencrypted in the SGA</title>
      <pubDate>17 Jan 2006 13:00:00 GMT</pubDate>
      <link>http://www.red-database-security.com/advisory/oracle_tde_unencrypted_sga.html</link>
      </item>


    Il y a bien des balises link.
    Idem pour les autres.

    Tu as peut-être entré LINK en majuscules ?
    0
    1. -CCM- Messages postés 930 Date d'inscription   Statut Membre Dernière intervention   84
       
      Il faudra m'expliquer comment tu fais pour afficher les link..
      moi je fais clic droit - afficher la source et j'ai ce genre de code html :
      <div id="m_1_b" class="modboxin"  style="height:px;"><script>var FEED1 = {has_entries : false,is_fetching: false,url:"http://www.red-database-security.com/advisory/published_alerts.xml",num_items:3};</script><div id="ftl_1_0" class="uftl"><a href='javascript:void(0)' title="" id='ft_1_0' class='fmaxbox' onclick='_IG_FR_toggle(1, 0)'></a><a href="http://www.red-database-security.com/advisory/oracle_sql_injection_kupv$$ft.html" title="">SQL Injection in SYS.KUPV$FT in Oracle 10g. Rel. 1</a><br><div id="fb_1_0" class='fpad fb' style='display:none'><div id=fb_1_1633096192306216205 >Informations temporairement indisponibles.</div></div></div><div id="ftl_1_1" class="uftl"><a href='javascript:void(0)' title="" id='ft_1_1' class='fmaxbox' onclick='_IG_FR_toggle(1, 1)'></a><a href="http://www.red-database-security.com/advisory/oracle_sql_injection_kupv$$ft_int.html" title="">SQL Injection in SYS.KUPV$FT_INT in Oracle 10g. Rel. 1</a><br><div id="fb_1_1" class='fpad fb' style='display:none'>


      Comment fait tu apparaitre les link ??? Merci
      0
  10. -CCM- Messages postés 930 Date d'inscription   Statut Membre Dernière intervention   84
     
    heuuu J'ai bien firefox .....
    Le code source de la page :

    http://www.red-database-security.com/advisory/published_alerts.xml 


    c'est :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Personnalisez votre page d&#39;accueil</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link this.base_iframe_url == ""; };this.is_zipped = is_zipped;};var remote_modules = [];_IG_RegisterOnloadHandler(function() {for (var i=0;i<remote_modules.length;i++){var rm=remote_modules[i];var          ........          href="/support/?ctx=web&hl=">Aide</a> - <a href="/intl/fr/about.html">À propos de Google</a> - <a href="https://www.google.com">iGoogle in English</a><br><br><br><br><span class="copyr">&copy;2008 Google</span></div></td></tr></table></form></body></html>


    pour ma part ...
    Enfaite sa me renvoi sur cette page : https://www.google.com
    0
  11. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Quand la page http://www.red-database-security.com/advisory/published_alerts.xml
    est affichée, comme recupère-tu le code source ?

    Enregistrer-sous, ou bien clic-droit > voir le code source.
    0
    1. CCM
       
      Salut,
      je ne sais pas comment tu te débrouille pour afficher la page.
      Quand je clic sur le lien sa me redirige sur https://www.google.com

      si je rentre l'url dans ma barre d'adresse sa me redirige aussi vers https://www.google.com

      ouvrir dans un nouvel onglet, c'est pareil... redirection... Comment ouvre tu cette page? il n'y a pas de redirection vers un lecteur rss dans ton cas?
      0
      1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684 > CCM
         
        tu as dû cocher un truc dans Firefox pour utiliser automatiquement Google pour afficher le flux.

        Va dans les options de firefox et sélectionne ça:
        https://imageshack.com/
        0
  12. -CCM- Messages postés 930 Date d'inscription   Statut Membre Dernière intervention   84
     
    Ah ok, j'en étais sur que sa venais d'un lecteur rss qui se mettait en route automatiquement.
    La sa va mieux, j'affiche la page avec mes link.

    Recuperer les flux rss. (j'ai ma liste"statique" de flux)
    ------recuperer tout mes link, (recuperer les link qui sont "dynamiques")
    ---------------pour chaque link
    ---------------recuperer les données (l'emplacement des données est different d'un site a un autre)
    ------fin des link de la page
    fin des pages
    0
  13. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Ton algo me semble ok.

    Pour extraire des infos d'une page HTML, il y a plusieurs méthodes (expressions régulières, BeautifulSoup, etc.)
    Le choix est libre.

    Quelques exemples:
    https://sebsauvage.net/python/snyppets/index.html#getlinks1
    https://sebsauvage.net/python/snyppets/index.html#getlinks2
    https://sebsauvage.net/python/snyppets/index.html#getlinks3
    https://sebsauvage.net/python/snyppets/index.html#getlinks4
    0
  14. -CCM- Messages postés 930 Date d'inscription   Statut Membre Dernière intervention   84
     
    import re, urllib
    securityfocus =	‘https://www.securityfocus.com/rss/vulnerabilities.xml’
    linksListsecurityfocus = re.findall('<a href=(.*?)>.*?</a>',securityfocus)
    for link in linksList:
        titre = item.getElementsByTagName('title')[0].firstChild.data
        identifiant = item.getElementsByTagName('???')[0].firstChild.data
        CVE = item.getElementsByTagName('???')[0].firstChild.data
        print "Titre: %s" % titre.encode('latin-1','replace')
        print "Identifiant: %s" % identifiant.encode('latin-1','replace')
        print "CVE: : %s" % cve.encode('latin-1','replace')
    


    Qu'en pense tu ?
    Par contre je ne trouve pas de balise pour retrouver les autres infos :

    <span class="title">International Components for Unicode Library (libicu) Multiple Memory Corruption Vulnerabilities</span><br/><br/>
    	<table cellpadding="4" cellspacing="0" border="0">
    		
    				<span class="label">Bugtraq ID:</span> 
    			
    				27455
    		
    				<span class="label">Class:</span> 
    			
    				Unknown
    			
    		<tr valign="top">
    			
    				<span class="label">CVE:</span> 
    			
    					CVE-2007-4770<br/>
    				
    					CVE-2007-4771<br/>
    				 		
    				<span class="label">Remote:</span> 
    			
    				Yes
    			
    				<span class="label">Local:</span> 
    			
    				No
    			
    				<span class="label">Published:</span> 
    			
    				Jan 25 2008 12:00AM
    			
    


    title pour le titre , ok, mais pour le "Bugtraq ID", le "CVE" la "Published date" , il n'y a pas de item...ou de class, comment faire ?
    0
  15. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    securityfocus = ‘https://www.securityfocus.com/rss/vulnerabilities.xml
    linksListsecurityfocus = re.findall('<a href=(.*?)>.*?</a>',securityfocus)


    euh... dans les fichiers RSS, les liens sont les balises <link>, et pas <a href...>.

    Par contre je ne trouve pas de balise pour retrouver les autres infos :

    HTML n'utilisant que des balises "générale" (sans signification sémantique comme RSS), il faut ruser.

    Par exemple pour récupérer le bugtraqID, il faut:
    rechercher la balise <span> contenant le texte "Bugtraq ID:", puis prendre le texte qui suit la balise </span>, jusqu'au premier <span> suivant trouvé.

    Ce cera donc à toi d'étudier la structure de chaque site pour extraire ce qu'iintéresse de leur page HTML
    (en priant pour que la structure de leur page ne change pas trop souvent).
    0
  16. -CCM- Messages postés 930 Date d'inscription   Statut Membre Dernière intervention   84
     
    Merci .
    0
Précédent
  • 1
  • 2