span class

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lrlmaistro
Messages : 3
Inscription : lun. 03/juil./2023 13:16

span class

Message par lrlmaistro »

Depuis quelques mois je tente désespérément de télécharger le contenu d'une page web comportant des données qui semblent difficiles à récupérer.
J'ai essayé avec recievehttpfile() et HTTPRequest().
J'ai même essayé avec wget.exe mais sans succès.

Je parle ici d'une ligne en html qui m'est retournée comme suit:
<span class="xhr" data-method="traffic" data-let="&quot;&quot;">&nbsp;</span>
Évidemment, avec firefox, la page web est propre et totalement visible.

Y-a-t'il une solution pour ce type de donnée?
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: span class

Message par cage »

Bonjour,

Page Web en http:// ou en https://

Peux-tu nous donner toutes les informations retournées par wget.

Si rien de secret, avoir l'adresse de la page Web pourrait aider.

cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
lrlmaistro
Messages : 3
Inscription : lun. 03/juil./2023 13:16

Re: span class

Message par lrlmaistro »

voici le lien:
"https://www.eurofly.stefankiss.sk/ef2/traffic"
je n’obtient qu'un maigre fichier de 6 ko.
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: span class

Message par cage »

Le test de récupération de la page fonctionne comme il se doit:

Code : Tout sélectionner

EnableExplicit
Define httprequest, httpstatuscode$, foo$
Define Download, Progress, Buffer
Define URL$="https://www.eurofly.stefankiss.sk/ef2/traffic"
Define OUT$="traffic.txt"
httprequest = HTTPRequest(#PB_HTTP_Get, URL$, #Empty$, #PB_HTTP_HeadersOnly)
Debug "httprequest = " + httprequest
If httprequest
  httpstatuscode$ = HTTPInfo(httprequest, #PB_HTTP_StatusCode)
  FinishHTTP(httprequest)
  Debug "httpstatuscode$=" + httpstatuscode$
  If httpstatuscode$ = "200"
    Download = ReceiveHTTPFile(URL$,OUT$,#PB_HTTP_Asynchronous)
    If Download
      Repeat
        Progress = HTTPProgress(Download)
        Select Progress
          Case #PB_HTTP_Success
            Buffer = FinishHTTP(Download)
            foo$ = Str(Round(Buffer/1024,#PB_Round_Up)) + " Ko"
            Debug "Download finished (size: "+Buffer+") soit "+foo$
            Break
          Case #PB_HTTP_Failed
            Debug "Download failed"
            FinishHTTP(Download)
            Break
          Case #PB_HTTP_Aborted
            Debug "Download aborted"
            FinishHTTP(Download)
          Default
            Debug "Current download: " + Progress
            foo$ = Str(Round(Progress/1024,#PB_Round_Up)) + " Ko"
            Debug "Download : "+foo$
        EndSelect
        Delay(100)
      ForEver
    Else  ; If Download
      Debug "Download error"
    EndIf ; If Download
  EndIf   ; If httpstatuscode$ = "200"
EndIf     ; If httprequest
Le fichier récupéré (traffic.txt) contient exactement la même chose que le code source de la page.
Avec Firefox, clic droit sur la page puis Code source de la page
Toutes les informations sur les vols en cours (Current flights) ne sont pas dans le code source de la page.
Dans le code source, apparait
<script src="/assets/jquery-v3-6-0.min.js"></script>
Je récupère ce script jquery-v3-6-0.min.js

Code : Tout sélectionner

EnableExplicit
Define URL$="https://www.eurofly.stefankiss.sk/assets/jquery-v3-6-0.min.js"
Define OUT$="traffic.js"
If ReceiveHTTPFile(URL$,OUT$)
  Debug "Download finished"
Else
  Debug "Download failed"
EndIf
Dans le code source, apparait aussi
<strong>
<h1>
The current traffic in Eurofly 2
</h1>
</strong>
</center>
</div>
<div class="content"><div>
<br><br>
<center><h2>Current flights</h2></center>
<br>
<span class="xhr" data-method="current_flights" data-let="&quot;&quot;">&nbsp;</span>
<br><br>
Je suppose que pour avoir le contenu des vols en cours, il faut utiliser l'url https://www.eurofly.stefankiss.sk/asset ... 6-0.min.js en lui passant le(s) bon(s) paramètre(s) genre
.../jquery-v3-6-0.min.js&data-method="current_flights"&data-let="&quot;&quot;"
mais je n'obtiens qu'un code 404
Je ne sais pas s'il faut utiliser une méthode Get ou Post, ni même si mon idée est bonne.
Peut-être que d'autres "PléBéien" auront une meilleure analyse du problème.
Je ne laisse pas tomber et je vais continuer a creuser. (Sous les galets, la plage.)
cage
Dernière modification par cage le sam. 19/août/2023 17:34, modifié 1 fois.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: span class

Message par Marc56 »

Bonsoir,

Oui, RecieveHTTPfile() et HTTPRequest() ne récupèrent que le code source d'une page (= texte brut).
Si le code source contient du code javascript, ce dernier doit être interprété par un navigateur pour produire quelque-chose de lisible.

:wink:
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: span class

Message par cage »

Bonjour,
Le problème vient du fait que le contenu de la page est affiché ou rafraichi sans que le contenu de la page change.
Le contenu est généré sur le serveur et affiché dans la page Web sans que la page soit en quoi que se soit modifiée.
Le code html qui affiche les informations a l'écran est le suivant:

Code : Tout sélectionner

<div class="content">
	<div>
		<center><h2>Current flights</h2></center>
		<span class="xhr" data-method="current_flights" data-let="&quot;&quot;">&nbsp;</span>
		
		<center><h2>Last flights</h2></center>
		<span class="xhr" data-method="last_flights" data-let="&quot;&quot;">&nbsp;</span>
	</div>
</div>
Les 2 lignes a prendre en compte commencent par <span class="xhr" data-method="
Informations sur la méthode: docs/Web/API/XMLHttpRequest
J'avoue humblement que je ne sais pas traiter ce genre de données.
J'ai regardé le script jquery-v3-6-0.min.js et je l'ai soumis au site www.jsnice.org pour le rendre lisible.
Je n'en ai pas tiré grand chose.
Si un Puriste Gourou du Web passe par là, il pourra peut-être nous éclairer et nous indiquer si c'est possible de récupérer les données.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: span class

Message par Ollivier »

Alors... Vous avez des fichiers textes qui sont distants.

Principalement des fichiers à extension "js". Mais pas que...

Pour en avoir le coeur net, la 1ère des choses à faire est l'inventaire des inclusions de fichier à partir du fichier "père". (D'oû le fameux père-to-père? Je... Non!)

Traduction : en bonne franquette, on utilise des IncludeFile. Imaginons que nous ayions besoin de chercher une aiguille dans une botte de foin, ou plutôt dans la totalité de notre code source, fichiers inclus y compris.

Comment va-t-on procéder ?
-> On va chercher toutes les occurences IncludeFile, récupérer les noms de fichiers en queue de ces occurences, directs (ex : "myInclusion.pbi") et indirect (#myInclusion$). Puis on va ouvrir tous ces fichiers, un par un, pour chercher ladite aiguille.

On va être consciencieux : à l'instar d'une lecture de dossiers et sous-dossier, on va imaginer que certaines inclusions (terme signifiant "fichier(s) inclu(s)") appellent, eux-même des inclusions ou "sous-inclusions".

Donc notre recherche devra être récursive.

En javaScript, c'est pareil : on peut inclure avec...
Dernière modification par Ollivier le jeu. 17/août/2023 23:32, modifié 1 fois.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: span class

Message par Ollivier »

... avec include et require. Deux occurences à chercher pour faire l'inventaire des fichiers sources utilisés pour la navigation d'un site, ou bien d'une partie de ce site, c'est selon.

Nota : attention aux chemins préfixés avant les noms de fichiers d'inclusion. Ils (ces chemins) sont forcément incomplets. Il faut donc les compléter. Une petite recherche "manuelle" s'impose pour savoir quelle "racine" doit être placée en tête de préfixe (en langage Bacchus, ce qui préfixe le préfixe).

À ce stade, on n'a pas trouvé l'aiguille, mais juste les bottes de foin.

Mais c'est quoi l'aiguille ?
-> C'est une classe, ici, a priori la classe xhr

Donc dans ce listing de codes source, on va devoir chercher l'occurence xhr.

Mais une fois l'aiguille en main, il faut la passer au microscope pour y trouver ce dont est composée une classe : les méthodes.

A priori, deux méthodes sont à chercher :
current_flights
et
last_flights

Donc ce sont les occurences xhr::current_flights et xhr::last_flights que l'on va devoir chercher.

Une fois trouvés, on va tomber sur du code HTML (<span bigoudi>bouclette</span>) qui est remplacé par un autre code HTML.

Soit il (ce remplacement) est direct, soit il est un peu moins direct, soit il est encore moins direct.

D'intuition (les yeux bandés), le code "remplaçant" devrait ressembler à du xml :
<companyName>Airblabla</companyName>
<country>Syldavia</country>
etc...

Mais ça, c'est s'il est direct. Chose peu probable. Par contre, même indirect, c'est au final ce type d'info qui doit être retrouvé.

En fait, tout se joue alors avec ce qu'il y a de programmé dans les méthodes xhr::current_flights et xhr::last_flights...
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: span class

Message par cage »

Bonjour,

Merci Ollivier,
Le fichier .js offusqué (crypté) fait 88 Ko et dé-offusqué fait 222 Ko
L'entête de ce fichier est
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
Une fois arrivé là, je ne sais plus quoi faire.
Si j'avais trouvé current_flights ou last_flights dans ce fichier, j'aurais peut-être pu avancer.

@lrlmaistro, si tu n'a pas trop souvent besoin du contenu de cette page, tu peux envisager de
1) Ouvrir la page dans Firefox
2) Ouvrir le menu Hamburger Imprimer...
3) Sélectionner Enregistrer au format PDF/Orientation Portrait/Pages toutes/Taille du papier A4/Format Simplifié/Options Aucunes
4) Cliquer sur Enregistrer

J'utilise SumatraPDF comme lecteur par défaut sur mon PC
J'ouvre le document pdf enregistré dans SumatraPDF puis Menu/Fichier/Enregistrer sous...
Dans Type : je choisi Documents texte puis enregistrer

J'obtiens un fichier au format texte que je peux analyser avec PB
Voila, voilou.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
lrlmaistro
Messages : 3
Inscription : lun. 03/juil./2023 13:16

Re: span class

Message par lrlmaistro »

pour ma part j'ai tenté d'essayer plusieurs option avec wget.exe mais sans succès. par contre je me demande si ça pourrait marcher en php? mon hébergeur web me permet le php. S'il y avait une solution... Existe-t-il un fureteur portable qu'on peut manipuler par ligne de commande? Si non, je ne vois qu'une solution. Avec un mini pc dédié, j'utiliserais firefox en continu avec un petit programme qui le contrôlerait et enverrait les données sur mon propre espace web.
Mon projet, c'est un petit programme de surveillance du trafique aérien qui notifie les utilisateurs non-voyants d'un changement. En fait, eurofly est un simulateur de vol adapté à notre cause.
tout allait bien, jusqu'à-ce que le site subisse des modifications.
En terminant, je vous remercie sincèrement pour votre aide.
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: span class

Message par cage »

Pour utiliser PHP sur ton PC, tu peux récupérer la version que tu désires sur le site web officiel, tu décompresse l'archive dans C:\PHP par exemple et tu peux utiliser php.exe en ligne de commande et même a partir de PB

Code : Tout sélectionner

Y:\php>php.exe -v
PHP 8.2.9 (cli) (built: Aug  1 2023 12:41:16) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.2.9, Copyright (c) Zend Technologies

Y:\php>php.exe -h
Usage: php [options] [-f] <file> [--] [args...]
Je suis sur qu'il doit être possible de récupérer les données que tu désires, mais il faudrait un Puristes qui s'y connaisse bien en développement de portail internet et avec une bonne connaissance des techniques JQuery
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: span class

Message par Ollivier »

Clair, il nous faudrait quelqu'un qui s'y connaisse... Quoique !

En réalité, tout le monde peut s'y connaître : tout est question de temps à pouvoir consacrer pour apprendre !

Car apprendre en ligne, gratuitement, est offert à tout détenteur d'une ligne Internet (et, un minimum anglophone) :

W3 Schools : JQuery
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: span class

Message par cage »

Apprendre JQuery, pourquoi pas.
Mais, car il y a un mais, c'est comme apprendre PB comme je l'ai fais sans pour autant en connaitre toutes les arcanes.
Il y a les API, la 2D, la 3D, le son, la vidéo, et bien d'autre encore que je ne maitrise pas du tout alors au final, je suis toujours un débutant en PB.
Je suis souvent sur le forum anglais pour essayer de m'enrichir des connaissances de personnes qui ont une maitrise certaine dans des domaines particuliers, même si souvent je n'y comprend pas grand chose.
Apprendre JQuery ne me permettra pas de connaitre toutes les astuces employées par les développeurs de sites pour nous empêcher de récupérer les données a notre avantages.
Il y a des techniques d’offuscation et de codage qui rendent les choses très difficiles.
L'idéal pour ça, serait un WebGadget PB moderne capable d'afficher de telles pages et qui permettrais de récupérer le contenu entier de la page affichée. Après, ce n'est que de l'analyse de contenu et je sais a peu près le faire en PB
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: span class

Message par Marc56 »

Hello

Il est pratiquement impossible d'exécuter du js hors d'un navigateur. Ni même avec wget, ni curl.

Mais si tu peux faire "Enregistrer sous (ctrl+s)", alors autant faire enregistrer sous au format txt tu as directement le code du texte affiché, donc déjà interprété par le navigateur.
Type Fichier texte (troisième option) pour avoir un seul fichier et non pas plusieurs.

Pour automatiser cela, plusieurs option:
  • Selenium webdriver
  • Un outil outil d'automation (macro) qui enregistrent les mouvements souris et clavier
  • Des outils d'automations qui reconnaissent les formes et images pour ne pas cliquer n'importe où.
  • La fonction --headless de chrome ou firefox
:wink:
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: span class

Message par cage »

Bonsoir,

Pour aller plus loin, j'ai voulu essayer de voir ce que l'on pouvait faire avec une balise <iframe></iframe> dans un document html
Pour compliquer la chose, j'ai voulu aussi essayer ce que ça donnait dans WebUI wrapper

Voici le code grandement simplifié du fichier WebUI.pb

Code : Tout sélectionner

; /*
;   WebUI Library 2.3.0
;   http://webui.me
;   https://github.com/webui-dev/webui
;   Copyright (c) 2020-2023 Hassan Draga.
;   Licensed under MIT License.
;   All rights reserved.
;   Canada.
; */

SetCurrentDirectory(GetPathPart(ProgramFilename()))

CompilerIf Not #PB_Compiler_Thread
  CompilerError "Enable threadsafe in compiler options"
CompilerEndIf

CompilerIf #PB_Compiler_IsMainFile
  EnableExplicit
CompilerEndIf


#WEBUI_VERSION = "2.3.0"
#WEBUI_MAX_IDS = 512

Enumeration webui_browsers
  #AnyBrowser
  #Chrome
  #Firefox
  #Edge
  #Safari
  #Chromium
  #Opera
  #Brave
  #Vivaldi
  #Epic
  #Yandex
EndEnumeration

Enumeration webui_runtimes
  #None
  #Deno
  #NodeJS
EndEnumeration

Enumeration webui_events
  #WEBUI_EVENT_DISCONNECTED
  #WEBUI_EVENT_CONNECTED
  #WEBUI_EVENT_MULTI_CONNECTION
  #WEBUI_EVENT_UNWANTED_CONNECTION
  #WEBUI_EVENT_MOUSE_CLICK
  #WEBUI_EVENT_NAVIGATION
  #WEBUI_EVENT_CALLBACK
EndEnumeration

Structure webui_event_t Align #PB_Structure_AlignC
  window.i        ; The window object number
  event_type.i    ; Event type
  *element        ; HTML element ID
  *data           ; JavaScript data
  event_number.i  ; Internal WebUI
EndStructure

PrototypeC PrototypeC_webui_event(*e.webui_event_t)

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    ImportC "webui-2-x64.lib"
  CompilerCase #PB_OS_Linux
    ImportC "webui-2-x64.so"
  CompilerCase #PB_OS_MacOS
    ;ImportC "webui-2-x64.dyn"
    ImportC "webui-2-static-x64.a"
  CompilerEndSelect
  ; Create a new webui window object.
  webui_new_window()
  ; Create a new webui window object.
  webui_new_window_id(window_number.i)
  ; Get a free window ID that can be used with `webui_new_window_id()`
  webui_get_new_window_id.i()
  ; Bind a specific html element click event with a function. Empty element means all events.
  webui_bind.i(window.i, element.p-Ascii, webui_event.PrototypeC_webui_event)
  ; Show a window using a embedded HTML, or a file. If the window is already
  webui_show.i(window.i, content.p-Ascii)
  ; Same as webui_show(). But with a specific web browser.
  webui_show_browser(window.i, content.p-Ascii, browser.i)
  ; Set the window in Kiosk mode (Full screen)
  webui_set_kiosk(window.i, status.i)
  ; Wait until all opened windows get closed.
  webui_wait()
  ; Close a specific window only. The window object will still exist.
  webui_close(window.i)
  ; Close a specific window and free all memory resources.
  webui_destroy(window.i)
  ; Close all opened windows. webui_wait() will break.
  webui_exit()
  ; Set the web-server root folder path.
  webui_set_root_folder.i(window.i, path.p-Ascii)
  
  ; -- Other ---------------------------
  ; Check a specific window if it's still running
  webui_is_shown.i(window.i)
  ; Set the maximum time in seconds to wait for browser to start
  webui_set_timeout(second.i)
  ; Set the default embedded HTML favicon
  webui_set_icon(window.i, icon.p-Ascii, icon_type.p-Ascii)
  ; Allow the window URL to be re-used in normal web browsers
  webui_set_multi_access(window.i, status.b)
  
  ; -- JavaScript ----------------------
  ; Run JavaScript quickly with no waiting for the response.
  webui_run(window.i, script.p-Ascii)
  ; Run a JavaScript, and get the response back (Make sure your local buffer can hold the response).
  webui_script.i(window.i, script.p-Ascii, timeout.i, *buffer, buffer_length.i)
  ; Chose between Deno and Nodejs runtime for .js and .ts files.
  webui_set_runtime(window.i, run_time.i)
  ; Parse argument as integer.
  webui_get_int.q(*e.webui_event_t)
  ; Parse argument as string.
  webui_get_string.i(*e.webui_event_t)
  ; Parse argument as boolean.
  webui_get_bool.i(*e.webui_event_t)
  ; Return the response to JavaScript as integer.
  webui_return_int(*e.webui_event_t, number.i)
  ; Return the response to JavaScript as string.
  webui_return_string(*e.webui_event_t, const.p-Ascii)
  ; Return the response to JavaScript as boolean.
  webui_return_bool(*e.webui_event_t, bool.i)
  ; Base64 encoding. Use this to safely send text based data to the UI. If it fails it will return NULL.
  webui_encode.i(*char)
  ; Base64 decoding. Use this to safely decode received Base64 text from the UI. If it fails it will return NULL.
  webui_decode.i(char.p-Ascii)
  ; Safely free a buffer allocated by WebUI, For example when using webui_encode().
  webui_free(*ptr)
  
  ; -- Interface -----------------------
  ; Bind a specific html element click event with a function. Empty element means all events. This replace webui_bind(). The func is (Window, EventType, Element, Data, EventNumber)
  webui_interface_bind.i(window.i, element.p-Ascii, *func)
  ; When using `webui_interface_bind()` you may need this function to easily set your callback response.
  webui_interface_set_response(window.i, event_number.i, response.p-Ascii)
  ; Check if the app still running or not. This replace webui_wait().
  webui_interface_is_app_running.i()
  ; Get window unique ID
  webui_interface_get_window_id.i(window.i)
  ; Get a unique ID. Same ID as `webui_bind()`. Return > 0 if bind exist.
  webui_interface_get_bind_id.i(window.i, element.p-Ascii)
  EndImport
    
  CompilerIf #PB_Compiler_IsMainFile
    
    Define MainWindow.i
    
    MainWindow = webui_new_window()

    ; Show a new window
    webui_show(MainWindow, "traffic.html")
    
    ; Wait Until all windows get closed
    webui_wait()
  CompilerEndIf
Au lancement, WebUI.pb ouvre le fichier traffic.html qui lui même ouvre un fichier index.html dans une balise <iframe>
On pourra voir qu'on peut récupérer le contenu <iframe> par du code js
Ensuite, on charge une page Web dans <iframe> et là, on se rend compte qu'on ne peut plus récupérer son contenu avec js

Voici le fichier traffic.html

Code : Tout sélectionner

<!DOCTYPE html>
<html>
<head>
  <title>Traffic in Eurofly 2</title>
  <style>
    body, html {
        margin: 0;
        padding: 0;
        height: 100%;
        overflow: hidden;
    }
    textarea {
        margin:  10px;
        padding: 10px;
        width:   90%;
        height:  100px;
    }
    iframe {
        width: 100%;
        height: 1000px;
        border: none;
    }
  </style>
</head>
<body>
  <center>
  <textarea id="my_textarea" disabled>&nbsp;</textarea>
  <br>
  <button onclick="MyTraffic();">Obtenir le contenu de la page</button>
  &nbsp;&nbsp;
  <button onclick="MyCheck();">Tester les balises</button>
  &nbsp;&nbsp;
  <button onclick="MySite();">Ouvrir le site www.eurofly.stefankiss.sk</button>
  &nbsp;&nbsp;
  <!--
  <select id="selector" onchange="document.getElementById('my_frame').src = document.getElementById('selector')">
	https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
  -->
  <select id="selector" onchange="MySelector();" required onblur="">
	<!--
  <option disabled selected>Ouvrir un site</option>
	-->
	<optgroup label="Ouvrir un site">
	<option value=""                                 >Ouvrir un site                   </option>
  <option value="http://pbcage.free.fr"            >http://pbcage.free.fr            </option>
	<option value="https://www.purebasic.com"        >https://www.purebasic.com        </option>
	<option value="https://www.purebasic.com/french/">https://www.purebasic.com/french/</option>
	<option value="https://www.google.fr"            >https://www.google.fr            </option>
	<option value="https://www.google.com"           >https://www.google.com           </option>
	<optgroup label="WebUI releases">
	<option label="http://webui.me"                  >http://webui.me                   </option>
	<option value="https://github.com/webui-dev/webui/releases">https://github.com/webui-dev/</option>
	<option value="https://www.purebasic.fr/english/viewtopic.php?t=81814">WebUI wrapper on english forum</option>
	</select>
  <button onclick="window.location.href='traffic.html';">Home</button>
  </center>
  <div id="my_div">&nbsp;<div>
  <!--
  <iframe id="my_frame" src="http://yh.toolbox.free.fr"></iframe>
  <iframe id="my_frame" src="https://www.eurofly.stefankiss.sk/ef2/traffic"></iframe>
  -->
  <iframe id="my_frame" src="index.html" >&nbsp;</iframe>
  <script>
    function MyCheck() {
      document.getElementById('my_textarea').innerHTML = "";
      var element1 = document.getElementById("my_textarea");
      //alert(element1);
      document.getElementById("my_textarea").innerHTML = element1;
      var element2 = document.getElementById("my_div");
      document.getElementById("my_textarea").innerHTML = element1+"\n\n"+element2;
      //alert(element2);
      var element3 = document.getElementById("my_frame");
      document.getElementById("my_textarea").innerHTML = element1+"\n\n"+element2+"\n\n"+element3;
      //alert(element3);
      }
      
    function MyTraffic() {
      document.getElementById('my_textarea').innerHTML = "";
      document.getElementById('my_textarea').innerHTML = document.getElementById("my_frame").contentDocument.body.innerHTML;
      }
      
    function MySite() {
      document.getElementById('my_frame').src = "https://www.eurofly.stefankiss.sk/ef2/traffic"
      }
      
    function MySelector() {
      var element = document.getElementById('selector');
			var value   = element.value;
      document.getElementById("my_textarea").innerHTML = value;
      document.getElementById('my_frame').src = value;
			element.selectedIndex = 0;
      }
  </script>
</body>
</html>
Et enfin, voici le fichier index.html

Code : Tout sélectionner

<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<nobr>
<center>
Ceci est une page html minimale pour tests.<br>
<br>
<a href="https://www.purebasic.com/"        target="_self">PureBasic US</a><br>
<br>
<a href="https://www.purebasic.com/french/" target="_self">PureBasic FR</a><br>
<br>
<b>Last updated: 2023.08.22</b>
</center>
</nobr>
</body>
</html>
sauvegardez ces 3 fichiers en respectant leurs noms (vous pouvez les modifier par la suite)
traffic.html peut-être ouvert soit par WebUI.pb soit directement dans le navigateur de votre choix.
Les résultats peuvent ne pas êtres identiques selon le navigateur.

L'interface est minimale, le but du jeu étant de tester WebUI et la récupération du contenu d'une page pour notre ami lrlmaistro
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Répondre