C# コードから HTTPWebRequest を送信していますが、応答としてセッション ID を含む Cookie を取得しています。応答のパブリック/非パブリック メンバーで Cookie を見つけることができません。ただし、フィドラーは Cookie をキャプチャしており、そのパスは「/」です。この Cookie をどこで探すべきか教えてください。「C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Cookies」フォルダを確認しましたが、そこにはありません。
4 に答える
ブラウザによっては、Cookie が異なる場所に物理的に保存される場合があります。
HttpWebRequest
クッキーを使ったほうがいいと思います。
リクエスト オブジェクトへのa の追加に関するこの質問への回答を参照してください。CookieContainer
HttpWebRequest で永続的な Cookie を使用する場合は、これを処理するためにwininet.dllをインポートする必要があります (または永続性を自分で処理します)。
WebRequest.Create Methodのコミュニティ コンテンツ セクションに MSDN の例があります。
スニペット
[DllImport("wininet.dll", CharSet=CharSet.Auto , SetLastError=true)]
private static extern bool InternetGetCookie (string url, string name, StringBuilder data, ref int dataSize);
private static string RetrieveIECookiesForUrl(string url)
{
StringBuilder cookieHeader = new StringBuilder(new String(' ', 256), 256);
int datasize = cookieHeader.Length;
if (!InternetGetCookie(url, null, cookieHeader, ref datasize))
{
if (datasize < 0)
return String.Empty;
cookieHeader = new StringBuilder(datasize); // resize with new datasize
InternetGetCookie(url, null, cookieHeader, ref datasize);
}
// result is like this: "KEY=Value; KEY2=what ever"
return cookieHeader.ToString();
}
すべてのブラウザーは、Cookie をさまざまな場所に保存します。たとえば、
Cookie 情報は、プロファイル フォルダ内の 2 つのファイルに保存されます。Firefox 3.0 および SeaMonkey 2.0 以降、Cookie 情報はファイル cookies.sqlite および permissions.sqlite に保存されます。Firefox 2 以下および Mozilla Suite/SeaMonkey 1.x では、Cookie は cookies.txt ファイルに保存され、Cookie サイトのアクセス許可は hostperm.1 ファイルに保存されます。ファイル 説明 cookies.sqlite cookies.txt ログイン情報、セッション データ、設定など、すべての Cookie を保持します。permissions.sqlite hostperm.1 Cookie の設定、画像の表示、ポップアップ ウィンドウの表示、拡張機能のインストールの開始を許可または禁止するサイトに関する設定を保持します。
Cookie の保存は、ブラウザと OS の両方に依存します。古いブラウザでは、「Cookies」などの名前のファイル パスに保存されていました。最新のブラウザーのほとんどは、Cookie を何らかの暗号化された方法で、通常は sqllite db フラット ファイルに保存します。実際のローカル Cookie ストレージを介して追跡しようとしているものに関する詳細情報を提供できれば (ブラウザーの組み込みの Cookie ブラウザーを使用するのではなく)、どこを見ればよいか、またはあなたが持っているものの代替手段に関する詳細情報を取得するのに役立ちます。マインド。