• STATISTIQUES
  • Il y a eu un total de 1 membres et 5745 visiteurs sur le site dans les dernières 24h pour un total de 5 746 personnes!


    Membres: 2 446
    Discussions: 3 572
    Messages: 32 822
    Tutoriels: 77
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [FR] Comment ca marche
     Gratuit et accessible à tous, ce site de communauté permet de se dépanner, se faire aider ...
    Webmaster
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Python] Url crawler
08-08-2014, 11h37
Message : #1
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
[Python] Url crawler
Yop all

Just 4 fun, je me suis amusé a faire un petit crawler d'url en python, c'est super basique, mais je trouve ca rigolo. En python, utilisant les modules requests et re.

Enjoy:

Code PYTHON :

#!/usr/bin/env python
#
#  BabyCrawler PoC
#  by Ark, just4fun
#  feel free to share =)
#

import re
import requests
import sys

def process(target, old_targets, target_r) :

    try :
        data = requests.request("GET", target, verify=False)
    except :
        return # if we fail, let's move on, there is plenty of stuff to discover anyway!
    uris = target_r.findall(data.content)
    print("{}".format(target))

    for uri in uris :
        if uri not in old_targets:
            old_targets.append(uri)
            process(uri, old_targets, target_r)

def main() :

    if len(sys.argv) != 2 :
        print("Usage: {} <start_uri>".format(sys.argv[0]))
        return 1

    target = sys.argv[1]
    old_targets = [target]
    target_r = re.compile("(https?://[a-z0-9\.\-_]+/?)")

    process(target, old_targets, target_r)

    print("No new uri found")
    return 0

if __name__ == "__main__" :
    exit(main())
 


Sur github: https://github.com/Ark444/PoCz/blob/mast...Crawler.py

Si vous avez des questions / remarques, n'hésitez pas !! Smile
+1 (3) -1 (0) Répondre
08-08-2014, 11h51
Message : #2
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,617
Sujets : 73
Points: 467
Inscription : Jan 2012
RE: [Python] Url crawler
Sympa comme code Smile

Par contre, je vois pas trop l'utilité de la fonction récursive ici: je pense qu'utiliser une file ici et de boucler tant que la file n'est pas vide serait plus judicieux qu'utiliser une fonction récursive (qui risque d'éclater la pile s'il y a grand nombre d'URLs à crawler), à moins que python fasse tout seul les optimisations nécessaires pour convertir l'appel récursif en boucle.
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
08-08-2014, 11h55
Message : #3
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [Python] Url crawler
Thx pour le commentaire.
En fait, dans l'idéal, je voudrais faire une map complete d'Internet, mais ca, ca va devenir tendu :p Mais bref, oui, ca va éclater la pile, mais tu récupere plus de donnes que si tu fais avec une boucle.
J'ai testé avec une boucle simple, mais ca sort pas des masses d'urls nouvelles. ;)
+1 (0) -1 (0) Répondre
09-08-2014, 11h53
Message : #4
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,617
Sujets : 73
Points: 467
Inscription : Jan 2012
RE: [Python] Url crawler
Ben l'idée ce serait d'ajouter les nouvelles URLs dans une file d'attente, et de boucler tant que la file n'est pas vide en récupérant le premier élément (ie l'élément enfilé le plus ancien), c'est l'algo classique en quelque sorte
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
11-08-2014, 17h00 (Modification du message : 11-08-2014, 17h00 par ark.)
Message : #5
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [Python] Url crawler
Ouep, bon, j'ai fait comme t'as dit, j'ai update ma regexp aussi
Effectivement du coup c'est un peu mieux, ça permet de pas avoir le même début pour chaque sites en fait, genre a chaque fois ca tombais sur w3.org et du coup c’était toujours le même bordel.
Par contre du coup ca va être relou pour gérer l'héritage des liens.


Code PYTHON :

#!/usr/bin/env python
#
#  BabyCrawler PoC
#  by Ark, just4fun
#  feel free to share =)
#

import re
import random
import requests
import sys

def main() :

    if len(sys.argv) != 2 :
        print("Usage: {} <start_uri>".format(sys.argv[0]))
        return 1

    target_list = [sys.argv[1]]
    target_r = re.compile("href=[\"']([a-z]+://[a-z0-9\.\-_]+/?)[\"']")
    x = 0

    while True :
        print target_list[x]
        try :
            data = requests.request("GET", target_list[x], verify=False)
        except :
            pass

        for uri in target_r.findall(data.content) :
            if uri.strip('/') not in target_list :
                target_list.append(uri.strip('/'))
        x += 1
       

    return 0
       

if __name__ == "__main__" :
    exit(main())
 


AJOUT:
'fin bref, go voir sur mon github, c'est la bas que je vais update Wink
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Python]Situer mon niveau. InforMods 19 11,016 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 1,956 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 2,389 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 2,221 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 5,372 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 3,356 03-03-2015, 10h55
Dernier message: ark
  [python] Un décorateur pour inventorier les objets b0fh 1 2,226 04-12-2014, 17h50
Dernier message: thxer
  [python] UPnP Scanner St0rn 2 2,253 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 1,545 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 4,991 15-08-2014, 20h26
Dernier message: sakiir

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut