请问,怎么获取这个URL的Cookies呢?http://www.gdhzcgs.com/images/again_button.gif

解决方案 »

  1.   


    http://www.gdhzcgs.com/images/again_button.gif?这是嘛意思!
    http://www.gdhzcgs.com/cookiesname?123传递过去,解析参数
      

  2.   

    这个是别人网站的一个URL,我想直接通过这个URL获取它的Cookies呀
      

  3.   

    #region Cookies解析
            /// <summary>
            /// 把服务器返回的Set-Cookie标头信息翻译成
            /// <para>能放在Cookie标头上的信息</para>
            /// </summary>
            /// <param name="CookieStr">Set-Cookie标头信息</param>
            /// <returns></returns>
            public string ParseSetCookie(string CookieStr)
            {
                if (CookieStr.Contains("=") && CookieStr.Contains(";"))//合法性验证
                {
                    string[] oneCookie = CookieStr.Split(';');
                    string returnmsg = "";
                    string onename = "";
                    foreach (string one in oneCookie)
                    {
                        string ifThereisAComment = one;
                        if (ifThereisAComment.StartsWith(","))
                        {
                            //修复一个Bug:如果一个标头上只有一个Cookie,则解析出来的相应值之前会多一个逗号。
                            ifThereisAComment=ifThereisAComment.Substring(1);//截掉开头的逗号
                        }
                        onename = ParseOneNameAndValue(ifThereisAComment);//判断是否有逗号
                        returnmsg += onename;
                    }                return returnmsg;
                }
                else
                {
                    return "";
                }
            }
            
            /// <summary>
            /// 从数组中查找指定的值,并返回其Index
            /// </summary>
            /// <param name="Value">查找什么?</param>
            /// <param name="Source">在哪个数组中找?</param>
            /// <returns>Index或-1</returns>
            public int FindIndex(string Value,string[] Source)
            {
                for (int i = 0; i < Source.Length; i++)
                {
                    if (Value == Source[i])
                    {
                        return i;
                    }
                }
                return -1;
            }
            
            /// <summary>
            /// 判断一个Name=Value的值是不是一个真正的Cookies
            /// <para>若是两个Cookies,则把两个Cookies用分号隔开;</para>
            /// <para>不是,则返回输入的NameAndValue值。</para>
            /// </summary>
            /// <param name="NameAndValue">Cookies Name=Value</param>
            /// <returns></returns>
            public string ParseOneNameAndValue(string NameAndValue)
            {
                if (!NameAndValue.Contains("="))
                {
                    return "";
                }            string returnmsg = "";
                if (NameAndValue.Contains(","))//有逗号
                {
                    foreach (string one in NameAndValue.Split(','))
                    {
                        if (one.Contains("=") && (!NameAndValue.StartsWith(one)))//逗号旁有等号且不是第一个,说明逗号是分隔两个Set-Cookie标头的
                        {
                            string[] indexArr = NameAndValue.Split(',');                        int index = FindIndex(one, indexArr);
                            string one_s = "";                        for (int i = index; i < indexArr.Length; i++)
                            {
                                one_s += indexArr[i];
                            }
                            returnmsg += ParseOneNameAndValue(one_s);//判断后面那一堆字符是不是一个Cookie
                        }
                        else//不是标头分隔
                        {
                            returnmsg += isPathDomainOrDate(NameAndValue);
                        }
                    }
                }            else//没有逗号,那就是货真价实的一个Cookie。
                {
                    returnmsg += isPathDomainOrDate(NameAndValue);
                }            return returnmsg;
            }
            /// <summary>
            /// 检测Name=Value是不是服务器Set-Cookie标头里的path、domain和过期日期
            /// <para></para><para>有则返回空字符串,以去掉那些不能放在Cookie标头上的信息</para>
            /// </summary>
            /// <param name="input"></param>
            /// <returns></returns>
            public string isPathDomainOrDate(string input)
            {            if (input.Trim().ToLower().StartsWith("path=") || input.Trim().ToLower().StartsWith("domain=") 
                    || input.Trim().ToLower().StartsWith("expires=")|| input.Trim().ToLower().StartsWith("max-age=")
                    || input.Trim().ToLower().StartsWith("version=") || input.Trim().ToLower().StartsWith("httponly"))
                {
                    //把Path、Domain和过期日期去掉
                    return "";
                }
                else
                {
                    return input + ";";
                }
            }
            #endregionHttpWebRequest req=(HttpWebRequset)WebRequest.Create("http://www.baidu.com/");
    HttpWebResponse resp=(HttpWebResponse)req.GetResponse();
    string Cooooooooooookies=ParseSetCookie(resp.Headers[HttpWebResponseHeaders.SetCookie]);调用:
    HttpWebRequest req=(HttpWebRequset)WebRequest.Create("http://www.baidu.com/");
    req.Headers[HttpWebRequstHeaders.Cookie]=Cooooooooooookies;
      

  4.   


    我为了防止.Net 4.0以下的CookieContainer的严重Bug,所以写了这几个方法。以后把Cookies经过ParseSetCookie处理后收集到一个字符串当中,发送出去的时候直接放在Cookie标头上就行了。
      

  5.   

    好像不能应用在我刚才给出那个URL上吧?我就奇怪了,怎么不能得到它的Cookies的呢
      

  6.   

    你看下最基本的模拟请求就知道了,
    CookieContainer cookieContainer=null
     webrequest.CookieContainer=cookieContainer;请求完毕后,如果有cookie下来,cookieContainer中会包含设置的cookie的
      

  7.   

    不行的,就比如说www.taobao.com这个网站,本身如果是用HttpWebReqest的话,只是有这个Cookies:LBS120819        120003                Fri, 07-Sep-2012 09:43:40 GMT  
    但是如果是直接用URL的话:cna:Og2yCOGWlDACAUYP DrZt6CY
    p_d              r:1    /     .alimama.com  Sat, 01-Sep-2012 09:48:08 GMT  
      

  8.   

    这就说明 你有淘宝需要的东西 没提交,一个是cookie一个参数。你用工具 监控
      

  9.   

    没有了呀,就是我刚打开淘宝的时候,也没什么提交了呀,Cookies也没有,参数也没有的啊
      

  10.   

    good good study and day day up
      

  11.   

    你给个网站链接 你要哪个cookie,你上面只写了个图片,我帮你看看