Office中国论坛/Access中国论坛
标题:
【原创】如何获取浏览器存储 Cookie(待补充)
[打印本页]
作者:
faunus
时间:
2014-2-22 16:32
标题:
【原创】如何获取浏览器存储 Cookie(待补充)
提问的背景:
由于不同的浏览器存储 Cookie 的方式不同,
因此,同一计算机上的不同浏览器没有必要能够读取彼此的 Cookie。
例如,如果使用 Internet Explorer 测试一个页面,
然后再使用其他浏览器进行测试,
那么后者将不会找到 Internet Explorer 保存的 Cookie。
[1]问题一:
当通过HttpWebRequest/httpWebResponse编写代码时,
这些Cookie都存到哪里去了?(跟浏览器进行对比)
注:如果认为是程序自己维护的,也请说明一下~~
[2]问题二:
如何读取IE中的Cookie
[3]问题三:
如何读取其它浏览器中的Cookie
作者:
faunus
时间:
2014-2-22 16:33
读取IE中的Cookie
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Net;
using System.Linq;
using System.Collections.Generic;
namespace PCTools
{
/**/
///<summary>
/// 获取Cookie的方法类。
///</summary>
public class CookieManger
{
[DllImport("wininet.dll", SetLastError = true)]
public static extern bool InternetGetCookie(string url, string cookieName,StringBuilder cookieData, ref int size);
public static CookieContainer GetUriCookieContainer(Uri uri)
{
CookieContainer cookies = null;
//定义Cookie数据的大小。
int datasize = 256;
StringBuilder cookieData = new StringBuilder(datasize);
if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize))
{
if (datasize < 0) return null;
// 确信有足够大的空间来容纳Cookie数据。
cookieData = new StringBuilder(datasize);
if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize)) return null;
}
if (cookieData.Length > 0)
{
cookies = new CookieContainer();
cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
}
return cookies;
}
public static void PrintCookies(CookieContainer cookies, Uri uri)
{
CookieCollection cc = cookies.GetCookies(uri);
foreach (var cook in cc)
{
Console.WriteLine(cook);
}
}
}
public class Test
{
static void Main(string[] args)
{
string url = @"http://www.kaixin001.com/";
Uri uri = new Uri(url);
CookieContainer cookies = CookieManger.GetUriCookieContainer(uri);
CookieManger.PrintCookies(cookies,uri);
Console.ReadKey();
}
}
}
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3