[PHP] récupérer le code source d'une page web

Résolu
salut ,

je essayer de récupérer le code source d'une page web à partir de son URL.

j'ai un code qui le fait avec Java mais j'ai besion en PHP .....
voila le code en java et si qlq peut me l'envoyer en PHP.......Merci

--------------------------------------------------------------------
public static String getIpFrom(String adresse) {
String toreturn = null;
try {
// creation d'un objet URL
URL url = new URL(adresse);
// on etablie une connection a cette url
URLConnection uc = url.openConnection();
// on y cree un flux de lecture
InputStream in = uc.getInputStream();
// on lit le premier bit
int c = in.read();
// on cree un StringBuilder pour par la suite y ajouter tout les bit lus
StringBuilder build = new StringBuilder();
// tant que c n'est pas egale au bit indiquant la fin d'un flux...
while (c != -1) {
build.append((char) c);
// ...on l'ajoute dasn le StringBuilder...
c = in.read();
// ...on lit le suivant
}
// on retourne le code de la page
toreturn = build.toString();

} catch (MalformedURLException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
return toreturn;
}
----------------------------------------------------------------------

28 réponses

Résumé de la discussion

Le but est de récupérer le code source HTML d'une page à partir d'une URL en PHP, en s'appuyant sur un exemple Java fourni pour guider la conversion. Des solutions PHP existent, notamment via curl ou via file_get_contents lorsque l'accès fopen est autorisé, curl offrant une gestion de timeout et une récupération brute du contenu avec curl_exec. Attention toutefois: on ne peut pas récupérer le code source PHP d'un fichier distant, on obtient uniquement le HTML généré côté serveur puisque le PHP s'exécute avant l'envoi. En pratique, pour des pages dynamiques ou des contenus téléchargés, l'usage de curl ou de file_get_contents doit tenir compte des restrictions du serveur et des conditions d'utilisation.

Bobot (l’IA à votre service)
  1. Essai ça :

    <?php

    $ch = curl_init();
    $timeout = 5; // set to zero for no timeout
    curl_setopt ($ch, CURLOPT_URL, 'http://www.commentcamarche.net');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);
    $lines = array();
    $lines = explode("\n", $file_contents);

    // display file line by line
    foreach($lines as $line_num => $line) {
    echo "Line # {$line_num} : ".htmlspecialchars($line)."<br />\n";
    }

    ?>

    C'est également un remplaçant de fopen pour les serveurs qui n'autorise pas cette fonction.

    J'ai pris cette information de :

    http://wiki.dreamhost.com/CURL#Getting_binary_data
    1. <?
      echo $strResult = implode("",file("http://www.monsite.com"));
      ?>
    2. bonjour,

      j'ai utilisé le code que tu as mis

      <?php

      $ch = curl_init();
      $timeout = 5; // set to zero for no timeout
      curl_setopt ($ch, CURLOPT_URL, 'http://www.commentcamarche.net');
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
      $file_contents = curl_exec($ch);
      curl_close($ch);
      $lines = array();
      $lines = explode("\n", $file_contents);

      // display file line by line
      foreach($lines as $line_num => $line) {
      echo "Line # {$line_num} : ".htmlspecialchars($line)."<br />\n";
      }

      et le résultat me met que la session a expiré et du coup je ne recupere pas le code html de ma page

      merci de ton aide
    3. @HtMLMerci beaucoup ! C'est exactement ce que je cherchais !!
    4. @HtMLbonjour,
      je veut RECUPERER LE CODE HTML D'UNE PAGE WEB dans un tableau en utilisant le langage JAVA, si t a un code qui permet de le faire envoye le moi,stp.
      merci d'avance.
    5. @mayeBonjour, voici une ébauche en JAVA qui fonctionne à peu près :
      import java.net.*;
      import java.io.*;
      
      public class Client{
      	public static void main (String args[]) throws SocketException, IOException,
      	UnknownHostException{
      		URL u = new URL ("http://tim.gau.free.fr/");
      		byte[] pl = new byte[3000];
      
      		DataInputStream br = new DataInputStream((InputStream)u.getContent ());
      		for (int i = 0 ; i<1000 ; i++)
      			System.out.println (br.readLine());
      	}
      }$
      


      Donc bien sur dans URL tu rentre l'URL que tu veux….
  2. bonjour j'ai essayer ceci :

    <?php

    $ch = curl_init();
    $timeout = 5; // set to zero for no timeout
    curl_setopt ($ch, CURLOPT_URL, 'http://www.bricodepot.fr/maubeuge/');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);
    $lines = array();
    $lines = explode("\n", $file_contents);

    // display file line by line
    foreach($lines as $line_num => $line) {
    echo "Line # {$line_num} : ".htmlspecialchars($line)."<br />\n";
    }

    ?>

    Je n'obtiens aucun résultats

    Comment cela se fait t'il ? merci
    1. Bonjour...

      On ne peut absolument pas récupérer le code source d'un fichier php!

      Le fichier php auto-génère un fichier html avec du contenu qui est affiché par le navigateur!

      En faisant toutes les tentatives possibles, vous ne parviendrez jamais à obtenir un code source PHP, mais juste un code source de la page auto-générée en HTML (sans les $ et sans les fonctions...).....

      FIN!
      1. Le créateur du sujet veut effectivement le code compilé html, c'est évident qu'on ne peut récupérer le code source non compilé par le serveur.
      2. A bon et d'ou tu tiens ces connerie? légalement ok... mais tu sait les vulnérabilité sa existe, donc toute les tentative je n'irais pas jusqu'à dire sa.
    2. Bonjour,
      j'ai un problem avec l curl, qui m'absorbe le code html d'une page web, mais le problem qu'elle me l'affiche et remplace les lettre contenant les accents lescopyright ... par é, î, Ã,... par exemple pour le site siteduzero.com
      est ce qu'il n'y a pas de solution merci
      1. Essaye de regarder les trucs genres
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

        ou copie cette ligne

        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

        dans le <head>
    3. bonjour
      j'ai recupérer le code source de ma boutique internet
      je me suis affilié avec des agence de pub.
      j'ai donc le code html des pubs a mettre sur mon site.
      j'ai utiliser le logiciel notepad++ pour modifier le code source
      je l'ai enregistrer au format html et je les ouvert sur mon navigateur en faisant "fichier" "ouvrir".
      Cependant j'ai pas changé pour autant le code source de mon site internet..
      est ce que quelqu'un peut m'aider j'ai fait tout les forum tout les tutorials!!je suis perdu
      1. @marika

        Je sais pas du tout ou tu en est ou à quel niveau......

        toujours est il que :
        ton probleme n'est pas le même que celui de base d'ici
        tu devrais créé un topic
        tu devrais demander aux personnes qui ont fait ton site web
        tu peux essayer d'apprendre la base (je sais pas ce que tu sais) ici : https://openclassrooms.com/fr/courses/1603881-apprenez-a-creer-votre-site-web-avec-html5-et-css3
        Tu ne décris pas ton problème, sois plus explicit
        Parfois, même si il ya du spam, il vaut peut être mieux laisser une adresse e mail, ou une adresse venant de "yopmail.com" pour eviter le spam si tu veux que quelqu'un te recontacte :)

        ps :
        après avoir modifier le code sources, il faut le renvoyer sur le serveur ftp....
        ensuite "fichier ouvrir" si c'est une page php, tu ne verra pas grand chose de compréhensible. mais tout ça c'est sur le site du zero.
    4. Bonjour , je suis très intéressé par cette discutions et j'aimerai en savoir plus =)
      Je vous donne mon adresse msn ;)
      iloov.Heroi2k@live.fr
      Merci =)
      1. pour récupérer un code source de la page il vous suffit d'installer mozilla firfox et cliquer avec bouton droit de la souris et voila
        1. Merci captain obvious !
      2. euuuh freebourg ... si j'ai dis ça c'est parce que je l'ai déjà fait sur un hébergeur gratuit en aidant des webmasters à enlever ces failles... ce n'est pas être apprenti hacker ou je ne sais quoi que de dire ça, car les "hacker" dont tu aimes visiblement si bien parler, ne sont pas les seuls à connaitre des "failles de sécurité"... car les grosses failles, comme c'est le cas quelques fois, sont très fréquentes quand les hébergeurs ont trop de sites à gérer par rapport au nombre d'employés. De plus, tout programmeur doit connaitre des failles pour protéger son propre site... alors maintenant avant de parler, renseigne toi !

        Pour expliquer le principe, c'est un problème de droits d'utilisateurs mal géré sous unix :
        Tout les scripts de tout les sites de cet hebergeur ayant le même groupe, et les droits étant mal géré, c'est tout e groupe possesseur qui peut accéder en lecture au site qu'il souhaite du temps qu'il a un compte sur le même serveur.
        il peut donc récupérer les identifiants mysql et modifier comme il veux la bdd a partir de son propre script.

        De plus, pour ce qui est des exemples, n'y compte pas trop car qui nous dit que tu es qui tu prétend être ?
        Enfin, pour conclure, je n'ai pas 36000 exemples, mais je n'en connais qu'un... (mais bon ça existe donc quand même ...=))
        1. Bonjour je vien de trouver cette discution interressante je cherche moi aussi un moyen de recuperer des info d une page web via le php pour ensuite l afficher sur une page web de mon site
          je voudrai recuperer quelque info sur cette page web en enlevan tout le superflu et l afficher sur une page web le tout allignier et avec un refresh de 30 sec
          je voudrai garder que les info de cette page http://videochat.camfrog.com/room-dir/ALLIANCE_CAMFROG
          | status | nickname | age | sex | location |
          | | | | | |

          en sachan que le non ALLIANCE_CAMFROG
          peu changer
          c est pour un projet de site web si quelqu un pourrai m aider merci d avance
          pour me contacter envoyer moi un email si possible Alliance_Camfrog@live.fr encore merci d avance a tous
          1. test
          2. Je sais que ça fait un moment, mais si ça peut aider :
            D'abord récupérer le html comme cité plus haut
            ensuite, faire un "strip_tags()"

            $exemple = '<a href="bdgfgdf">plop</a>';
            strip_tags($exemple);

            ça retourne "plop"

            Ensuite pour organiser le tout, perso j'utlise des expressions reguliere,
            notament preg_replace();
        2. Pour ce qui du java, c'est un langage compilé puis que il utilse son propre environnement pour fonctionner. C'est un langage "objet" donc difficilement imitable à partir de php html et autres. Lorsque on utilise un objet en fait des dizaines de lignes de code sont exécuter et ce sont celles-ci qu'il faudrait pour les transcrire en php ou autres. Conclusion : c'est dur.
          1. Même quelques mois après, je n'arrive toujours pas à comprendre qu'il y ait 5 (!) hors sujet !

            Vous ne lisez pas ou quoi ?
            J'ai compris dès le départ qu'il savait faire une certaine chose en Java et se demandait comment faire pareil en PHP.

            Alors, apprenti-hackeurs (failles de sécurité et bla bla bla, j'aimerais bien que vous me donniez des exemples d'hébergeurs, alors. Si vous croyez que c'est si simple que ça, qu'il suffit d'avoir un site sur le même hébergeur et hop on récupère tous les fichiers des autres...)

            Voilà, c'était mon coup de gueule pour les gens qui en prennent pas la peine de lire complètement et consciemment avant de répondre (à toute vitesse et avec plein de fotes).
            1. Pourtant ce que les gars disent et plutot correctes , et on peut hacker tout un hebergeur depuis un host (le monde et un peu grand) et j'ai deja hacké pas mal .
            2. hello
              a freebourg pour qq qui critique les autres fotes secrit comme ca "fautes" ...
            3. je panCe Ke cétais faih exepré sisi
            4. Bonjour,

              J'ai un gros souci, j'ai créer un site internet, je suis passée par un webdesigner (une petite boite). Ils ont pris plein de retard et on fait tellement d'erreur qu'au bout de 2 ans le site ne marche toujours pas super bien. Pire, dans le contrat ils avait inclus une prestation de référencement naturel comme quoi que je paie une certaine somme à chaque fois que j'apparais sur la premiere page de google. Et selon eux ça allait me coûtait casiment rien. Bref, escro comme ils sont j'ai vit vu qu'apparaitre sur la première page d'un mot clé qui n'a pas de traffic ça sert à rien saut à se ruiner. J'ai tenté de casser ce contrat de référencement car j'ai déjà fini de payer mon site mais l'entreprise étant en situation difficile retient de force ses clients. Il ne veulent donc pas me donner mes codes sources pour que j'aille ailleurs. Je cherche du coup quelqu'un qui pourrait reprendre les codes sources de mon site chez le webmaster.
            5. Bonsoir,
              Ton site est en ligne sur internet? Si oui aurais-tu l'URL pour voir si on peut faire quelque chose...
          2. bonjour je suis tombé sur vous en cherchant une information. je voulais savoir comment ecrire un programme pour mon oridinateur pour me connecter a internet sans rien d'autres.je pense que cest possible et cest meme ce qui se fait.
            merci d'avance.
            1. connect("internet");

              PS : je te garanti pas le succes du programme ;)
          3. reagrde avec addslashes() (et stripslashes() ) ou htmlentities()
            1. Bonjour à tous,
              J'ai besoin de récupérer le code html d'une de mes pages pour l'envoyer par mail...
              J'ai essayé file_get_contents et implode.
              Ca marche bien, sauf que j'obtiens pas mal d'erreurs, en particulier au niveau des </td>. (ma page est un tableau) .
              Les erreurs sont aléatoires selon les essais. Parfois un td> à la place de <td>, parfois un <//td> à la place de </td>..
              J'ai vérifié la page d'origine, le code est bon.
              Quelqu'un aurait il déjà rencontré ce type de problème ?
              Merci de votre aide

              Isa
              1. salut
                j ai essayé d utliser ta fonction ki recupere le code html en string en java
                quand j essaie de compiler ca me revoie cette erreur
                tu saurais pas comment faire

                essaie.java:20: Class StringBuilder not found.
                StringBuilder build = new StringBuilder();
                ^
                essaie.java:20: Class StringBuilder not found.
                StringBuilder build = new StringBuilder();
                ^
                essaie.java:29: Variable build may not have been initialized.
                toreturn = build.toString();
                ^
                3 errors
                1. Bonjour,

                  >>> kalesh import java.lang.StringBuilder

                  Cordialement

                  Dan
              • 1
              • 2