11496 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'essaye depuis quelques temps de pouvoir accéder à certaines infos d'un site web distant sur lequel j'ai un compte et je suis inscrit.
Le plus "simple" que j'ai trouvé est de télécharger manuellement le code source de la page, puis de l'enregistrer sur un FTP avant de faire un loadHTMLFile et de parser le résultat.
Sauf qu'à la base je voulais que mon script aille chercher le code source tout seul.

Pour cela, j'ai trouvé plusieurs tutoriel à base de Curl, ou d'Ajax à base de XMLHttpRequest, ou de FOpen, ou de file_get_contents.
Mais rien à faire, les fois ou je récupère du code source, il s'agit de la page de login du site distant, avec au milieu du code, une div comprenant le texte suivant : "Session expired. Please reconnect."

J'aurais aimé que le script puisse entrer et ensuite aller sur la page privée en question, quitte à utiliser le cookie du site sur lequel est inscrit la session, ou à donner au script les identifiants de connexion.

Quelqu'un connait-il un code de bot sur lequel je pourrais me baser?
Modifié par vovor (30 Jul 2012 - 15:24)
le moyen le plus simple de récupérer du code type Serveur (php asp..) est d'être le développeur du site...

Sinon cela s'appelle du hacking, du piratage, etc.. tu prends le nom que tu veux mais ça reste totalement illégal....

Vu que c'est ce que tu fais depuis plusieurs essais, j'espère pour toi que tu as des intentions louables... car si le site est bien fait ton ip est repérée.... et l sera donc facile de remonter jusqu'à toi pour prévenir, gendarmerie ou police par exemple....

(j'ai pour am part un petit système de tracking perso qui relève en plus des logs standards tout les appels fait sur un site dont je m'occupe... outre l'adresse ip je sais ce qui est écrit dans les tentatives... marrant de voir d'ailleurs ce que certains balancent pour essayer de rentrer dans le site Smiley smile ... ce qu'ils ne font pas bien sur c'est sécurisé !! )
J'ai mal expliqué.
Ajax, php, Jquery, c'est la techno que je veux employer.
Je veux bêtement récupérer le code source html comme je le fais déjà en faisant "enregistrer sous".

Curl, Fopen, file_get_contents savent le faire, et c'est tout à fait légal.
Sauf que vu qu'il faut se loguer pour accéder à la page en question, ces scripts me rendent la source de la page de login en m'affichant "session expirée".

J'ai un compte sur ce site, je veux juste que le script passe les identifiants, via la session (si elle est déjà ouverte) ou les cookies, lui permettant alors d'accéder au code source de la page en question.

Après, j'ai déjà un script à base de DomDocument qui parse le code source à la recherche des div qui je veux répercuter sur mon site.

Les admins auraient mis en place un flux rss de leurs données, j'aurais pas ce problème. Sauf qu'ils ne veulent pas et que je dois ruser...

... en toute légalité.

Je parle de bot, car c'est un peu le meme principe qu'un bot qui peut se loguer dans un forum et poster tout seul. Sauf que là je veux pas spamer un forum... Smiley langue
Modifié par vovor (30 Jul 2012 - 20:52)
ah ok Smiley smile

le code que tu as récupéré du login ??? dedans doit bien y avoir les champs et la destination du form ??

si oui il suffit que ton script se loggue avant d'aller chercher la page qui t’intéresse...

comme ça la session sera pour ton script et la session restera ouverte...

fait le en curl... c'est plus sur...
"le code que j'ai récupéré du login?" ksékséksa?

y'a bien une page d'accueil, avec un form ou on indique login et password (et un champ hidden), qui en cas de succès renvoi à une autre page. Celle que je veux va se chercher sur le menu de la dernière.
Donc si j'ai bien compris :
- je fais un Curl sur la page de log
- dans ce curl, je passe mes identifiants par requete POST
- A la suite du code, j'indique la page que je souhaite parser.
- Puis je lance le parser en DomDocument

C'est bien ça?
Je dis pas non à un peu d'aide, surtout sur la 2eme partie.

PS : et je ne peux vraiment pas profiter d'une session déjà ouverte? D'autant plus que le numero de session est inscrit dans un cookie.
Modifié par vovor (31 Jul 2012 - 00:12)
re...

t as bien compris...

La session déjà ouverte en cookie est sur ta machine.. pas sur celle où tu lance le parser Smiley smile
oui c'est le principe du php.
Dans ce cas pourquoi ça ne marcherait pas en ajax?... c'est du javascript, donc local
Modifié par vovor (31 Jul 2012 - 10:37)
l'ajax est un appel JS vers un fichier de traitement... donc serveur... tu suis ??

ton ajax tu le lance sur ta machine... l'ajax lance un php... sur le serveur Smiley cligne puis retourne un résultat sur ta machine...
je vois. Mais je ne peux pas transmettre les infos de la machine, donc les données stockées dans les cookies, depuis la partie js vers la page php, et ainsi transmettre les infos locales au serveur?

Tu me suis?
IANAL, mais aller récupérer des données sur un site malgré l'interdiction du propriétaire, ça me paraît moyennement légal, donc attention.

Je crois que tu fais erreur sur ajax. C'est une techno qui ne te permet d’interagir qu'avec ton propre domaine (par sécurité).

Le meilleur moyen d'aller récupérer des données et de parser du html, c'est d'utiliser les libs adéquates.
Je ne sais pas ce qui existe de valable en php, mais en python par exemple il y beautifulsoup pour parser le document et en extraire ce qu'on veut, requests pour gérer la couche http (avec autent, cookies etc)
Ça existe sûrement en php.

Une autre solution est d'utiliser un browser headless, cad sans interface graphique.
Casperjs (scriptable en js) ou ghost.py (python) sont des webkit qui te permettent de naviguer et d'interagir avec des pages web.
Tu peux donc te logguer sur un site et récupérer ce que tu veux, même si une partie du contenu est généré en js.
Modifié par paolo (31 Jul 2012 - 12:50)
Quelle interdiction? J'ai l'autorisation. J'ai prévenu que je voulais rapatrier sur mon propre site des infos que j'ai déjà en ouvrant mon compte.