1. <s id="4jtld"></s>
    1. <span id="4jtld"><meter id="4jtld"></meter></span>

        <span id="4jtld"></span>
      1. <s id="4jtld"><noscript id="4jtld"><i id="4jtld"></i></noscript></s>
        溫馨提示×

        Asp.net http 請求獲取站點任意Cookie

        發布時間:2020-07-15 18:09:13 來源:網絡 閱讀:997 作者:點兒都不扯 欄目:編程語言
        搞Asp.net的朋友,難免會有需要發送一些http請求,網頁數據抓取的時候!
        
        有一些安全性相對做得比較好點的站點,某些東西做得相對比較“安全”??!
        
        對于做WINDOWS平臺下開發的朋友來說,了解windows原理,一些window的API、
        
        這會大大提示您的編程效率,我個人覺得,用好 Window API 非常的有必要,也是程序員的必備知識
        
        
        
        
        wininet.dll 
        -----------------------------------------------------------------------------------------
        搞C,C++的程序員,不會陌生吧、這個組件概而言之 就是對 
        
        internet ,ftp , http 底層做基礎封裝的編程接口?。。。。?!
        
        
        
            ///<summary> 
            /// 獲取Cookie的方法類。 
            ///</summary> 
            public class CookieUtility
            {
                ///url :你請求的站點地址、
                ///cookieName:cookie名稱,獲取全部cookie傳null、
                ///cookieData:cookie數據保存對象,數據會保存到這個對象中。
                ///size:獲取到的實際數據大小。        
                [DllImport("wininet.dll", SetLastError = true)]
                public static extern bool InternetGetCookie(string url, string cookieName, StringBuilder cookieData, ref int size);
                
                
                ///url :你請求的站點地址、
                ///cookieName:cookie名稱,獲取全部cookie傳null、(建議傳null)
                ///cookieData:cookie數據保存對象,數據會保存到這個對象中。
                ///size:獲取到的實際數據大小。 
                ///dwFlags:cookie的標志(位或運算,目前我接觸到的只有:
                /// (0x00002000,httpreadonly)    
                /// lpReserved:保留參數對象(有知道的朋友請留言回復下,謝謝?。?        [DllImport("wininet.dll", CharSet=CharSet.Auto,  SetLastError = true)]
                static extern bool InternetGetCookieEx(string url, string cookieName, StringBuilder cookieData, ref int size, int dwFlags, object lpReserved);  
                
                
                [DllImport("Kernel32.dll", SetLastError = true)]
                private static extern int GetLastError();
                
                
                /// 下面這個方法是獲取到cookie后,對cookie字符串進行拆分重組的。
                public static CookieContainer GetUriCookieContainer(Uri uri)
                {
                    CookieContainer cookies = null;
                    int datasize = 2048;
                    
                    StringBuilder cookieData = new StringBuilder(datasize);
                    if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize))
                    {
                        int errCode = GetLastError();
                        if (datasize < 0)
                            return null; 
                            
                        cookieData = new StringBuilder(datasize);
                        if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize))
                        {
                            errCode = GetLastError();
                            return null;
                        }
        
                    }
                    if (cookieData.Length > 0)
                    {
                        cookies = new CookieContainer();
                        string[] cooks = cookieData.ToString().Split(';');
                        for (int i = 0; i < cooks.Length; i++)
                        {
                            if (cooks[i].IndexOf(',') == -1)
                                cookies.SetCookies(uri, cooks[i]);
                        }
                    }
                    return cookies;
                }
                
                
                public static string GetCookiesString(CookieContainer cookies, Uri uri)
                {
                    if (cookies == null || uri == null)
                        return "";
                    CookieCollection cc = cookies.GetCookies(uri);
                    string szCookies = "";
                    foreach (Cookie cook in cc)
                    {
                        szCookies = szCookies + cook.Name + "=" + cook.Value + ";";
                    }
                    return szCookies;
                }
            }


        免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

        主題地圖

        欧美午夜理伦三级在线观看,欧美午夜乱伦片,欧美午夜乱色视频在线观看,欧美午夜免费一区二区,欧美午夜片欧美片在线观看