![]() |
Re: CookieCrumbler 1.2.6
Zitat:
Zitat:
Zitat:
Zitat:
CookieCrumblerApp.pas Ich lege alle Cookies in einer, naja, universellen Cookie-Liste ab. Beim speichern kopiere ich mir die Cookies wieder in die spezielle "Format-Cookie-List" und speichere.
Delphi-Quellcode:
BCCookies.pas
procedure TCookieCrumblerApp.SaveCookies;
var iCookie, iFile: Integer; MozillaCookies: TBcMozillaCookies; FirefoxCookies: TBcFirefoxCookies; FlashCookies: TBcFlashSharedObjectsCookies; ChromeCookies: TBcChromeCookies; IECookies: TBcIECookies; IEDHTMLCookies: TBcIEDHTMLBehaviorsCookies; MozillaDOM: TBcMozillaDOMStorageCookies; //SafariCookies: TBcSafariCookies; TempCookies: TBcMultiCookieHolder; begin MozillaCookies := TBcMozillaCookies.Create(nil); FirefoxCookies := TBcFirefoxCookies.Create(nil); FlashCookies := TBcFlashSharedObjectsCookies.Create(nil); ChromeCookies := TBcChromeCookies.Create(nil); IECookies := TBcIECookies.Create(nil); IEDHTMLCookies := TBcIEDHTMLBehaviorsCookies.Create(nil); MozillaDOM := TBcMozillaDOMStorageCookies.Create(nil); //SafariCookies := TBcSafariCookies.Create(nil); TempCookies := TBcMultiCookieHolder.Create(nil); for iFile := 0 to Files.Count -1 do begin TempCookies.Clear; if FDebugMode then begin Log.Add(DateTimeToStr(now) + #9 + 'Save' + #9 + IntToStr(Integer(Files[iFile].Format)) + #9 + Files[iFile].FileName + '(start)' + #9 + IntToStr(iFile + 1) + '/' + IntToStr(Files.Count)); Log.SaveToFile(IncludeTrailingPathDelimiter(GetShellFolder(CSIDL_DESKTOP)) + 'CookieCrumbler.log'); end; for iCookie := 0 to Cookies.Count -1 do begin if StrToInt(Cookies[iCookie].Source) = iFile then TempCookies[TempCookies.Add].Assign(Cookies[iCookie]); end; case Files[iFile].Format of cfFirefox: begin FirefoxCookies.Clear; for iCookie := 0 to TempCookies.Count -1 do FirefoxCookies[FirefoxCookies.Add].Assign(TempCookies[iCookie]); FirefoxCookies.SaveToFile(Files[iFile].FileName); end; cfFlash: begin FlashCookies.Clear; for iCookie := 0 to TempCookies.Count -1 do FlashCookies[FlashCookies.Add].Assign(TempCookies[iCookie]); FlashCookies.SaveToDirectory(Files[iFile].FileName); end; cfChrome: begin ChromeCookies.Clear; for iCookie := 0 to TempCookies.Count -1 do ChromeCookies[ChromeCookies.Add].Assign(TempCookies[iCookie]); ChromeCookies.SaveToFile(Files[iFile].FileName); end; cfIE: begin IECookies.Clear; for iCookie := 0 to TempCookies.Count -1 do IECookies[IECookies.Add].Assign(TempCookies[iCookie]); IECookies.SaveToDirectory(Files[iFile].FileName, True); end; cfIEDHTML: begin IEDHTMLCookies.Clear; for iCookie := 0 to TempCookies.Count -1 do IEDHTMLCookies[IEDHTMLCookies.Add].Assign(TempCookies[iCookie]); IEDHTMLCookies.SaveToDirectory(Files[iFile].FileName); end; cfMozilla: begin MozillaCookies.Clear; for iCookie := 0 to TempCookies.Count -1 do MozillaCookies[MozillaCookies.Add].Assign(TempCookies[iCookie]); MozillaCookies.SaveToFile(Files[iFile].FileName); end; cfMozillaDOM: begin MozillaDOM.Clear; for iCookie := 0 to TempCookies.Count -1 do MozillaDOM[MozillaDOM.Add].Assign(TempCookies[iCookie]); MozillaDOM.SaveToFile(Files[iFile].FileName); end; {cfSafari: begin SafariCookies.Clear; for iCookie := 0 to TempCookies.Count -1 do SafariCookies[SafariCookies.Add].Assign(TempCookies[iCookie]); SafariCookies.SaveToFile(Files[iFile].FileName); end; } end; if FDebugMode then begin Log.Add(DateTimeToStr(now) + #9 + 'Save' + #9 + IntToStr(Integer(Files[iFile].Format)) + #9 + Files[iFile].FileName + '(end)' + #9 + IntToStr(iFile + 1) + '/' + IntToStr(Files.Count)); Log.SaveToFile(IncludeTrailingPathDelimiter(GetShellFolder(CSIDL_DESKTOP)) + 'CookieCrumbler.log'); end; end; TempCookies.Free; MozillaCookies.Free; FirefoxCookies.Free; FlashCookies.Free; ChromeCookies.Free; IECookies.Free; IEDHTMLCookies.Free; MozillaDOM.Free; //SafariCookies.Free; end;
Delphi-Quellcode:
type
... TBcFirefoxCookies = class(TBcHTTPCookies) protected procedure SetCookie(Index: Integer; Value: TBcFirefoxCookie); function GetCookie(Index: Integer):TBcFirefoxCookie; function PrimaryKeyIsUnique(Value: Int64; ExceptItem: Integer):Boolean; public function Add:Integer; procedure LoadFromFile(FileName: String); procedure SaveToFile(FileName: String); property Cookies[Index: Integer]: TBcFirefoxCookie read GetCookie write SetCookie; default; end; ... {$WARNINGS OFF} TBcCookie = class(TPersistent) private FName: String; FContent: String; FDomain: String; FPath: String; FExpires: TDateTimeEx; FSecure: LongBool; FWholeDomain: LongBool; FLastAccessed: TDateTimeEx; FCreated: TDateTimeEx; FFlags: Int64; FData: String; FFileName: String; FOwner: String; protected procedure SetLastAccessed(Value: TDateTimeEx); procedure SetCreated(Value: TDateTimeEx); procedure SetExpires(Value: TDateTimeEx); property Secure: LongBool read FSecure write FSecure; property WholeDomain: LongBool read FWholeDomain write FWholeDomain; property LastAccessed: TDateTimeEx read FLastAccessed write SetLastAccessed; property Created: TDateTimeEx read FCreated write SetCreated; property Flags: Int64 read FFlags write FFlags; property Name: String read FName write FName; property Content: String read FContent write FContent; property Domain: String read FDomain write FDomain; property Path: String read FPath write FPath; property Expires: TDateTimeEx read FExpires write SetExpires; property Data: String read FData write FData; property FileName: String read FFileName write FFileName; property Owner: String read FOwner write FOwner; public constructor Create; destructor Destroy; procedure Assign(Source: TBcCookie); procedure AssignTo(Dest: TBcCookie); end; {$WARNINGS ON} TBcHTTPCookie = class(TBcCookie) public function IsBroken:Boolean; function IsExpired:Boolean; published property Name; property Content; property Domain; property Path; property Expires; end; TBcMozillaCookie = class(TBcHTTPCookie) published property Secure; property WholeDomain; end; TBcFirefoxCookie = class(TBcMozillaCookie) published property LastAccessed; property Created; end; ... { TBcFirefoxCookies } procedure TBcFirefoxCookies.SetCookie(Index: Integer; Value: TBcFirefoxCookie); begin FCookies[Index] := Value; end; function TBcFirefoxCookies.GetCookie(Index: Integer):TBcFirefoxCookie; begin Result := FCookies[Index] as TBcFirefoxCookie; end; function TBcFirefoxCookies.Add:Integer; var NewCookie: TBcFirefoxCookie; begin NewCookie := TBcFirefoxCookie.Create; Result := FCookies.Add(NewCookie); end; function TBcFirefoxCookies.PrimaryKeyIsUnique(Value: Int64; ExceptItem: Integer):Boolean; var iCookie: Integer; begin Result := True; for iCookie := 0 to Count -1 do begin if (iCookie <> ExceptItem) and (Cookies[iCookie].Created.AsPRTime = Value) then begin Result := False; Break; end; end; end; procedure TBcFirefoxCookies.LoadFromFile(FileName: string); var db: TSQLiteDatabase; table: TSQLIteTable; begin Clear; db := TSQLiteDatabase.Create(FileName); try if db.TableExists('moz_cookies') then begin table := db.GetTable('SELECT id, name, value, host, path, expiry, isSecure, isHTTPOnly, lastAccessed FROM moz_cookies'); try while not table.EOF do begin with Cookies[Add] do begin Name := table.FieldAsString(table.FieldIndex['name']); Content := table.FieldAsString(table.FieldIndex['value']); Domain := table.FieldAsString(table.FieldIndex['host']); Path := table.FieldAsString(table.FieldIndex['path']); Expires.AsUnixTime(StrToInt64(table.FieldAsString(table.FieldIndex['expiry']))); Secure := LongBool(StrToIntDef(table.FieldAsString(table.FieldIndex['isSecure']), 0)); WholeDomain := LongBool(StrToIntDef(table.FieldAsString(table.FieldIndex['isHTTPOnly']), 0)); LastAccessed.AsPRTime(StrToInt64(table.FieldAsString(table.FieldIndex['lastAccessed']))); Created.AsPRTime(StrToInt64(table.FieldAsString(table.FieldIndex['id']))); end; table.Next; end; finally table.Free; end; end; finally db.Free; end; end; procedure TBcFirefoxCookies.SaveToFile(FileName: string); var db: TSQLiteDatabase; iCookie: Integer; ExpiresStr: String; LastAccessedStr: String; IsUnique: Boolean; begin db := TSQLiteDatabase.Create(FileName); try if db.TableExists('moz_cookies') then db.ExecSQL('DROP TABLE moz_cookies'); db.ExecSQL('CREATE TABLE moz_cookies (id INTEGER, name TEXT, value TEXT, host TEXT, path TEXT, expiry INTEGER, lastAccessed INTEGER, isSecure INTEGER, isHTTPOnly INTEGER, PRIMARY KEY(id))'); for iCookie := 0 to Count -1 do begin //sicherstellen das der Primärschlüssel nur einmal vorkommt IsUnique := PrimaryKeyIsUnique(Cookies[iCookie].Created.AsPRTime, iCookie); while not IsUnique do begin Cookies[iCookie].Created.AsPRTime(Cookies[iCookie].Created.AsPRTime + 1000000); IsUnique := PrimaryKeyIsUnique(Cookies[iCookie].Created.AsPRTime, iCookie); end; //sicherstellen das alle anderen Integer-Werte ungleich dem Primärschlüssel sind LastAccessedStr := IntToStr(Cookies[iCookie].LastAccessed.AsPRTime); if Cookies[iCookie].Created.AsPRTime = Cookies[iCookie].LastAccessed.AsPRTime then LastAccessedStr := IntToStr(Cookies[iCookie].LastAccessed.AsPRTime + 1000000); ExpiresStr := IntToStr(Cookies[iCookie].Expires.AsUnixTime); if Cookies[iCookie].Created.AsPRTime = Cookies[iCookie].Expires.AsUnixTime then ExpiresStr := IntToStr(Cookies[iCookie].Expires.AsUnixTime + 1000000); db.ExecSQL('INSERT INTO moz_cookies (id, name, value, host, path, expiry, lastAccessed, isSecure, isHTTPOnly)' + ' VALUES ("' + IntToStr(Cookies[iCookie].Created.AsPRTime) + '", "' + EscapeSQLStatement(Cookies[iCookie].Name) + '", "' + EscapeSQLStatement(Cookies[iCookie].Content) + '", "' + EscapeSQLStatement(Cookies[iCookie].Domain) + '", "' + EscapeSQLStatement(Cookies[iCookie].Path) + '", "' + ExpiresStr + '", "' + LastAccessedStr + '", "' + IntToStr(LongBoolToInt(Cookies[iCookie].Secure)) + '", "' + IntToStr(LongBoolToInt(Cookies[iCookie].WholeDomain)) + '")'); end; finally db.Free; end; end; |
Re: CookieCrumbler 1.2.6
Zitat:
Zitat:
Für die Performance könnte ein BeginTransaction/Commit hilfreich sein. Und warum machst du kein Delta Abgleich? MfG xZise |
Re: CookieCrumbler 1.2.6
Zitat:
Zitat:
|
Re: CookieCrumbler 1.2.6
Zitat:
|
Re: CookieCrumbler 1.2.6
Liste der Anhänge anzeigen (Anzahl: 1)
Schönes Programm,
Habe aber einen Fehler gefunden. Nach dem ich das update ausgelöst hatte. Und es will sich nicht mehr beenden es ist hängen geblieben Gruss Sascha |
Re: CookieCrumbler 1.2.6
Zitat:
Zitat:
Danke fürs testen :-D |
Re: CookieCrumbler 1.2.6
Zitat:
Und das mit Commit machst du so:
Delphi-Quellcode:
Es ist QUASI das gleiche wie BeginUpdate/EndUpdate, mit dem Unterschied, dass du es hier leider nur einmal ausführen darfst. Imho nicht gerade gut gelöst :P
db := TSQLiteDatabase.Create;
try db.BeginTransaction; try // Hier die Änderungen übertragen finally db.Commit; end; finally db.Free; end; MfG xZise |
Re: CookieCrumbler 1.2.6
nach dem Update bekomme ich nun immer
Zitat:
Danach klicke ich auf Cookie Editor und er aktualisiert sich doch irgendwie, das Problem das beim Beenden auftritt wurde ja auch schon erwähnt ... |
Re: CookieCrumbler 1.2.6
Hi Corpsman,
danke fürs testen :thumb: Sämtliche Fehler sollten in Version 1.3 behoben sein. Bis Sonntag werde ich die neue Version wohl fertig haben. :coder: |
Re: CookieCrumbler 1.3.7
Neue Version im ersten Beitrag :!:
Changelog Version 1.3.7 - 12.07.2009 [+]Zusammenfassung mit ![]() [+]Regeln können jetzt direkt im Bereinigen/Einstellungen Dialog bearbeitet werden [#]Die Bereinigenroutine funktioniert jetzt problemlos, es wird wirklich alles gelöscht was weg muss. Hab das in unzähligen Konstellationen getestet!!! [#]Speichern sollte jetzt 50 % schneller sein und nicht mehr hängen bleiben [+]Fortschrittsanzeige beim Speichern [#]Änderungen können jetzt jederzeit gespeichert werden, man kann außerdem die Änderungen verwerfen (d. h. die Original-Daten laden) [#]Schönheitsfehler behoben [#]Updateprogramm vollständig überarbeitet [+]In der Statusleiste des Cookie-Editors wird die Anzahl der Cookies angezeigt |
Re: CookieCrumbler 1.3.7
Wenn ich den CoockieCrumbler starte, mir im Editor die Coockies anziegen lasse, und ohne irgendwas zu ändern / zu löschen den Crumbler wieder beende - wieso kennt dann hinterher mein IE (8) kein einziges Coockie mehr, obwohl noch alle da sind?
|
Re: CookieCrumbler 1.3.7
Zitat:
danke fürs testen. Kann ich leider nicht nachvollziehen. Solange man nicht auf Speichern klickt wird an den Original-Dateien nichts verändert. Hast du auch sicher die Version aus dem ersten Beitrag verwendet? |
Re: CookieCrumbler 1.3.7
Zitat:
|
Re: CookieCrumbler 1.3.7
Zitat:
|
Re: CookieCrumbler 1.3.7
Das Problem besteht weiterhin.
|
Re: CookieCrumbler 1.3.7
Zitat:
%AppData% bzw. %LocalAppData%\CapSystems\CookieCrumbler\config.da t bzw. config.dat im Programmordner. EDIT: Hab vorhin IE 8 installiert, das Cookie-Format ist das selbe geblieben und mein IE erkennt auch weiterhin alle Cookies. :gruebel: :gruebel: :gruebel: |
Re: CookieCrumbler 1.3.7
Hi Andreas,
ich hab einen kleinen Fehler im Bereinigen-Dialog gefunden: Im 2. Fenster (Regeln beachten) funktioniert der Zurück-Button nicht. Aber ansonsten: Tolles Programm, Respekt :thumb: Viele Grüße der_hugo |
Re: CookieCrumbler 1.3.7
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Zitat:
Zitat:
EDIT: Neue Version kommt heute Abend jetzt ;-), hab noch einen Fehler [ ![]() ![]() Mir wurde noch gemeldet das der Eintrag in der Taskleiste sporadisch leer ist (siehe Anhang). Kann das jemand reproduzieren? Hab CookieCrumbler bestimmt schon 100 x gestartet und das auf 2 Rechnern und in einer 1 VM. Passiert bei mir nie.... |
Re: CookieCrumbler 1.3.7
Zitat:
Viele Grüße der_hugo |
Re: CookieCrumbler 1.3.7
Ist das Windows 7 im Screenshot?
|
Re: CookieCrumbler 1.3.7
Neue Version! Download im ersten Beitrag.
Changelog Vesion 1.3.8 - 14.07.2009 ::Die Version scheint ordentlich zu laufen, deshalb: Stable [#]Zurück-Button im Bereinigendialog geht jetzt [+]Englische Sprache hinzugefügt [#]Willkommen-Dialog sieht jetzt auch mit klassischen Windows-Theme schick aus [+]Doppelklick im Cookie-Editor öffnet Bearbeiten-Dialog [+]ENTER-Taste im Cookie-Editor öffnet Bearbeiten-Dialog [+]ENTF-Taste im Cookie-Editor löscht die gewählten Einträge [#] ![]() Freue mich auf Verbesserungsvorschläge, Kritik. Über Fehler freu ich mich nicht so, sollt ihr mir aber trotzdem nennen ;-) Danke an alle die CookieCrumbler schon getestet haben und es noch werden :thumb: Zitat:
|
Re: CookieCrumbler 1.3.7
Zitat:
|
Re: CookieCrumbler 1.3.7
Zitat:
|
Re: CookieCrumbler 1.5.9 - Stable!
Update!
Download wie immer im ersten Post. Changelog Version 1.5.9 - 05.08.2009 [#]Löschen-Button funktioniert jetzt richtig [#]Die Breite der Spalten im Cookie-Editor werden jetzt richtig gespeichert [#]Internet Explorer DHTML Behaviors werden jetzt richtig erkannt Version 1.4.9 - 29.07.2009 [#]Flash-Cookies werden jetzt richtig gespeichert [#]Update funktioniert jetzt [#]Rechtschreibfehler behoben [+]Safari cookies werden jetzt erkannt |
Re: CookieCrumbler 1.5.10 - Stable!
Und noch ein Update ;-)
Changelog Version 1.5.10 - 09.08.2009 [#]Zeitpunkt vom letzten Update wird richtig erkannt[*]Filterlisten aktualisiert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz