<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Äpfelchen &#187; http</title>
	<atom:link href="http://www.aepfelchen.com/tag/http/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aepfelchen.com</link>
	<description>Erfahrungen mit iMac, iPhone und Mac OS X</description>
	<lastBuildDate>Sun, 16 Oct 2011 13:07:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Daten aus Webdiensten mit wget sichern (OS X, Firefox)</title>
		<link>http://www.aepfelchen.com/2008/11/daten-aus-webdiensten-mit-wget-sichern-os-x-firefox/</link>
		<comments>http://www.aepfelchen.com/2008/11/daten-aus-webdiensten-mit-wget-sichern-os-x-firefox/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 13:01:23 +0000</pubDate>
		<dc:creator>Markus</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Cookies.txt]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[time machine]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://www.aepfelchen.com/?p=256</guid>
		<description><![CDATA[Für den Seelenfrieden gibt es doch nichts besseres als ein Backup. Für meine lokalen Daten erledigt das unter OS X 10.4 Leopard Time Machine von Apple ohne viel Aufhebens. Übrig bleiben aber die ganzen Daten, die ich im Web pflege, wie z.B. Delicious-Bookmarks und Bloglines-Subscriptions. Manuell kann man diese Daten auf die lokale Festplatte exportieren, [...]]]></description>
			<content:encoded><![CDATA[<p>Für den Seelenfrieden gibt es doch nichts besseres als ein Backup. Für meine lokalen Daten erledigt das unter OS X 10.4 Leopard <a href="http://www.apple.com/de/macosx/features/timemachine.html">Time Machine</a> von Apple ohne viel Aufhebens. Übrig bleiben aber die ganzen Daten, die ich im Web pflege, wie z.B. <strong>Delicious-Bookmarks</strong> und <strong>Bloglines-Subscriptions</strong>. Manuell kann man diese Daten auf die lokale Festplatte exportieren, und genau das wollte ich heute automatisieren. Das geht nach einigen kleinen Hürden mit <strong>wget</strong> problemlos.</p>
<p><strong>1. Beispiel Bloglines</strong></p>
<p>Die Seite, die alle Subscriptions als OPML liefert, lautet <code>http://www.bloglines.com/export</code>. Einzige Hürde: man muss eingeloggt sein. Im Browser klappt der Export nach dem Login dann dank Cookies. Und diese kann man auch wget übergeben, und zwar mit dem Parameter <code>"--load-cookies cookies.txt"</code>. Cookies.txt ist eine Datei mit Cookies im Netscape-Format. Mein Lieblingsbrowser Firefox speichert die Cookies allerdings seit Version 3 in einer Sqlite-Datenbank. Zum Glück steht <a href="http://blog.schlunzen.org/2008/06/19/firefox-3-und-cookiestxt/">hier</a>, wie man die Daten leicht daraus extrahieren kann &#8211; und zwar mit folgendem Script (von mir leicht vereinfacht):</p>
<blockquote><p>
#!/usr/bin/python<br />
import sqlite3 as db<br />
import sys<br />
cookiedb = &#8216;/Users/&lt;username>/Library/Application Support/Firefox/Profiles/&lt;profilename>/cookies.sqlite&#8217;<br />
connection = db.connect(cookiedb)<br />
cursor = connection.cursor()<br />
contents = &#8220;host, path, isSecure, expiry, name, value&#8221;<br />
cursor.execute(&#8220;SELECT &#8221; +contents+ &#8221; FROM moz_cookies&#8221;)<br />
file = open(&#8220;./cookies.txt&#8221;, &#8216;w&#8217;)<br />
index = 0<br />
for row in cursor.fetchall():<br />
  file.write(&#8220;%s\tTRUE\t%s\t%s\t%d\t%s\t%s\n&#8221; % (row[0], row[1],<br />
    str(bool(row[2])).upper(), row[3], str(row[4]), str(row[5])))<br />
  index += 1<br />
file.close()<br />
connection.close()
</p></blockquote>
<p>Der Aufruf zum Sichern sieht dann so aus:</p>
<blockquote><p>wget &#8211;load-cookies cookies.txt &#8220;http://www.bloglines.com/export&#8221; -O bloglines.opml</p></blockquote>
<p><strong>2. Beispiel delicious</strong></p>
<p>Hier lautet die URL zum Export <code>https://secure.delicious.com/settings/profile/export</code>. Wieder braucht man die cookies.txt. Aber es gibt noch ein weiteres Problem: Die export-URL verlangt einige Parameter als POST-Request. Zum Glück kann wget auch diesen Trick mittles &#8220;&#8211;post-data&#8221;. Die Parameter sehen so aus: &#8220;.crumb=&lt;ID>&#038;include_tags=yes&#038;include_notes=yes&#038;submit=submit&#8221;. Die &#8220;&lt;ID>&#8221; muss man aus dem Quelltext der Webseite &#8220;https://secure.delicious.com/settings/bookmarks/export&#8221; auslesen (nach .crumb suchen), denn ich denke, die ist variabel (und ich hoffe aber, sie bleibt für mich stabil&#8230;). Ausserdem gibt es noch den wget-Parameter &#8220;&#8211;no-check-certificate&#8221;, der Probleme mit dem SSL-Zertifikat ignoriert. Insgesamt sieht der Aufruf dann so aus:</p>
<blockquote><p>wget &#8211;no-check-certificate &#8211;load-cookies cookies.txt &#8220;https://secure.delicious.com/settings/profile/export&#8221;   &#8211;post-data &#8220;.crumb=&lt;ID>&#038;include_tags=yes&#038;include_notes=yes&#038;submit=submit&#8221; -O delicious.html
</p></blockquote>
<p>Jetzt nur noch das Ganze in ein Script packen, um es via cron-job oder sowas regelmäßig und ohne weiteres Zutun anzustoßen. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.aepfelchen.com/2008/11/daten-aus-webdiensten-mit-wget-sichern-os-x-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

