• .Net/C# 应用程序直接读取本地 Cookies 文件(WinXP SP2 调用 API: InternetGetCookie 无果)


    using System;
      using System.IO;
      using System.Text;
      using System.Text.RegularExpressions;
      using Microsoft.Win32;
      public class Class1
      {
      static void Main(string[] args)
      {
       System.Console.WriteLine(GetCookiesFromFiles("et8")); //支持 WinXP SP2
       System.Console.WriteLine(GetCookie("http://bbs.et8.net/"));
      }
      [System.Runtime.InteropServices.DllImport("wininet.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)]
      public static extern bool InternetGetCookie(string lpszUrlName,string lpszCookieName,StringBuilder lpszCookieData,ref int lpdwSize);
      [System.Runtime.InteropServices.DllImport("kernel32.dll")]
      internal static extern Int32 GetLastError();
      public static string GetCookie(string url) //Win32 API
      {
       int size = 1000;
       StringBuilder sb = new StringBuilder(size);
       if (!InternetGetCookie(url,"", sb,ref size))
       {
       Console.WriteLine("Error code:{0}", GetLastError());
       }
       return sb.ToString();
      }
      public static string GetCookiesFromFiles(string MasterDomain) //Cookies File
      {
       string S = null;
       RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", false);
       if (key != null)
       {
       string val = (string) key.GetValue("Cookies");
       if (val!= null)
       {
       string[] F = Directory.GetFiles(val);
       string s = null;
       int i;
       Regex r = new Regex(@".*@" + MasterDomain + @"*\[\d+\].txt");
       for (i = 0; i < F.Length; i++)
       {
       if (r.IsMatch(F[i]))
       {
       s = F[i];
       }
       }
       if (s != null) //s 就是最新文件
       {
       StreamReader sr = new StreamReader(s);
       s = null;
       i = 1;
       while ((s = sr.ReadLine())!= null)
       {
       if (s == "*" || s == "\n")
       {
       i = 0;
       }
       //每节只读两行
       if (i == 1)
       {
       S += s;
       }
       else if (i == 2)
       {
       S += "=" + s + "; ";
       }
       i++;
       }
       }
       }
       }
       return S;
      }
      }
  • 相关阅读:
    高德车载导航自研图片格式的探索和实践
    导航定位向高精定位的演进与实践
    高德算法工程一体化实践和思考
    机器学习在高德用户反馈信息处理中的实践
    UI自动化技术在高德的实践
    高德网络定位算法的演进
    系统重构的道与术
    基于深度学习的图像分割在高德的实践
    MySQL索引那些事
    如何优雅的将Mybatis日志中的Preparing与Parameters转换为可执行SQL
  • 原文地址:https://www.cnblogs.com/jordan2009/p/1550041.html
Copyright © 2020-2023  润新知