{"id":63840,"date":"2024-12-14T14:00:25","date_gmt":"2024-12-14T13:00:25","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=63840"},"modified":"2024-12-19T09:18:15","modified_gmt":"2024-12-19T08:18:15","slug":"sql-und-cookies-und-firefox","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2024\/12\/sql-und-cookies-und-firefox.htm","title":{"rendered":"SQL und Cookies und Firefox"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2024\/12\/sql-und-cookies-und-firefox.htm#comments'>4 Kommentare.<\/a>)<\/small> <\/div>\n<p>In der 10. Klasse treibt man SQL und Datensicherheit, und beides l\u00e4sst sich sch\u00f6n mit Firefox demonstrieren. Die Sch\u00fclerinnen und Sch\u00fcler k\u00f6nnen ihre eigene Browser-Vergangenheit und, wohl sp\u00e4rlicher, ihre Lesezeichen mit SQL-Abfragen durchsuchen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einf\u00fchrung<\/h2>\n\n\n\n<p>Firefox speichert seine Informationen in einem <strong>Profilordner<\/strong>. Das ist praktisch, wenn man von einem Rechner zu einem anderen umzieht: dann muss man nur den Profilordner mitnehmen und kann dann in einem neuen Firefox mit dem gleichen Profil arbeiten, egal ob Linux oder Windows oder MacOS. (Der Profilordner ist \u00fcbrigens standardm\u00e4\u00dfig an einem Ort, von dem ich keine Backups mache, also habe ich einen anderen Ort daf\u00fcr eingestellt.)<\/p>\n\n\n\n<p>Unter anderem speichert Firefox Informationen in den Dateien <code>places.sqlite<\/code> und <code>cookies.sqlite<\/code>. Die erste Datei enth\u00e4lt alles \u00fcber besuchte Webseiten und Lesezeichen, die zweite alle \u00fcber die gespeicherten Cookies. Die Dateinamen-Endung deutet bei beiden darauf hin, dass es sich um <strong>SQLite-Dateien<\/strong> handelt, also ein Datenbankformat. Wie sch\u00f6n, dass in der 10. Klasse sowohl SQL-Datenbanken als auch Datensicherheit und Tracking Thema sind! Da bietet es sich doch an, einmal mit diesen Dateien zu spielen.<\/p>\n\n\n\n<p>Richtig Neues wird man nicht erfahren. Alle Informationen kriegt man einfacher, indem man einfach im Browser die Lesezeichenverwaltung benutzt beziehungsweise auf das Burger-Men\u00fc klickt, dann Einstellungen\/Privatsph\u00e4re und Sicherheit, und sich dann zu den Cookies durchfragt. Aber es geht ja auch darum, was da technisch im Hintergrund abl\u00e4uft.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ein erstes Beispiel und ein Exkurs<\/h2>\n\n\n\n<p>Man kann diese Datenbank-Dateien auch au\u00dferhalb von Firefox \u00f6ffnen. Mit Access oder Base geht das leider nur nach Installation zus\u00e4tzlicher Verbindungssoftware, aber es gibt webbasierte Software und vor allem portable Programme wie SQLite Browser. Darin kann man dann SQL-Abfragen zu den in der Datei gespeicherten Daten stellen, etwa:<\/p>\n\n\n\n<p><code>SELECT moz_bookmarks.title, moz_keywords.keyword<br>FROM moz_bookmarks, moz_keywords<br>WHERE moz_bookmarks.fk = moz_keywords.place_id<\/code><\/p>\n\n\n\n<p>Diese Abfrage bedeutet:<br>Nenne mir die Titel aller Lesezeichen (die in der Tabelle <em>moz_bookmarks<\/em> gepeichert sind) und aller Keywords (die in der Tabelle <em>moz_keywords <\/em>gepeichert sind), sofern die Lesezeichen mit den Keywords etwas zu tun haben. Die Ergebnistabelle sieht so aus:<\/p>\n\n\n\n<figure style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.227), 1rem);\" class=\"wp-block-table has-ibm-plex-mono-font-family\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>title<\/strong><\/td><td><strong>keyword<\/strong><\/td><\/tr><tr><td>Wikipedia Deutsch<\/td><td>wde<\/td><\/tr><tr><td>WIkipedia Englisch<\/td><td>wen<\/td><\/tr><tr><td>Duckuckgo<\/td><td>d<\/td><\/tr><tr><td>Google Verbatim<\/td><td>gg<\/td><\/tr><tr><td>Google<\/td><td>g<\/td><\/tr><tr><td>Youtube<\/td><td>yt<\/td><\/tr><tr><td>Wiktionary deutsch<\/td><td>wikde<\/td><\/tr><tr><td>Wiktionary Englisch<\/td><td>wiken<\/td><\/tr><tr><td>woxikon<\/td><td>syn<\/td><\/tr><tr><td>Amazon DE<\/td><td>a<\/td><\/tr><tr><td>Duden<\/td><td>du<\/td><\/tr><tr><td>Herr Rau Suchfenster<\/td><td>hr<\/td><\/tr><tr><td>Suchen mit &amp;udm=14 | the disenshittification Konami code | GOOGLE GOOD<\/td><td>ggg<\/td><\/tr><tr><td>Suchen mit MetaGer &#8211; Mehr als eine Suchmaschine<\/td><td>m<\/td><\/tr><tr><td>Urban Dictionary<\/td><td>ud<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Keywords sind eine Eigenschaft von Firefox-Lesezeichen, eine Art selbst vergebene Abk\u00fcrzungen. Dem Lesezeichen mit dem Titel &#8222;Wikipedia Deutsch&#8220;, dessen Adresse nat\u00fcrlich auch gespeichert ist, aber hier nicht abgefragt wurde, entspricht das selbst vergebene Keyword &#8222;wde&#8220;. Das f\u00fchrt dazu, dass ich in der Such- und Adresszeile des Browsers eingeben kann &#8222;wde Julie Andrews&#8220;, und dann lande ich gleich auf der Wikipediaseite zu Julie Andrews. (Den Tipp mit den Keywords habe ich von Kathrin Passig <a href=\"https:\/\/techniktagebuch.tumblr.com\/post\/750175767167647744\/seit-ich-wei%C3%9F-nicht-mehr-wann-2010-vielleicht\">aus dem Techniktagebuch<\/a>.)<\/p>\n\n\n\n<p>Unter &#8222;Google Verbatim&#8220; mit dem Keyword &#8222;gg&#8220; findet sich \u00fcbrigens die wortgetreue Googlesuche. Die tats\u00e4chliche Adresse kann ich mir nicht merken, man muss sich dorthin klicken, und das Lesezeichen finde ich nicht immer, aber wenn ich &#8222;gg Grmblhx&#8220; eintippe, wird automatisch dieses Lesezeichen benutzt, das mir tats\u00e4chlich nur die Fundorte mit exakt der Zeichenkette &#8222;Grmblhx&#8220; darin ausgibt, genau so, wie man glaubt, dass das fr\u00fcher auch immer funktioniert hat. Zum Ausprobieren: &#8222;<a href=\"https:\/\/www.google.com\/search?tbs=li:1&amp;q=Grmblhx\">gg grmblhx<\/a>&#8220; im Gegensatz zu &#8222;<a href=\"https:\/\/www.google.de\/search?q=grmblhx\">g grmblhx<\/a>&#8222;. &#8211; Wenn ich &#8222;a christmas carol&#8220; suche, wird allerdings automatisch bei Amazon gesucht, da muss ich \u00fcber die Wahl meines Keyword-K\u00fcrzels noch einmal nachdenken. (Und: ggg f\u00fchrt zu einer Google-Suche *ohne* KI-Verschlimmbesserungen. Das kann man n\u00e4mlich ausw\u00e4hlen, jedenfalls noch.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zur\u00fcck zu den Datenbank-Dateien<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Die Datei places.sqlite<\/h4>\n\n\n\n<p>Die Datei <code>places.sqlite<\/code> enth\u00e4lt etliche Datenbanktabellen. Hier sind drei wichtige, wobei ich auch hier nur einige wichtige Attribute anf\u00fchre:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"291\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_moz-700x291.png\" alt=\"\" class=\"wp-image-63879\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_moz-700x291.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_moz-300x125.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_moz-150x62.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_moz.png 1400w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Die Tabelle <code>moz_places<\/code> ist zentral, sie enth\u00e4lt alle gespeicherten Adressen. Dabei ist es vorerst irrelevant, ob es sich um Adressen handelt, die zus\u00e4tzlich als Lesezeichen gespeichert sind oder alle in letzter Zeit besuchten Adressen. Zu jeder Adresse wird der URL gespeichert, der Titel der Seite (der oft NULL ist) und eine Beschreibung (sofern vorhanden), der Zeitpunkt des letzten Besuchs, die Anzahl der Besuche seit dem letzten Zur\u00fccksetzen und die &#8222;frecency&#8220;, Portmanteau und irgendwie verrechnete Kombination aus <em>frequency<\/em> und <em>recent<\/em>. Ich wei\u00df es nicht, aber vielleicht dient die <em>frecency<\/em> dazu zu entscheiden, welche von mehreren passenden URLs zur Autovervollst\u00e4ndigung in der Adresszeile vorgeschlagen wird, wenn man anf\u00e4ngt, eine Adresse zu schreiben?<\/p>\n\n\n\n<p>Die tats\u00e4chlichen Lesezeichen sind in der Tabelle <code>moz_bookmarks<\/code> gespeichert, die aber selber gar keine URL-Adressen verwaltet. Aber ein Tabelleneintrag dort hat mit einem Fremdschl\u00fcssel im Attribut <code>fk<\/code> (f\u00fcr: foreign key) eine Referenz auf eine in <code>moz_places<\/code> gespeicherte Adresse. Au\u00dferdem gibt es eine Referenz auf ein Keyword, siehe oben, die allerdings meist NULL sein d\u00fcrfte. &#8211; Das Attribut <code>title <\/code>bezeichnet dabei entweder den Namen des Lesezeichens, oder den Namen des Verzeichnisses (wenn es sich beim Eintrag um ein solches handelt), oder den Namen des Schlagwort (wenn es sich beim Eintrag um ein solches handelt).<\/p>\n\n\n\n<p>Die zuletzt besuchten 10 URLs:<\/p>\n\n\n\n<p><code>SELECT <code>moz_places<\/code><\/code>.<code>title, <code>moz_places<\/code><\/code>.<code>url<br>FROM moz_places<br>WHERE moz_places.last_visit_date NOT NULL<br>ORDER BY moz_places.last_visit_date DESC<br>LIMIT 10<\/code><\/p>\n\n\n\n<p>Die am h\u00e4ufigsten besuchten 10 URLs:<\/p>\n\n\n\n<p><code>SELECT <code>moz_places<\/code><\/code>.<code>title, <code>moz_places<\/code><\/code>.<code>url, <code>moz_places<\/code><\/code>.<code>visit_count<br>FROM moz_places<br>ORDER BY moz_places.visit_count DESC<br>LIMIT 10<\/code><\/p>\n\n\n\n<p>Die relevantesten 10 URLs:<\/p>\n\n\n\n<p><code>SELECT <code>moz_places<\/code><\/code>.<code>title, <code>moz_places<\/code><\/code>.<code>url, <code>moz_places<\/code><\/code>.<code>frecency<br>FROM moz_places<br>ORDER BY moz_places.frecency DESC<br>LIMIT 10<\/code><\/p>\n\n\n\n<p>Alle Lesezeichen samt URL dazu, bei denen im Namen des Lesezeichens &#8222;Douglas Adams&#8220; erscheint:<\/p>\n\n\n\n<p><code>SELECT moz_bookmarks.title, moz_places.url<br>FROM moz_places, moz_bookmarks<br>WHERE moz_places.id = moz_bookmarks.fk<br>AND moz_bookmarks.title LIKE \"%Douglas Adams%\"<\/code><\/p>\n\n\n\n<p>Intern arbeitet Firefox so \u00e4hnlich. Wenn ich bei der Lesezeichen-Verwaltung nach &#8222;elephant&#8220; suche, sehe ich das:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_bookmarks.png\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"125\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_bookmarks-700x125.png\" alt=\"\" class=\"wp-image-63881\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_bookmarks-700x125.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_bookmarks-300x54.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_bookmarks-150x27.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_bookmarks-1536x275.png 1536w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_bookmarks.png 1720w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n\n\n\n<p>Intern steckt eine Abfrage wie diese dahinter, die mir das gleiche Ergebnis liefert:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"699\" height=\"416\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_sql.png\" alt=\"\" class=\"wp-image-63882\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_sql.png 699w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_sql-300x179.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_sql-150x89.png 150w\" sizes=\"auto, (max-width: 699px) 100vw, 699px\" \/><\/figure>\n\n\n\n<p>Zugegeben: Meine Abfrage durchsucht nur die Namen der Lesezeichen nach &#8222;elephant&#8220;, w\u00e4rend die Firefox-Abfrage zus\u00e4tzlich die Namen von Schlagw\u00f6rtern und die URLs durchsucht. Das geschieht auch mit SQL, aber diese Abfrage gestaltet sich etwas schwieriger. Denn:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Die Sache mit den Schlagw\u00f6rtern<\/h4>\n\n\n\n<p>Jaaaaaa&#8230; schwieriger zu vermitteln, w\u00fcrde ich in der Schule weglassen. Das Attribut <code>parent<\/code> gibt in <code>moz_bookmarks <\/code>zum einen an, wo das Lesezeichen gespeichert ist: im Lesezeichenmen\u00fc oder in der Toolbar oder in Weitere Lesezeichen. Und der Attributwert von fk entscheidet dar\u00fcber, ob das Lesezeichen am Ende gar kein Lesezeichen ist, sondern ein Schlagwort oder ein Verzeichnis f\u00fcr Lesezeichen.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>parent = 2 hei\u00dft, das <em>Element <\/em>ist im Lesezeichenmen\u00fc gespeichert<\/li>\n\n\n\n<li>parent = 3 hei\u00dft, das <em>Element <\/em>ist in der Toolbar gespeichert<\/li>\n\n\n\n<li>parent = 4 hei\u00dft, das <em>Element <\/em>ist ein Schlagwort<\/li>\n\n\n\n<li>parent = 5 hei\u00dft, das <em>Element <\/em>ist unter &#8222;Other Bookmarks&#8220; gespeichert.<\/li>\n\n\n\n<li>parent &gt; 5 hei\u00dft, das <em>Element <\/em>geh\u00f6rt zum Schlagwort oder Verzeichnis mit der entsprechenden <code>id<\/code> (in derselben Tabelle)<\/li>\n\n\n\n<li><em>Element <\/em>kann sein: Ein echtes mit einer Adresse assoziiertes Lesezeichen (dann ist der Wert von fk eine Zahl, n\u00e4mlich ein Fremdschl\u00fcssel f\u00fcr moz_places.id), oder ein Verzeichnis oder Schlagwort, das nur dazu da ist, Elemente zu verwalten (dann hat den Wert NULL).<\/li>\n<\/ul>\n\n\n\n<p>Diese Konstruktion f\u00fchrt auch dazu, dass wenn ich ein Lesezeichen in 1 Verzeichnis einordne und mit 2 Schlagw\u00f6rtern versehe, dass dann das Lesezeichen in <em>drei<\/em> Datens\u00e4tzen in <code>moz_bookmarks<\/code> auftaucht: Einmal mit Titel und als an einem konkreten Ort gespeichert (parent = 49, wobei 49 die id des Verzeichnisses ist) und einmal mit parent = 2104 (das eine Schlagwort) und einmal mit parent = 2613 (das andere Schlagwort). Bei den letzten Eintr\u00e4gen ist das Attribut <em>title <\/em>NULL, womit immerhin Redundanz halbwegs vermieden wird. Richtig sauber w\u00e4re n\u00e4mlich eine eigene Beziehungstabelle f\u00fcr die n:m-Beziehung zwischen Lesezeichen und Schlagwort, aber vielleicht aus Performanzgr\u00fcnden macht man das hier ohne.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Die Datei cookies.sqlite<\/h4>\n\n\n\n<p>Die Datei <code>cookies.sqlite<\/code> enth\u00e4lt eine Tabelle, <code>moz_cookies,<\/code> hier wieder ein gek\u00fcrztes Klassendiagramm:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"219\" height=\"186\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_cookies.png\" alt=\"\" class=\"wp-image-63884\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_cookies.png 219w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_cookies-150x127.png 150w\" sizes=\"auto, (max-width: 219px) 100vw, 219px\" \/><\/figure>\n\n\n\n<p>Ein Cookie ist eine kurze Textdatei in einem bestimmten Format. Wenn man eine Webseite besucht, kann diese dem Browser anbieten, einen solchen Cookie mitzuschicken. Den Cookie speichert der Browser dann und schickt wiederum beim n\u00e4chsten Besuch der Webseite diesen Cookie, also diese kleine Textdatei, mit. Der Server kriegt den Cookie und kann anhand dessen und der beim Server gespeicherten Daten dar\u00fcber zum Beispiel erkennen, dass der Benutzer schon einmal da war, oder dass man ihn als eingeloggt betrachten sollte (dann muss der Benutzer keine Zugangsdaten mehr eingeben) und seinen Benutzernamen. <\/p>\n\n\n\n<p>Firefox speichert diese Cookies nicht als separate Textdateien, die umst\u00e4ndlicher zu verwalten und zu durchsuchen w\u00e4ren, sondern in der oben genannten Datenbanktabelle. Die Datens\u00e4tze dazu sehen so aus (Ausschnitt):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_cookies.png\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"71\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_cookies-700x71.png\" alt=\"\" class=\"wp-image-63888\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_cookies-700x71.png 700w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_cookies-300x31.png 300w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_cookies-150x15.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_sqlite_cookies.png 1333w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n\n\n\n<p>Wenn Facebook einen Cookie setzt, kann Instagram den auslesen, und umgekehrt, weil die beiden Seiten kooperieren; sie geh\u00f6ren ja zum gleichen Konzern. Und wer wei\u00df, welche Firma noch alles. So kann ein Profil erstellt werden, man kann mitz\u00e4hlen, wer wann wie oft welche Seiten besucht. Passt zum Lehrplan in Informatik 10, wo es um das Zusammenf\u00fchren von Informationen geht, und was man damit machen kann.<\/p>\n\n\n\n<p>(Neben Cookies, die man noch halbwegs kontrollieren kann, gibt es nat\u00fcrlich noch weitere M\u00f6glichkeiten zum Tracking. Auch ein spannendes Thema.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Passw\u00f6rter?<\/h3>\n\n\n\n<p>Die Passw\u00f6rter sind in logins.json gespeichert, allerdings in verschl\u00fcsselter Form. Der Schl\u00fcssel ist in key4.db gespeichert, auch einer SQLite-Datei, aber in keinem unmittelbar verwendbaren Format. Mit zius\u00e4tzlicher Software kann man das wohl zusammenf\u00fchren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tats\u00e4chliche Speicherung der Daten<\/h2>\n\n\n\n<p>In der 12. Jahrgangsstufe geht es gerade um B\u00e4ume, genauer: geordnete Bin\u00e4rb\u00e4ume. Auch Datenbanken speichern ihre Daten intern in B\u00e4umen, insbesondere nutzt SQLite dazu B-B\u00e4ume und (wie ich mir angelesen habe) B+-B\u00e4ume. Da k\u00f6nnte man also auch ankn\u00fcpfen, aber das w\u00e4re wieder eigenes Thema.<\/p>\n\n\n\n<p>(Gerne auf technische und Tippfehler hinweisen, da sind bestimmt einige drin.)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(4 Kommentare.) In der 10. Klasse treibt man SQL und Datensicherheit, und beides l\u00e4sst sich sch\u00f6n mit Firefox demonstrieren. Die Sch\u00fclerinnen und Sch\u00fcler k\u00f6nnen ihre eigene Browser-Vergangenheit und, wohl sp\u00e4rlicher, ihre Lesezeichen mit SQL-Abfragen durchsuchen. Einf\u00fchrung Firefox speichert seine Informationen in einem Profilordner. Das ist praktisch, wenn man von einem Rechner zu einem anderen umzieht: [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":63882,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25],"tags":[227],"class_list":["post-63840","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatik","tag-informatik"],"jetpack_featured_media_url":"https:\/\/www.herr-rau.de\/wordpress\/archiv\/firefox_elephant_sql.png","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/63840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=63840"}],"version-history":[{"count":3,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/63840\/revisions"}],"predecessor-version":[{"id":63954,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/63840\/revisions\/63954"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media\/63882"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=63840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=63840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=63840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}