Page 1 sur 1

[R] Révision d'un script

Posté : lun. 02 juil. 2012 13:06
par yohan8
Bonjour,

Je n'ai pas l'habitude d'exposer mes scripts mais j'en ai un qui m'énerve particulièrement car il bute contre une erreur qui survient 1 fois sur 3. :evil:
La fonction principale de celui-ci est de récupérer des proxy trouvé sur internet et de les caser dans un tableau. Par la suite je ping cette liste de proxy pour classer cette liste de proxy du plus rapide au moins rapide.

L'erreur provient lors du ping des proxy.

Code : Tout sélectionner

$proxyanonyme[$i][2] = Ping($proxyanonyme[$i][0])
Je cite "==> Array variable has incorrect number of subscripts or subscript dimension range exceeded."
Pourtant mon array possède belle et bien le nombre de colonne requise.
► Afficher le texte
Vous ne pouvez pas essayer le script chez vous a moins que vous baissiez votre résolution en 1024*768, et encore...

Bon je sais qu'on peut toujours paufinner le script en utilisant la fonction direct "Clipget()" par exmple et en supprimant tout les restants de mes "test"... mais bon, à l'époque ou je débutais le script je n'avais pas toutes ces notions. :mrgreen:

Si quelqu'un pourrait m'expliquer cette erreur qui survient, je rappelle, une fois sur trois. Sa veut dire que je peux lancer le script et découvrir par la suite mon array pingué.

Yohan :)

Re: [...] Révision d'un script

Posté : lun. 02 juil. 2012 15:03
par TT22
yohan8 a écrit :L'erreur provient lors du ping des proxy.

Code : Tout sélectionner

$proxyanonyme[$i][2] = Ping($proxyanonyme[$i][0])
Je cite "==> Array variable has incorrect number of subscripts or subscript dimension range exceeded."
Pourtant mon array possède belle et bien le nombre de colonne requise.

Code : Tout sélectionner

Dim $proxyanonyme[1][2]
Euh, non :P
Si tu dim un array $proxyanonyme[1][2], il sera construit de la façon suivante :

Code : Tout sélectionner

$proxyanonyme[0][0]
$proxyanonyme[0][1]
Car il ne faut pas oublier qu'un array se base toujours sur la valeur 0.

Re: [...] Révision d'un script

Posté : lun. 02 juil. 2012 15:32
par yohan8
Oui mais par la suite, avant de pinguer mes proxy je fait :

Code : Tout sélectionner

ReDim $proxyanonyme [$n][3]
Ce qui règle mon histoire de colonne.
J'ai au final ma première colonne avec mes proxy, ma deuxième colonne avec mes Port et une troisième colonne qui classera mes proxy.

Re: [...] Révision d'un script

Posté : lun. 02 juil. 2012 16:12
par TT22
Est-ce que tu as essayé de dimensionner ton array directement à la plus grande taille ([14][2]) ?

Re: [...] Révision d'un script

Posté : lun. 02 juil. 2012 16:31
par yohan8
Oui, toujours la même erreur qui s'affiche.
J'essaye de voir pour utiliser la valeur $n dans ma boucle. Je soupçonne $i de foirer le script.

Re: [...] Révision d'un script

Posté : lun. 02 juil. 2012 16:49
par TT22
Et, l'erreur vient de la première où de la deuxième colonne ?

Re: [...] Révision d'un script

Posté : lun. 02 juil. 2012 16:56
par yohan8
Logiquement elle provient de la première colonne car la deuxième je ne l'utilise pas.
Lors de mon Ping, je crée une 3 ème colonne. Je ping le proxy de la 1ère ligne et j'inscrit son ping dans la 3ème colonne de sa ligne.
J'effectue ces actions pour toutes les lignes qui ont un proxy.

Re: [...] Révision d'un script

Posté : lun. 02 juil. 2012 17:39
par mikell
Essaye en commentant le _ArrayDelete
Si tu n'as plus d'erreur, remets le _ArrayDelete et fais ta boucle comme ça

Code : Tout sélectionner

For $i = $proxyanonyme[0][0] to 1 step -1

Re: [...] Révision d'un script

Posté : lun. 02 juil. 2012 18:45
par yohan8
Je n'ai pas bien saisi cette histoire de _arraydelete mais j'ai essayé de faire ma boucle avec

Code : Tout sélectionner

For $i = $proxyanonyme[0][0] to 1 step -1
Sans résultat :cry:

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 00:23
par Tlem
Perso, je ferais plutôt ceci :
► Afficher le texte

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 00:41
par mikell
Perso, you're absolutely right :mrgreen:
Most simple, most efficient

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 11:11
par yohan8
Bon [...] je voie que ma logique ne plait pas à tout le monde :evil:

Mais c'est vrai que cette méthode me parait plus simple. :mrgreen:
Malheureusement j'ai bien peur que le site crypte ces proxys.
Faîte les tests chez vous en enlevant le code ci dessous :

Code : Tout sélectionner

 _ArrayDelete($aTableData, $i)
EDIT :
Wait five minutes I have found the solution

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 14:29
par Tlem
Image

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 14:59
par yohan8
Bon bas du coup, comme vous avez pu le remarquer je n'au pas trouvé cette solution.

Le script est bon sauf que nous avons dans la colonne adresse IP nous avons des éléments en trop. Élément que j'ai marqué en rouge

Code : Tout sélectionner

[1]|[color=#FF0000]IPDecode("%3c%61%20%68%72%65%66%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%66%72%65%65%70%72%6f%78%79%6c%69%73%74%73%2e%6e%65%74%2f%66%72%2f%31%38%38%2e%31%36%35%2e%32%30%35%2e%31%32%39%2e%68%74%6d%6c%22%3e%31%38%38%2e%31%36%35%2e%32%30%35%2e%31%32%39%3c%2f%61%3e")[/color]188.165.205.129|80|HTTP|Anonyme|France|0|0|56.5%|0|0
Ce code en rouge change en fonction des IP.
L'idée serait de supprimer avec StringRegExpReplace les éléments de la colonne 1 comprit entre IPDecode( et ").
Malgré mes l'aide d'autoit & les exemples je n'ai pas trouvé :|

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 16:15
par Tlem
Dans le tableau retourné par le code que je vous ai proposé, je n'ai pas ces données supplémentaires. Donc je ne vois pas le problème.

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 17:09
par yohan8
C'est pas une blague le copié-collé de la 1ère ligne :P
Lorsque je fait le tableau j'ai effectivement le proxy mais j'ai également cette partie que j'ai mis en rouge dans mes précédent poste.
J'essaye maintenant de supprimer ce surplus d'information.

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 20:36
par mikell
Exact, c'est bien dans le code source de la page

Code : Tout sélectionner

<td><script type="text/javascript">IPDecode("%3c%61%20%68%72%65%66%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%66%72%65%65%70%72%6f%78%79%6c%69%73%74%73%2e%6e%65%74%2f%66%72%2f%39%31%2e%31%32%31%2e%31%35%31%2e%37%36%2e%68%74%6d%6c%22%3e%39%31%2e%31%32%31%2e%31%35%31%2e%37%36%3c%2f%61%3e")</script></td>
<td align="center">3128</td>
<td align="center">HTTPS</td> etc
Par contre ce qui est strange c'est que tu récupères le code javascript et l'IP en clair, en principe ça devrait être l'un ou l'autre
(chez moi je récupère juste l'IP, comme Tlem)
Sinon le regexp c'est

Code : Tout sélectionner

$txt = 'IPDecode("%3c%61%20%68%72%65%66%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%66%72%65%65%70%72%6f%78%79%6c%69%73%74%73%2e%6e%65%74%2f%66%72%2f%31%38%38%2e%31%36%35%2e%32%30%35%2e%31%32%39%2e%68%74%6d%6c%22%3e%31%38%38%2e%31%36%35%2e%32%30%35%2e%31%32%39%3c%2f%61%3e")188.165.205.129'
$txt = StringRegExpReplace($txt, '^.+?\)', "")
msgbox(0,"", $txt)

Re: [...] Révision d'un script

Posté : mar. 03 juil. 2012 23:29
par Tlem
Boudiou, je ne comprenais pas d'ou venait cette suite de caractères parasites jusqu'à ce que j'essaie le script sous Windows 7 !!! C'est donc IE9 qui ne réagit pas comme IE8 ...

Bref, avec la ligne indiquée par mikell, nous avons le code ci-dessous qui fonctionne sur Windows XP, Windows 7 et je testerais sous Windows 8 demain car pour l'instant, il est en cours d'installation ... ^^
► Afficher le texte

Re: [...] Révision d'un script

Posté : lun. 16 juil. 2012 10:00
par yohan8
Great !

Merci & sujet clos :D

EDIT :

Je vais cloturer ce sujet sur une note final de script achevé avec le trie des proxy, du plus au moins rapide

► Afficher le texte