efinf:blc2016:regex

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
efinf:blc2016:regex [2016/11/14 16:16]
Ivo Blöchliger [Aufgaben]
efinf:blc2016:regex [2016/11/29 14:24] (current)
Ivo Blöchliger
Line 35: Line 35:
 </code> </code>
  
 +Nach gsub kann zusätzlich ein Block folgen, der als Parameter den aktuellen match (als String) bekommt. Dieser wird durch das Resultat vom Block ersetzt. Beispiel:
 +<code ruby>
 +str = "pineapple and bananas"
 +p str.gsub(/a./){|m|
 +  m[0]+m[1].upcase
 +}
 +</code>
 +==== Eliza ====
 +Ziel: Englische Sätze von der Ich- in die Du-Form umschreiben mittels Regular Expressions. Beispiele:
 +  * I think my toe hurts -> Why do **you** think that **your** toe hurts?
 +  * I'm so sad -> Does is happen often that **you're** so sad?
 +  * I told you so -> Can you elaborate on why **you** told **me** so?
 +
 +Dateien vom Donnerstag 17.11. (bräuchten noch ein bisschen Arbeit):
 +  * {{ :efinf:blc2016:regex:eliza.rb |}}
 +  * {{ :efinf:blc2016:regex:eliza-server.rb |}}
  
 ==== Nesa-Pilot ==== ==== Nesa-Pilot ====
   * Installieren Sie den Chrome (sudo apt-get install chromium-browser)   * Installieren Sie den Chrome (sudo apt-get install chromium-browser)
-  * Drücken Sie F12, um die Debug-Suite zu starten und aktivieren Sie den Tab "Network" +  * In Chrome, drücken Sie F12, um die Debug-Suite zu starten und aktivieren Sie den Tab "Network" 
-  * Gehen Sie auf die Startseite von Nesa: https://ksbg.nesa-sg.ch/loginto.php?mode=0&lang= +  * Gehen Sie auf die Startseite von Nesa: https://ksbg.nesa-sg.ch/loginto.php?mode=0&lang= (oder laden Sie die Seite neu) 
-  * Rechts-Klick auf ersten Netzwerkzugriff: "copy as cURL"  * Die curl-Kommandozeile in eine Datei speichern (z.B. startseite.curl)+  * Rechts-Klick auf ersten Netzwerkzugriff (mit Code 200): "copy as cURL"  * Die curl-Kommandozeile in eine Datei speichern (z.B. startseite.curl)
  
 Das curl-Kommando muss jetzt noch ein bisschen angepasst werden, damit die Cookies gespeichert und wiederverwendet werden: Das curl-Kommando muss jetzt noch ein bisschen angepasst werden, damit die Cookies gespeichert und wiederverwendet werden:
-  - Fügen Sie die Optionen ''-b nesa-cookies.txt -c nesa-cookies.txt'' hinzu. Damit werden Cookies von der Datei nesa-cookies.txt gelesen und neue wieder dort gespeichert.+  - Fügen Sie die Optionen ''-L -b nesa-cookies.txt -c nesa-cookies.txt'' hinzu. Damit werden Umleitungen automatisch verfolgt und Cookies von der Datei nesa-cookies.txt gelesen und neue wieder dort gespeichert.
   - Löschen Sie die entsprechende Header Option (falls vorhanden), die ein altes Cookie sendet (-H etc..)   - Löschen Sie die entsprechende Header Option (falls vorhanden), die ein altes Cookie sendet (-H etc..)
  
Line 58: Line 74:
  
   * Loggen Sie sich auf Nesa ein.   * Loggen Sie sich auf Nesa ein.
-  * Rechts-Klick auf ersten Netzwerkzugriff: "copy as cURL" +  * Rechts-Klick auf ersten Netzwerkzugriff: "copy as cURL"  * Die curl-Kommandozeile in eine Datei speichern (z.B. login.curl). *ACHTUNG* diese Datei enthält ihr Passwort im Klartext! Am besten ändern Sie ihr Passwort danach (oder auch davor). 
-  * Rechts-Klick auf ersten Netzwerkzugriff: "copy as cURL"  * Die curl-Kommandozeile in eine Datei speichern. *ACHTUNG* diese Datei enthält ihr Passwort im Klartext! Am besten ändern Sie ihr Passwort danach (oder auch davor).+  * Modifizieren Sie das curl-Kommando wie oben. 
 +  * In diesem Kommando muss der loginhash angepasst werden 
 + 
 + 
 +<code ruby> 
 +logincurl = File.read("login.curl"
 +puts logincurl 
 +# logincurl.gsub!(.....)  # FIXME 
 +puts logincurl  # ACHTUNG: Enthält ihr Passwort (eventuell durch regex rausfiltern). 
 + 
 +# Erste Seite nach login herunterladen 
 +nesaseite = `#{loginseite}` 
 +</code> 
 + 
 +Zusammengefasst als Funktion (liefert erste Seite nach Login): 
 +<code ruby> 
 +def getStartPage 
 +  `rm nesa-cookies.txt` 
 +  startseite = `bash startseite.curl`.force_encoding("ISO-8859-1").encode("UTF-8"
 +   
 +  # input type="hidden" value="a68ae62b0e4ffd730c315e37f50d0d5d" name="loginhash" 
 +   
 +  loginhash=startseite.scan(/value="([0-9a-f]+)"\s+name="loginhash"/)[0][0] 
 +   
 +  curllogin=File.read("login.curl"
 +  curllogin.gsub!(/loginhash=([^']+)'/,"loginhash=#{loginhash}'"
 +  `#{curllogin}`.force_encoding("ISO-8859-1").encode("UTF-8"
 +end 
 + 
 +</code> 
 + 
 +Nach erfolgreichem Login muss die Seite nach den gewünschten Links abgesucht werden: 
 +  * Im "F12-Modus", klicken Sie oben link auf das Pfeilsymbol (inspect elements) und klicken Sie auf einen interessanten Link. Der entsprechende Code wird angezeigt. 
 +  * Was zwischen nach href="" zwischen den Anführungszeichen steht interessiert uns. 
 + 
 + 
 +Zeichnen Sie dann einen beliebigen Seitenzugriff auf und kopieren sie das curl-Kommando, modifizieren Sie es wie oben und ersetzen die URL durch z.B. 'mypage'. Dieser String wird dann durch die gewünschte URL ersetzt. 
  • efinf/blc2016/regex.1479136598.txt.gz
  • Last modified: 2016/11/14 16:16
  • by Ivo Blöchliger