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:42]
Ivo Blöchliger [Nesa-Pilot]
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= (oder laden Sie die Seite neu)   * 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 66: Line 82:
 logincurl = File.read("login.curl") logincurl = File.read("login.curl")
 puts logincurl puts logincurl
-loginseite.gsub!(.....)  # FIXME +logincurl.gsub!(.....)  # FIXME 
-puts loginseite+puts logincurl  # ACHTUNG: Enthält ihr Passwort (eventuell durch regex rausfiltern).
  
 # Erste Seite nach login herunterladen # Erste Seite nach login herunterladen
 nesaseite = `#{loginseite}` 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> </code>
  
Line 79: Line 112:
  
 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. 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.1479138151.txt.gz
  • Last modified: 2016/11/14 16:42
  • by Ivo Blöchliger