AntiGuide: WgetPagesJavascript



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.117 :: Signaler un abus :: le: 20250602 01:09:36
20130624
sur sollicitation de MDP13
Page spécialisée pour capturer un site résistant à wget car il utilise du javascript (mais ce pourrait être n'importe quoi d'autre) pour tourner les pages

pour le fun, le film d'une capture (selon FilmerWindows) : http://antiguide.free.fr/divers/wgetjavascript/DSCN7468.AVI (10 Mo)
faire un peu mieux



mode d'emploi:
merci, mais...
le plus dur reste à faire: t'apprendre à utiliser l'automate

hier c'était en deux étapes, actuellement le code de filtrage du deuxième programme est imbriqué et exécuté page à page pour produire directement le fichier "totale". !

1) créez quelque part le dossier "cible", ce pourrait être dans le coin en bas à droite de l'écran
2) procurez vous le programme "ab.vbs" et placez le sur le bureau (1), par l'une des deux méthodes:
3) ouvrir avec Firefox (pas testé les autres) la page des résultats: on arrive sur la page 1
4) organiser le bureau:
5) draguez l'icône du dossier cible sur l'icône de "ab.vbs" (2)
6) position le "Ok" du dialogue de définition de l'intervalle au dessus de la première ligne de la page web
7) wait & see, il y en a pour une demi-heure !

bon dimanche.
PO.


NOTE: peut aussi se jouer en "plein écran"

(1): - éventuellement ajuster les délais... par
(2): alternativement,
(3) le dossier de capture peut être ouvert (comme sur la video ci dessus) par ailleurs pour voir les pages arriver sur le disque, mais c'est toujours l'icône du dossier qu'il faudra utiliser.

programme ab.vbs:

' automate capture iran par firefox selon: http://antiguide.free.fr/wiki/wakka.php?wiki=WgetPagesJavascript
' http://result-p.moi.ir/Portal/Home/default.aspx

' définition du dossier cible (doit exister au lancement, et plutôt vide)
cible="%userprofile%\Desktop\2013-a\"

Set WshShell =CreateObject("WScript.Shell")

Set oArgs=WScript.Arguments ' tableau d'arguments
nbargs= oArgs.Count ' nombre d'argument transmis
if nbargs=1 then 
  cible=oArgs(0) & "\"
elseif nbargs=0 then

  msgbox "Pour exécuter ce programme, vous devez lui fournir le dossier cible" & vbcrlf & _
         "par exemple en 'draguant' l'icone de ce dossier sur son icône"
  wscript.quit
 else
  msgbox "Erreur fatyale: reçu plus d'un argument " & vbcrlf & _
          "Pour exécuter ce programme, vous devez lui fournir le dossier cible" & vbcrlf & _
         "par exemple en 'draguant' l'icone de ce dossier sur son icône" 
   wscript.quit
end if 

set fs=createobject("scripting.filesystemobject")

' paramètres "fixes"
nblipa=50
nbco=7
repetsave=20
'            délais
delayc=50 ' entre caractères
delaytab=100
delaynext=100
delayload=5000 ' chargement de la page 
delerepe=1000
delaytop=5000 ' temps pour se repositionner en haut de pge après dialogue

' andiamo!
debli=inputbox ("Hello," & vbcrlf & "déplacez cette fenêtre pour positionner le bouton 'OK' sur le titre de la page web" & vbcrlf & "puis entrez les limites des lignes à capturer sous la forme: depart-stop/dernier " &  vbcrlf & _
     "(debut doit être la page actuelle)  " & vbcrlf & _
     "Enfin faites un clic gauche sur le bouton 'Ok' et aussitôt un clic gauche sur le titre de la page. ", _
     "Définir les lignes à capturer" ) '125
'
if debli="" then 
   wscript.quit
  end if

derder=""
sep=instr(debli,"/")
if sep>0 then 
     derder=mid(debli,sep+1)
     debli=mid(debli,1,sep-1)
  end if
sep=instr(debli,"-")
if sep=0 then 
    msgbox "fallait debut-fin !"
    wscript.quit
  end if
derli=mid(debli,sep+1)
if derder="" then derder=derli
debli=mid(debli,1,sep-1)

deb=int((debli+nblipa-1)/nblipa)

fin=int((derli+nblipa-1)/nblipa)

derpage=int((derder+nblipa-1)/nblipa)


lonpa=len(fin)
  wscript.sleep(delaytop)

on error resume next
totale=cible & deb & "-" & debli & "--" & fin & "-" & derli & ".txt" 
if fs.fileexists (totale) then
while  fs.fileexists (totale) 
    rep=msgbox ("le fichier à  créer:" & vbcrlf & totale & vbcrlf & "existe déja; effacez le!" & vbrlf & "Puis clic sur OK suivi de clic en haut à droite de la page" ,1)
     if rep=2 then wscript.quit
 wend 
  wscript.sleep(delaytop)
end if

on error resume next
 set fo=fs.createtextfile(totale)

if err.number <>0 then 
   msgbox "erreur fatale creation " & vbcrlf & totale
   wscript.quit
   end if

on error goto 0

logname=cible & deb & "-" & debli & "--" & fin & "-" & derli & ".log" 
if fs.fileexists (logname) then
while  fs.fileexists (logname) 
    rep=msgbox ("déplacez cette fenêtre pour positionner le bouton 'OK' sur le titre de la page web" & vbcrlf & _
         "le fichier à  créer:" & vbcrlf & totale & vbcrlf & "existe déja; effacez le!" & vbrlf & "Puis clic sur OK suivi de clic en haut à droite de la page" ,1)
     if rep=2 then wscript.quit
 wend 
  wscript.sleep(delaytop)
end if

set fl=fs.createtextfile(logname)


agarder=false

for page=deb to fin
nom=cible & right("000" & page, lonpa) & "-" & (page*nblipa-nblipa+1) & ".txt"
  wscript.sleep(1000)

' sauvegarde txt

if fs.fileexists (nom ) then
while fs.fileexists (nom ) 
    rep=msgbox ("déplacez cette fenêtre pour positionner le bouton 'OK' sur le titre de la page web" & vbcrlf & _
    "le fichier à  créer:" & vbcrlf & nom & vbcrlf & "existe déja; effacez le!" & vbrlf & "Puis clic sur OK suivi de clic en haut de la page" ,1)
     if rep=2 then wscript.qui
wend 
  wscript.sleep(delaytop)
end if

fl.writeline now & " sauvegarde " & nom

  wshshell.sendkeys "%F"
  wscript.sleep(1000)
  wshshell.sendkeys "E"

  wscript.sleep(1000)

' fichier
  wshshell.sendkeys "%N"

  wscript.sleep(1000)

  une nom
' envoyer la demande de sauvegarde 
  wshshell.sendkeys "%E"
  wscript.sleep(1000)

todo=repetsave
reussi=fs.fileexists (nom )
' (et insister!)
while (not reussi) and (todo>0) 
todo=todo-1
fl.writeline now & " repetition " & repetsave-todo

  wshshell.sendkeys "%E"
  wscript.sleep(delerepe)
reussi=fs.fileexists (nom )

wend 

  

if not fs.fileexists (nom ) then
while not fs.fileexists (nom ) 
     rep=msgbox ("déplacez cette fenêtre pour positionner le bouton 'OK' sur le titre de la page web" & vbcrlf & _
     "le fichier: " &  nom & vbcrlf & "n'a pas été créé; effectuez la sauvegarde manuellement!" & vbcrlf & _
     "Puis clic sur OK suivi de clic en haut dela page" ,1)
    if rep=2 then wscript.quit
wend 
  wscript.sleep(delaytop)
end if

set fi=fs.opentextfile(nom)
li=0
li50=0
ignorer=true

while ignorer and not fi.atendofstream
  lu=fi.readline
 ' fl.writeline "avance " & lu
  li=li+1
  if li=12 then 
  if mid(lu,1,len(derder))<>derder then 
    rep=msgbox ("erreur fatale: " & vbcrlf & _
                "Nombre de lignes du tableau lu en tete: ===" & mid(lu,1,len(derder)) & "<>espéré:" & derder&  "===") 
    wscript.quit
 else
 ignorer=false
end if
end if
wend 

if fi.atendofstream then
msgbox "erreur fatale pas trouvé la ligne en-tete " & derder
wscript.quit
end if

lu=fi.readline

for lu50=1 to nblipa

prochaine=""

for col=1 to nbco

if fi.atendofstream then 
   msgbox "erreur fatle fichier de moins de " & nblipa & " entrées."
   wscript.quit
  end if

 lu=fi.readline
 dump=""
 for id=1 to len(lu)
   dump=dump & " " & asc(mid(lu,id,1))
 next 'id
 'fl.writeline lu50 & " " & col & " =!!!==" & lu & "=!!!==" & dump  & "==!!!=="
 if col=1 then 
      sep9=instr(lu,chr(9))
     
      if sep9=0 then 
         msgbox "erreur fatale pas tab"
      else
       nuact=mid(lu,1,sep9-1)
      end if
    end if
 if 0+nuact>=0+debli then 
       agarder=true
     '  fl.writeline now & " lu50=" & lu50 & " nuact=" & nuact & " debli=" & debli & " a garder"
    end if
 li=li+1
 ' msgbox "lu ligne utile lu50=" & lu50 & "  col=" & col & vbcrlf & lu
   dump=""
     for xx=1 to len(lu)
        x1=mid(lu,xx,1)
        dump=dump & " " & xx & ":" & asc(x1)
     next ' xx
  '   msgbox "un score:"  & len(li) & vbcrlf &  li & " " & lu & vbcrlf & dump 
  if col=1 then
     finnu=instr(lu,chr(9))
     if finnu=0 then 
        msgbox lu & vbcrlf & "pas de numero en tete de ligne ====" & derli & "====" & numlia & "=====" & vbcrlf & lu
         wscript.quit
     end if

     numlia=mid(lu,1,finnu-1)
 '    numli=numlia+0 
     expl=""
     if page=deb then expl="RAPPEL: firefox doit être positionné sur la page de la première ligne à capturer"
     theorique=(page-1)*50+lu50 & " "
     theorique=mid(theorique,1,len(theorique)-1)
  '   msgbox "numlia=" & numlia & "= numli=" &  numli &"===" & "théroique=" & theorique & " finnu=" & finnu
     if numlia <>  theorique then 
         msgbox "lu50=" & lu50 & vbcrlf & _
         "erreur fatale, sur la page: " & vbcrlf & nom & vbcrlf & "ligne du tableau: " & lu50 & vbcrlf & _
         "numli trouvé ===" & numlia & "===<>espéré:===" & theorique & "===" & vbcrlf & lu & vbcrlf & expl
         wscript.quit
     end if
  end if ' col=1
 if agarder then prochaine=prochaine & lu ' fo.write lu
 if col<nbco then 
    if agarder then prochaine=prochaine & chr(9)
  else

   if agarder then fo.writeline prochaine

   if nuact=derli then 
      fo.close
      fl.writeline now & " termine à " & nuact
      fl.close
      msgbox "fini à ligne: " & nuact
      wscript.quit
   end if

  end if
next 'co

next 'lu50

 fi.close


if page=fin then 
   msgbox "ouf"
   wscript.quit
end if

' calcul du nombre de tabilations pour atteinde ">"
if page>=1 then tab=16
if page>=2 then tab=18
if page>=11 then tab=19
'msgbox "derpage=" & derpage
if page>=1+10*int(derpage/10) then 
    tab=8+derpage-10*int(derpage/10)
 '   msgbox "tab=" & tab
   end if
for x=1 to tab 
  wscript.sleep(delaytab)
  wshshell.sendkeys "{tab}"
next
'                         pause pour voir le ">"
  wscript.sleep(delaynext)
  wshshell.sendkeys "{enter}"
'                        attente plus que nécessaire pour le chgt de page
  wscript.sleep(delayload)

next

sub une (liste)
for i=1 to len(liste)
 un=mid(liste,i,1)
 wscript.sleep delayc
 wshshell.sendkeys un
next
end sub