public bool Authenticate(string email, SecureString password, bool useSessionID) { if (useSessionID) { credentialCookies.Add(new System.Net.Cookie("POESESSID", password.UnWrap(), "/", "www.pathofexile.com")); HttpWebRequest confirmAuth = getHttpRequest(HttpMethod.GET, loginURL); HttpWebResponse confirmAuthResponse = (HttpWebResponse)confirmAuth.GetResponse(); if (confirmAuthResponse.ResponseUri.ToString() == loginURL) throw new LogonFailedException(); return true; } HttpWebRequest getHash = getHttpRequest(HttpMethod.GET, loginURL); HttpWebResponse hashResponse = (HttpWebResponse)getHash.GetResponse(); string loginResponse = Encoding.Default.GetString(getMemoryStreamFromResponse(hashResponse).ToArray()); string hashValue = Regex.Match(loginResponse, hashRegEx).Groups["hash"].Value; HttpWebRequest request = getHttpRequest(HttpMethod.POST, loginURL); request.AllowAutoRedirect = false; StringBuilder data = new StringBuilder(); data.Append("login_email=" + Uri.EscapeDataString(email)); data.Append("&login_password="******"&hash=" + hashValue); byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString()); request.ContentLength = byteData.Length; Stream postStream = request.GetRequestStream(); postStream.Write(byteData, 0, byteData.Length); HttpWebResponse response; response = (HttpWebResponse)request.GetResponse(); //If we didn't get a redirect, your gonna have a bad time. if (response.StatusCode != HttpStatusCode.Found) throw new LogonFailedException(this.email); return true; }