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
- Affichage de l’entête HTTP
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
- 1. On trouvera quelques notions sur XML et XSLT dans la page "Gestion XML d’une galerie d’images" [http://www.dg77.net/galerie/demo/index.htm#XSL]. Pour des exemples de transformations XSL voir la page "Documentation technique du site" [http://www.dg77.net/tekno/sitedoc.htm].
- 2. Attention : le fichier en question est du RSS + RDF 2.0, attention aux namespaces dans la transformation XSL.
- 3. L’instruction java -classpath… a été mise sur plusieurs lignes uniquement pour la clarté de la mise-en-page.