Le web de Dominique Guebey – Bazar informatique

Page web  : http://www.dg77.net/tekno/lynx/lynx_cmd.htm


   D o m i n i q u e   G u e b e y    J u n g l e      Bazar informatique

Le navigateur LYNX (suite)

Lynx en ligne de commande

Pour d’autres exemples par d’autres auteurs, cf infra section Avec et autour de Lynx.

Sommaire

Définition illustrée

Il y a une alternative à la page d’ouverture par défaut : un URL peut être directement appelé par Lynx depuis un écran console ("fenêtre DOS") ou un programme, avec de nombreux paramètres qui outrepassent éventuellement ce qui est défini par défaut ou dans le fichier de configuration. Pour une liste détaillée des options, voir la page de manuel. Exemple :

lynx http://www.sourceforge.net -accept_all_cookies -pauth=arthur:g3n567 -source

Dans cet exemple, Lynx est lancé en acceptant les cookies sans discussion ; on indique l’id. utilisateur (arthur) et le mot de passe (g3n567) pour passer le proxy ; -source provoque l’affichage du fichier source au lieu du texte formaté.

Autre exemple, aujourd’hui obsolète :

lynx.exe http://news.bbc.co.uk/1/low/world/default.stm -dump > bbc.txt

Le site de la BBC offrait une version Low Graphics, aujourd’hui disparue (23 mars 2010, cf BBC News low-graphics version [https://www.bbc.co.uk/blogs/bbcinternet/2010/03/news_and_sport_low_graphics_ve.html] ).

Quelques paramètres

-accept_all_cookies
Recevoir les cookies sans interrompre le traîtement. Voir exemples précédents.
-pauth  /  -auth
Passage automatique d’un identificateur et d’un mot-de-passe. -auth concerne l’accès à un site privé ; -pauth permet de passer automatiquement un PROXY réseau. Voir exemples précédents ; Pour éviter d’avoir à afficher le mot-de-passe, voir plus bas ("masquer le mot-de-passe").
-stdin
Avec le paramètre -stdin, Lynx peut recevoir les données à sortir par l’entrée standard (au lieu de lire un fichier, en général "page html" servie via un protocole réseau). Par défaut stdin désigne le clavier, mais on s’en sert plus souvent pour la sortie "redirigée" d’un programme. Voir exemple plus bas : "transformation xslt". L’option -stdin (transmission des données à sortir) n’est pas à confondre avec " - " (transmission de paramètres à utiliser) ni avec -post_data ou -get_data.
-
Réception des paramètres via stdin. Ceci n’exclut pas l’entré d’autres options par la voie normale (-[option] après la commande LYNX). Voir exemple plus bas
-post_data  /  -get_data
Utile pour la transmission des données d’un formulaire par l’entrée standard. Le protocole http connaît deux modalités d’envoi d’un URL : POST et GET. Les paramètres -post_data et get_data permettent de transmettre les chaînes de caractères voulues. Voir exemple ci-après
-source
Donne le fichier source, non formaté. Voir exemples ci-dessus.
-dump
Sortie formatée avec liste numérotée des liens. Voir exemples ci-dessus. L’utilisation de -dump est conseillé chaque fois qu’on veut envoyer les données vers stdout (généralement un fichier).
-nolist
Ne pas ajouter la liste des liens (cf -dump).
-cfg=[fichier]
Ce paramètre sert à préciser le fichier de configuration. Voir exemple plus bas : "transformation xslt".
-lss=[fichier]
Spécifier le fichier de coloration.
-traversal
Suivre successivement tous les liens à partir de la page initiale spécifiée ou par défaut. Grâce aux fichiers générés, cette option sera utile par exemple pour repérer les liens "brisés". Voir description et exemples plus bas.
-crawl
Associé à -traversal, sort chaque page hypertexte formatée dans un fichier lnk###########.dat. Avec -dump ou -source, on ne sort que la page initiale sur stdout.
-realm
Limite la navigation au domaine de démarrage. Cette option permet notamment de limiter l’exploration par -traversal à une portion d’un site.
-mime_header
Pour des raisons techniques, on peut avoir besoin de connaître les entêtes HTTP transmis par le serveur en réponse aux requêtes du navigateur. Avec Lynx, pas de problème (voir plus bas exemple).
-trace  /  -tlog
Si on est encore plus curieux, on peut générer un fichier trace des agissements du navigateur et de ses échanges avec les serveurs. Outre l’option -trace, ce log peut être déclenchée en permanence par la valeur d’environnement LYNX_TRACE. Attention, le fichier est rapidement énorme (voir un petit extrait ci-dessous). Vérifier l’existence d’un fichier .LOG (par exemple LY-TRACE.LOG) dans le répertoire de Lynx. L’option -tlog désactive (plus exactement bascule alternativement vers stdout ou vers le .log) la sortie de la trace.

Lecture avec Lynx d’un fichier XML / RSS après transformation XSL

A l’aide d’une transformation définie dans une feuille xslt, un fichier XML peut être transformé en un autre format, en général (x)html ou txt1.

lynx  http://www.liberation.fr/rss.php  -source  >  libe_rss.txt
java -classpath c:\j2sdk\bin\xalan.jar org.apache.xalan.xslt.Process 
        -in  libe_rss.txt  -xsl  c:\docume~1\admini~1\XML\XSL\rss.xsl
        |  c:\progra~1\lynx\lynx.exe -stdin  -cfg=c:\progra~1\lynx\lynx.cfg

Dans cet exemple, on crée d’abord avec Lynx une copie locale du fichier rss du journal Libération2. La ligne qui suit (java etc.)3 permet d’afficher directement dans lynx le format html généré par la transformation, celle-ci étant exécutée par le processeur Xalan sous Java. ..\rss.xsl est la feuille xslt utilisée. Noter le " | " ("tube" ou pipe) pour rediriger la sortie de l’instruction java comme entrée du programme suivant (d’où l’utilisation de -stdin pour spécifier "l’entrée standard" de Lynx). On a indiqué le fichier de configuration avec son chemin complet parce qu’en l’occurence il n’est pas dans le "Path".

On trouvera plus loin une méthode pour afficher un fichier RSS ou autre blog en cours de navigation : voir la section "configuration avancée"

Masquer le mot-de-passe : paramètres préenregistrés

Utilisation de " - " seul : pour ne pas provoquer l’affichage de son mot de passe, on met les paramètres d’accès au proxy dans un fichier ("pauth.txt" par exemple) comme suit (ne pas oublier la dernière ligne constituée de "---").

-pauth=arthur:g3n567
---

Application (exemple encore sous Windows, on favorise les infortunés utilisateurs de produits Microsoft) :

cd c:\progra~1\lynx
type pauth.txt | lynx.exe - http://<URL>

Formulaires en batch : utilisation de Post_Data

Une page de recherche sur mot-clef d’un Intranet (par exemple : http://intranet/search/search.php) comporte, au milieu du fouillis de Javascript, la zone d’entrée (input) de 40 caractères maximum ("searchFor") et le bouton d’envoi submit ("cherche"). Affichage du "source" :

<tr><td>Texte à rechercher<br/><i>(mots-clefs ou phrase)</i></td>
<td><input name="searchFor" type="text" size="40" value=""/></td></tr>
<tr><td colspan="2">
<input type="submit" value="cherche" title="Lancer la recherche" />

On veut faire une recherche sur le terme "consommables". Créons un fichier d’entrée ("post.txt") :

searchFor=consommables&
---

Lancement de Lynx :

cd c:\progra~1\lynx
type post.txt | lynx.exe -post_data -accept_all_cookies 
        http://intranet/search/search.php?action=cherche > liste.txt

Avec  type liste.txt | more  on voit qu’on a obtenu la liste des liens trouvés (voir le numérotage et le dump en fin de fichier) :

…
   Résultats de la recherche: 2 résultat(s) trouvé(s)
   (total: 2 éléments)
   n. [3]Titre [4]Description [5]Mots clefs
   1 [6]Consommables informatiques Articles et Bons de commande achat
   commande materiel bon fourniture
   2  [7]Succursales - Appro. consommables Articles et Bons de commande 
   achat commande materiel bon fourniture
   (total: 2 éléments)
…
   6. http://intranet/support/achats/consommables_info.php?PHPSESSID=edb968fdbbae554f7fa7d40f612be352
   7. http://intranet/support/achats/magasin.php?PHPSESSID=edb968fdbbae554f7fa7d40f612be352
…

Lynx est un ROBOT : exploration automatique de site

Avec les options décrites ci-dessus -crawl et -traversal, Lynx offre le moyen de parcourir des pages web pour en obtenir une image, des listes de liens ou d’anomalies. Ce mécanisme ne fonctionne que sur un serveur, pas avec un URL local du type file://… Exemple :

   lynx  -traversal  -crawl  -realm  http://www.w3.org/Style/

Avec -realm l’exploration se limitera aux pages situées dans l’arbre dont www.w3.org/Style/ est la racine (pages du W3C sur les Feuilles de Style). Le résultat est enregistré dans différents fichiers :

traverse.dat
Liste des liens du site
traverse.errors
Liste de liens provoquant une erreur avec le nom du fichier contenant le lien
reject.dat
Liste des URL non vérifiés par Lynx. Ceci inclut les "mailto" et les liens externes au site ou au "realm"
traverse2.dat
Liste des pages (liste des URL accompagnés de leurs titres)
lnk########.dat
Fichiers créés en cas d’utilisation de -crawl. Il s’agit de fichiers numerotés (lnk00000.dat, lnk00001.dat etc.) à partir des documents hypertextes lus. Dans chacun, les deux premières lignes contiennent l’URL complet (ligne THE_URL:) et le titre venu de la balise <title> (ligne THE_TITLE:). Ces fichiers sont formatés, l’option -source n’est pas applicable.

Informations serveur, trace et log par Lynx

Par exemple  lynx -mime_header http://www.w3.org  donnera :


HTTP/1.1 200 OK
Date: Sun, 10 Oct 2004 21:36:08 GMT
Server: Apache/1.3.31 (Unix) PHP/4.3.8
P3p: policyref="http://www.w3.org/2001/05/P3P/p3p.xml"
Cache-control: max-age=600
Expires: Sun, 10 Oct 2004 21:46:08 GMT
Last-modified: Thu, 07 Oct 2004 22:00:32 GMT
Etag: "4165bc80"
Accept-ranges: bytes
Content-length: 30504
Content-type: text/html; charset=utf-8
Via: 1.1 S1PS
Connection: close
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://ns.dg77.net/XML/" xml:lang="en-US" lang="en-US">
etc.
Trace (voir option -trace ci-dessus) :

Tout ce que vous avez toujours voulu savoir sur la négociation des requêtes HTTP sans jamais avoir osé le demander

  c:\progra~1\lynx\lynx.bat -trace http://www.google.com 


…

Composing Authorization for www.google.com:80//
HTAASetup_lookup: No template matched `/' (so probably not protected)
HTTP: Not sending authorization (yet).
LYCookie: Searching for 'www.google.com:80', '/'.
Composing Proxy Authorization for 10.134.59.254:8080/http://www.google.com/
HTAASetup_lookup: No template matched `http://www.google.com/' (so probably not protected)
HTTP: Not sending proxy authorization (yet).
Writing:
GET http://www.google.com/ HTTP/1.0\r
Host: www.google.com\r
Accept: text/html, text/plain, text/sgml, */*;q=0.01\r
Accept-Encoding: gzip, compress\r
Accept-Language: en\r
User-Agent: Lynx/2.8.5dev.17 libwww-FM/2.14FM SSL-MM/1.4.1 OpenSSL/0.9.7d-dev\r
\r


----------------------------------
Sending HTTP request.
HTTP: WRITE delivered OK
HTTP request sent; waiting for response.
HTTP: Trying to read 1535
HTTP: Read 218
HTTP: Rx: HTTP/1.1 407 Proxy authorization required 
HTTP: Scanned 2 fields from line_buffer
--- Talking HTTP1.
Server reply header lines:
Proxy-agent: iPlanet-Web-Proxy-Server/3.6
Date: Wed, 13 Oct 2004 06:41:36 GMT
Proxy-authenticate: basic realm="unspecified"
Content-type: text/html
Content-length: 271

Alert!: Proxy authorization required -- retrying

…

Writing:
GET http://www.google.fr/ HTTP/1.0\r
Host: www.google.fr\r
Accept: text/html, text/plain, text/sgml, */*;q=0.01\r
Accept-Encoding: gzip, compress\r
Accept-Language: en\r
User-Agent: Lynx/2.8.5dev.17 libwww-FM/2.14FM SSL-MM/1.4.1 OpenSSL/0.9.7d-dev\r
Cookie2: $Version="1"\r
Cookie: PREF=ID=7b881a57793381f8:LD=fr:TM=1097649713:LM=1097649719:S=7mxRgwLhT3FSUWr3\r
Proxy-Authorization: Basic ZGd1ZWJleS5ncmR1OmtmQDUx\r
\r
----------------------------------
Sending HTTP request.
HTTP: WRITE delivered OK
HTTP request sent; waiting for response.
HTTP: Trying to read 1535
HTTP: Read 159
HTTP: Rx: HTTP/1.1 200 OK 
HTTP: Scanned 2 fields from line_buffer
--- Talking HTTP1.
HTTP/1.1 200 OK
GETCH: Got 0x0.
LYReadCmdKey(0) ->^@ (0x0)
HTFormat: Constructing stream stack for www/mime to www/present
HTFormat: Looking up presentation for www/mime to www/present
StreamStack: found weak wildcard match: www/present
FindPresentation: found exact match: www/mime
StreamStack: found exact match: www/mime
StreamStack: Returning "MIMEParser"
HTMIME:  Cache-control: private
Content-type: text/html
Server: GWS/2.1
Content-length: 2375

…

Notes