wininet.dll函数库:不会过期的cookie

本文介绍如何利用 WinINET DLL 中的 InternetSetCookie 函数实现浏览器 Cookie 的持久化存储,即使过了通常的过期时间,如两周,Cookie 仍然有效。通过设置远期的过期日期,例如2099年,可以绕过大多数网站设定的默认过期时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wininet.dll中包含很多win32下和网络有关的函数,包括internet,ftp等,下面演示一个IE下不过期的cookie。 比如csdn的登陆信息可以保存2个星期,你在登陆后把系统时间改为2周后,登陆信息就失效了,使用InternetSetCookie可以自己设置过期日期。 首先在IE中登陆,登陆时选择信息保存2周,然后运行如下代码,运行之后你可以把日期调整到2010年看效果:

using System;

using System.Text;

using System.Runtime.InteropServices;

namespace ConsoleApplication1

{

    class Program

    {

        /// <summary>

        /// 设置cookie

        /// </summary>

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]

        public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);

        /// <summary>

        /// 获取cookie

        /// </summary>

        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]

        public static extern bool InternetGetCookie(

          string url, string name, StringBuilder data, ref int dataSize);

        static void Main(string[] args)

        {

            //获取旧的

            StringBuilder cookie = new StringBuilder(new String(' ',2048));

            int datasize = cookie.Length;

            bool b= InternetGetCookie("http://community.youkuaiyun.com", null, cookie, ref datasize);

            //删除旧的

            foreach (string fileName in System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.Cookies)))

            {

                if (fileName.ToLower().IndexOf("csdn") > 0)

                {

                    System.IO.File.Delete("csdn");

                }

            }

            //生成新的

            foreach (string c in cookie.ToString().Split(';'))

            {

                string[] item = c.Split('=');

                string name = item[0];

                string value = item[1] + ";expires=Sun,22-Feb-2099 00:00:00 GMT";

                InternetSetCookie("http://community.youkuaiyun.com",name,value);

                InternetSetCookie("http://forum.youkuaiyun.com", name, value);

                InternetSetCookie("http://webim.youkuaiyun.com", name, value);

            }

        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值