Cookie 分析
public static List<Cookie> GetAllCookies(CookieContainer cc) { List<Cookie> lstCookies = new List<Cookie>(); Hashtable table = (Hashtable)cc.GetType().InvokeMember("m_domainTable", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, cc, new object[] { }); foreach (object pathList in table.Values) { SortedList lstCookieCol = (SortedList)pathList.GetType().InvokeMember("m_list", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, pathList, new object[] { }); foreach (CookieCollection colCookies in lstCookieCol.Values) foreach (Cookie c in colCookies) lstCookies.Add(c); } return lstCookies; }
string转cook
string cook="123"; //从浏览器里复制出来的cook
addCookieToContainer(cook, new CookieContainer(), ".www.baidu.com");
CookieContainer addCookieToContainer(string cookie, CookieContainer cc, string domian) { string[] tempCookies = cookie.Split(';'); string tempCookie = null; int Equallength = 0;// =的位置 string cookieKey = null; string cookieValue = null; //qg.gome.com.cn cookie for (int i = 0; i < tempCookies.Length; i++) { if (!string.IsNullOrEmpty(tempCookies[i])) { tempCookie = tempCookies[i]; Equallength = tempCookie.IndexOf("="); if (Equallength != -1) //有可能cookie 无=,就直接一个cookiename;比如:a=3;ck;abc=; { cookieKey = tempCookie.Substring(0, Equallength).Trim(); //cookie= if (Equallength == tempCookie.Length - 1) //这种是等号后面无值,如:abc=; { cookieValue = ""; } else { cookieValue = tempCookie.Substring(Equallength + 1, tempCookie.Length - Equallength - 1).Trim(); } } else { cookieKey = tempCookie.Trim(); cookieValue = ""; } cc.Add(new Cookie(cookieKey, cookieValue, "", domian)); } } return cc; }