0

私はWeb自動化ツールに取り組んでいます。ツールを実行した後、関連付けられたWebサイトがCookieを作成すると、再度実行しようとすると自動化が機能しなくなります。このため、自動化を開始する前にCookieを削除したいと思います。実際にCookieを作成するドメインにアクセスできません。これは可能ですか?私はCookieを操作する方法を知っていますが、別のWebサイトからCookieにアクセスしようとすると、そのロジックはすべて失敗します。

さらに、回避できる場合はWebBrowserコントロールを作成したくありません。見栄えが良くなるように、httpWebRequestsですべてを実行しようとしています。

4

3 に答える 3

2

テスト環境が Windows システムで実行されている場合 (そのように聞こえます)、pInvoke を使用してキャッシュを操作できます。次の 4 つの方法が必要です。残念ながら、コードは私ではなく、私が働いている会社が所有しているため、ここにすべてを貼り付けることはできません。「FindFirstUrlCacheEntry」と「FindNextUrlCacheEntry」を使用して、キャッシュ内のエントリを反復処理する必要があります。キャッシュ エントリをチェックして、それが Cookie であるかどうかを確認し、関心のあるドメインに属しているかどうかを確認します。そうである場合は削除できます。

[DllImport (@"wininet", SetLastError = true, CharSet = CharSet.Auto)]
private static extern IntPtr FindFirstUrlCacheEntry ([MarshalAs (UnmanagedType.LPTStr)] string searchPattern, IntPtr ptrCacheEntryInfo, ref int cacheEntryInfoSize);

[DllImport (@"wininet", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
private static extern bool FindNextUrlCacheEntry (IntPtr ptrCacheHandler, IntPtr ptrCacheEntryInfo, ref int cacheEntryInfoSize);

[DllImport (@"wininet", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
private static extern bool FindCloseUrlCache (IntPtr ptrCacheEntryInfo);

[DllImport ("wininet.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
private static extern bool DeleteUrlCacheEntry (IntPtr lpszUrlName);
于 2012-05-10T17:20:02.603 に答える
0

結局、すべてのCookieをクリアしました。サーバーのセットアップ方法はそれほど多くないはずなので、実際には問題にはなりません。すべてのクッキーを実行することが、私にとって唯一の方法でした。フォルダを削除しようとすると、特権レベルに関するエラーが表示されます。

    private void ClearCookies()
    {
        string[] theCookies = System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Cookies));

        foreach (string currentFile in theCookies)
        {
            try
            {
                System.IO.File.Delete(currentFile);
            }
            catch (Exception ex) { }
        }
    }
于 2012-05-11T14:58:35.470 に答える
0

X 以外の場所からの http 要求を使用して Web サイト X によって配置された Cookie を削除することはできません。

2 つの可能性があります。

  • 自動化ツールを使用して、ブラウザー UI からの Cookie の削除を自動化します。
  • ローカル キャッシュ内の x ドメインに関連する IP を変更することで (または別の手段で)、Web サイト X を偽装します。
于 2012-05-10T16:57:41.647 に答える