Exemplo n.º 1
0
        public void matches()
        {
            var cookie = new Cookie();

            cookie.Matches("a").ShouldBeFalse();

            cookie.Add(new CookieState("something"));

            cookie.Matches("a").ShouldBeFalse();
            cookie.Matches("something").ShouldBeTrue();

            cookie.Add(new CookieState("Else"));
            cookie.Matches("something").ShouldBeTrue();
            cookie.Matches("else").ShouldBeTrue();
            cookie.Matches("a").ShouldBeFalse();
        }
Exemplo n.º 2
0
        private byte[] GetResponseData(HttpWebRequest web)
        {
            using (var res = (HttpWebResponse)web.GetResponse())
                using (var rs = res.GetResponseStream())
                {
                    Location = res.Headers["Location"];
                    Cookie.Add(res.Cookies);

                    byte[] buffer = new byte[2048];
                    int    count  = (int)res.ContentLength;
                    int    offset = 0;
                    byte[] buf    = new byte[count];
                    while (count > 0) //读取返回数据
                    {
                        int n = rs.Read(buf, offset, count);
                        if (n == 0)
                        {
                            break;
                        }
                        count  -= n;
                        offset += n;
                    }
                    return(buf);
                }
        }
Exemplo n.º 3
0
        /// <summary>重写获取响应</summary>
        /// <param name="request"></param>
        /// <returns></returns>
        protected override WebResponse GetWebResponse(WebRequest request)
        {
            var response = base.GetWebResponse(request);
            var http     = response as HttpWebResponse;

            if (http != null)
            {
                Cookie.Add(http.Cookies);
                if (!String.IsNullOrEmpty(http.CharacterSet))
                {
                    Encoding = System.Text.Encoding.GetEncoding(http.CharacterSet);
                }
            }

            var fr = response as FtpWebResponse;

            if (fr != null)
            {
                if (Log != null && Log.Enable)
                {
                    Log.Info(fr.BannerMessage);
                    Log.Info(fr.StatusDescription);
                    Log.Info(fr.WelcomeMessage);
                }
            }

            return(response);
        }
Exemplo n.º 4
0
 public HttpSession(string url, string cookies)
 {
     foreach (string t in cookies.Split("; ".ToCharArray()))
     {
         var t1 = t.Split('=');
         Cookie.Add(new Uri(url), new Cookie(t1[0], t1[1]));
     }
 }
Exemplo n.º 5
0
        public static Task LoadCookie(Stream stream)
        {
            var formatter = new XmlSerializer(typeof(CookieContainer));

            return(formatter.Deserialize(stream) is CookieContainer saved
                                ? Task.Factory.StartNew(() => Cookie.Add(GetAllCookies(saved)))
                                : Task.CompletedTask);
        }
Exemplo n.º 6
0
 private void SetCookies(HttpWebRequest request)
 {
     foreach (var c in _cookieList)
     {
         Cookie.Add(new Cookie(c.Name, c.Value, c.Path, c.Domain ?? request.RequestUri.Host)
         {
             Expires = c.ExpiresDate ?? DateTime.Now.AddYears(1)
         });
     }
 }
Exemplo n.º 7
0
        private string GetResponseText(HttpWebRequest web)
        {
            using (var res = (HttpWebResponse)web.GetResponse())
                using (var sr = new StreamReader(res.GetResponseStream(), Encoding))
                {
                    Location = res.Headers["Location"];
                    Cookie.Add(res.Cookies);

                    return(sr.ReadToEnd());
                }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 指定したユーザ、パスワードを用いて、ログイン処理を実行します。
        /// </summary>
        /// <param name="mail">メールアドレス</param>
        /// <param name="password">パスワード</param>
        /// <remarks>既にログイン済みの場合もログインし直します。</remarks>
        public void Login(string mail, string password)
        {
            // ログインテスト前にプロパティを初期化する。
            Initialize();

            if (string.IsNullOrWhiteSpace(mail) || string.IsNullOrWhiteSpace(password))
            {
                // ログイン情報が指定されていない場合は中断
                Message = "ログイン情報が入力されていません。";
                return;
            }

            try
            {
                // リクエストを取得する。
                var httpWebRequest  = GetRequest(mail, password);
                var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

                // リクエストからクッキー取得
                CookieCollection cookies = httpWebRequest.CookieContainer.GetCookies(httpWebRequest.RequestUri);

                // TODO これいる?
                //IFormatter formatter = new BinaryFormatter();
                //using (Stream serializationStream = new FileStream(Variable.LOG_FOLDER + "\\Cookie.bin", FileMode.Create, FileAccess.Write, FileShare.None))
                //{
                //    formatter.Serialize(serializationStream, cookies);
                //}

                // 取得したクッキーをIEに流用
                HttpUtil.InternetSetCookie(cookies);

                // 自身のクッキーコンテナに追加
                Cookie.Add(cookies);

                // レスポンスを用いてログイン処理を実行する。
                if (LoginWithResponse(HttpUtil.GetResponseString(httpWebResponse)))
                {
                    // ログインが成功したら、ログイン情報を保存する。
                    HttpRequestConst.Mail     = mail;
                    HttpRequestConst.Password = password;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());   // TODO
                Initialize();
                Message = "何らかの原因でエラーが発生しました。";
            }
        }
Exemplo n.º 9
0
        /// <summary>重写获取响应</summary>
        /// <param name="request"></param>
        /// <returns></returns>
        protected override WebResponse GetWebResponse(WebRequest request)
        {
            var response = base.GetWebResponse(request);
            var http     = response as HttpWebResponse;

            if (http != null)
            {
                Cookie.Add(http.Cookies);
                if (!String.IsNullOrEmpty(http.CharacterSet))
                {
                    Encoding = System.Text.Encoding.GetEncoding(http.CharacterSet);
                }
            }

            return(response);
        }
Exemplo n.º 10
0
        internal async Task <bool> Login()
        {
            string loginURL = GameMinerURL + "login/steam?backurl=http%3A%2F%2Fgameminer.net%2F&agree=True";
            var    response = await WebClient.GetDocument(new Uri(loginURL)).ConfigureAwait(false);

            if (response == null)
            {
                return(false);
            }

            var nParams = response.DocumentNode.SelectSingleNode("//input[@name='openidparams']");
            var nNonce  = response.DocumentNode.SelectSingleNode("//input[@name='nonce']");
            var Data    = new Dictionary <string, string>()
            {
                { "action", "steam_openid_login" },
                { "openid.mode", "checkid_setup" },
                { "openidparams", nParams.GetAttributeValue("value", "") },
                { "nonce", nNonce.GetAttributeValue("value", "") }
            };
            var Hresp = await WebClient.GetContent(new Uri("https://steamcommunity.com/openid/login"), Data, HttpMethod.Post, null, false);

            if (Hresp == null)
            {
                return(false);
            }
            var url = Hresp.Headers.Location;

            Hresp = null;
            Hresp = await WebClient.GetContent(url, bAutoRedir : false);

            if (Hresp == null)
            {
                return(false);
            }
            if (string.IsNullOrWhiteSpace(Hresp.Headers.GetValues("set-cookie").ToArray()[0]))
            {
                return(false);
            }
            string token = Hresp.Headers.GetValues("set-cookie").ToList().First();

            token = token.Substring("token=".Length);
            token = token.Substring(0, token.IndexOf(";"));
            Cookie.Add(new Cookie("token", token, "/", "." + GameMinerHost));

            return(await RefreshProfile().ConfigureAwait(false));
        }
Exemplo n.º 11
0
        internal async Task <bool> RefreshProfile()
        {
            var resp = await WebClient.GetContent(new Uri(GameMinerURL)).ConfigureAwait(false);

            if (resp == null)
            {
                return(false);
            }
            if (!string.IsNullOrWhiteSpace(resp.Headers.GetValues("set-cookie").ToArray()[0].ToString()))
            {
                var cookies = resp.Headers.GetValues("set-cookie").ToList();
                foreach (var cookie in cookies)
                {
                    if (!cookie.Contains("_xsrf"))
                    {
                        continue;
                    }
                    string val = cookie.Substring("_xsrf=".Length);
                    val  = val.Substring(0, val.IndexOf(";"));
                    xsrf = val;
                    Cookie.Add(new Cookie("_xsrf", val, "/", "." + GameMinerHost));
                }
            }
            var doc = await WebClient.GetDocument(resp).ConfigureAwait(false);

            if (doc == null)
            {
                return(false);
            }

            var nCoal     = doc.DocumentNode.SelectSingleNode("//span[@class='user__coal']");
            var nLevel    = doc.DocumentNode.SelectSingleNode("//span[@class='g-level-icon']");
            var nUsername = doc.DocumentNode.SelectSingleNode("//a[@class='dashboard__user-name']");

            if (nCoal == null || nLevel == null || nUsername == null)
            {
                return(false);
            }

            iCoal     = int.Parse(nCoal.InnerText);
            iLevel    = int.Parse(nLevel.InnerText);
            sUsername = nUsername.InnerText;
            return(true);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Authenticates the by GUID.
        /// </summary>
        /// <param name="uri">The URI.</param>
        /// <param name="securityToken">The security token.</param>
        private static HttpClient AuthenticateByGuid(string uri, string securityToken)
        {
            const string SESSION_ID = "ASP.Net_SessionId";
            const string UserGuid   = "UserGuid";
            //Stores the sessionid generated and returned by the server
            string sessionId = string.Empty;
            HttpResponseMessage   httpResp = null;
            HeaderValues <Cookie> myCookies;
            HttpClient            httpClient = new HttpClient();

            httpClient.DefaultHeaders.Add(UserGuid, securityToken);
            httpResp = httpClient.Post(uri, HttpContentExtensions.CreateXmlSerializable(string.Empty));
            if (!httpResp.IsStatusIsSuccessful())
            {
                throw new EVException().AddHttpResponse(httpResp);
            }
            myCookies = httpResp.Headers.SetCookie;
            if (myCookies != null)
            {
                foreach (Cookie var in myCookies.Where(var => var.ContainsKey(SESSION_ID)))
                {
                    // -- set the session ID
                    sessionId = var[SESSION_ID];
                    break;
                }
            }
            Cookie objCookie = new Cookie();

            objCookie.Add(Constants.EvolutionCookieName, sessionId);
            // -- set the cookie in the header
            httpClient.DefaultHeaders.Cookie.Add(objCookie);
            //Add authorization header
            Credential evcredential = new Credential();

            evcredential.Parameters.Add(sessionId);
            httpClient.DefaultHeaders.Authorization        = evcredential;
            httpClient.TransportSettings.ConnectionTimeout = TimeSpan.FromMinutes(60);
            httpClient.TransportSettings.ReadWriteTimeout  = TimeSpan.FromMinutes(60);
            return(httpClient);
        }
Exemplo n.º 13
0
 public HttpSession(string url, CookieCollection cookies)
 {
     Cookie.Add(new Uri(url), cookies);
 }
Exemplo n.º 14
0
 public HttpSession(Uri url, CookieCollection cookies)
 {
     Cookie.Add(url, cookies);
 }
Exemplo n.º 15
0
 /// <summary>
 /// 设置Cookie
 /// </summary>
 /// <param name="cookie">cookie</param>
 public HttpClient AddCookie(Cookie cookie)
 {
     Cookie.Add(cookie);
     return(this);
 }