Curl erkennt den abgelaufenen Wert im Cookie nicht richtig

Ich versuche, ein Login auf pinterest.com mit curl durchzuführen. Ich habe folgenden Request-Response-Flow erhalten:

GET-Request das Anmeldeformular und kratzen versteckte Felder (csrftoken)POST-Request-Anmeldeinformationen (Mail und PW) und verschliffenes csrftokenSession-Cookie zum Anmelden erhalten

Mit Curl kann ich die folgenden Header sehen, die gesendet und empfangen werden:

<code> GET /login/?next=%2F HTTP/1.1
 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
 Host: pinterest.com
 Referer:
 Accept: text/html,application/xhtml+xml,application/xml,*/*
 Accept-Language: de-de,en-us
 Connection: keep-alive

 HTTP/1.1 200 OK
 Content-Type: text/html; charset=utf-8
 Date: Tue, 10 Apr 2012 15:03:24 GMT
 ETag: "45d6a85f0ede46f13f4fc751842ce5b7"
 Server: nginx/0.8.54
 Set-Cookie: csrftoken=dec6cb66064f318790c6d51e3f3a9612; Max-Age=31449600; Path=/
 Set-Cookie: _pinterest_sess="eJyryMwNcTXOdtI3zXcKNq0qznIxyXVxK/KqSsy3tY8vycxNtfUN8a3yc3E09nXxLPdztLVVK04tLs5MsfXNAopVpVf6VnlW+Qba2gIAuqgZIg=="; Domain=pinterest.com; HttpOnly; expires=Tue, 17-Apr-2012 15:03:24 GMT; Max-Age=1334675004; Path=/
 Vary: Cookie, Accept-Encoding
 Content-Length: 4496
 Connection: keep-alive
</code>

Nach Schritt 1 werden die beiden Cookies csrftoken und _pinterest_sess gesetzt. Ein Blick in die Cookie-JAR-Datei (ich verwende CURLOPT_COOKIEFILE und CURLOPT_COOKIEJAR, damit Curl die Cookie-Verarbeitung übernimmt) zeigt Folgendes:

<code>   # Netscape HTTP Cookie File
   # http://curl.haxx.se/rfc/cookie_spec.html
   # This file was generated by libcurl! Edit at your own risk.

   pinterest.com        FALSE        /        FALSE        1365519805        csrftoken        dec6cb66064f318790c6d51e3f3a9612
   #HttpOnly_.pinterest.com        TRUE        /        FALSE        -1626222087        _pinterest_sess        "eJyryMwNcTXOdtI3zXcKNq0qznIxyXVxK/KqSsy3tY8vycxNtfUN8a3yc3E09nXxLPdztLVVK04tLs5MsfXNAopVpVf6VnlW+Qba2gIAuqgZIg=="
</code>

Als erstes ist das #HttpOnly_ vor der _pinterest_sess-Cookie-Zeile zu beachten. Ich gehe einfach davon aus, dass Curl das in Ordnung bringt. Wenn man aber weiter schaut, kann man sehen, dass ein negativer Wert als Verfallsdatum festgelegt ist: -1626222087

Ich weiß nicht, woher das kommt, weil der Cookie mit "expires = Tue, 17-Apr-2012 15:03:24 GMT" gesetzt ist (das sind ungefähr 7 Tage in der Zukunft, gerechnet ab heute).

Bei der nächsten Anforderung wird der Cookie _pinterest_sess nicht durch Wellung gesetzt:

<code> POST /login/?next=%2F HTTP/1.1
 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
 Host: pinterest.com
 Referer: https://pinterest.com/login/?next=%2F
 Cookie: csrftoken=dec6cb66064f318790c6d51e3f3a9612
 Accept: text/html,application/xhtml+xml,application/xml,*/*
 Accept-Language: de-de,en-us
 Connection: keep-alive
 Content-Length: 123
 Content-Type: application/x-www-form-urlencoded

 HTTP/1.1 302 FOUND
 Content-Type: text/html; charset=utf-8
 Date: Tue, 10 Apr 2012 15:05:26 GMT
 ETag: "d41d8cd98f00b204e9800998ecf8427e"
 Location: http://pinterest.com/
 Server: nginx/0.8.54
 Set-Cookie: _pinterest_sess="eJzLcssPCy4NTclIjvAOrjQzyywoCChISgvLDi+2tY9PrSjILEottvUN8a3yc4k09gtxrfRLt7VVK04tLs5MAYonV/qGeFb4ZkWW+4LES4tTi+KBEv4u6UZ+WYEmvlm+QOxZ6R/iWOEbEmgLAKNfJps="; Domain=pinterest.com; HttpOnly; expires=Tue, 17-Apr-2012 15:05:26 GMT; Max-Age=1334675126; Path=/
 Vary: Cookie
 Content-Length: 0
 Connection: keep-alive
</code>

In der Antwort wird ein anderes _pinterest_sess-Cookie gesetzt, da curl nicht das letzte gesendet hat.

Derzeit weiß ich nicht, ob ich etwas falsch mache oder ob Curl den abgelaufenen Wert im Cookie nicht richtig analysieren kann.

Jede Hilfe wäre sehr dankbar :)

// edit Noch etwas: Lauthttp://opensource.apple.com/source/curl/curl-57/curl/lib/cookie.c Mit der Funktion curl_getdate () wird das Datum extrahiert. In der Dokumentation zu dieser Funktion sind einige Beispiele aufgeführt (http://curl.haxx.se/libcurl/c/curl_getdate.html):

So, 06. November 1994, 08:49:37 GMTSonntag, 06. November 94, 08:49:37 GMTSun Nov 6 08:49:37 199406. November 1994 08:49:37 GMT06-Nov-94 08:49:37 GMT6. November, 08.49.37 Uhr 199406. November 1994, 08:49:37 Uhr06.11.94 08:49:371994, 6. November, 08:49:37 GMT08:49:37 06.11.94Sonntag 94, 6. November, 08:49:37 Uhr1994 6. November06.11.94So 6. November 941994.Nov.6So / Nov / 6/94 / GMTSo, 06. November 1994, 08:49:37 Uhr MEZ06. November 1994, 08:49:37 ESTSo, 12. September 2004, 15:05:58 -0700Sa, 11. September 2004 21:32:11 +020020040912 15:05:58 -070020040911 +0200

Keines von ihnen entspricht dem oben genannten Ablaufdatum "Di, 17-Apr-2012 15:03:24 GMT", da in allen Beispielen mit Bindestrichen nur zweistellige Jahre verwendet werden.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage