public void Login(string username, string password, bool forceLogin = false) { string culture = Properties.Resources.Culture.ToString(); long day = DateTime.Now.Ticks / TimeSpan.TicksPerDay; if (day > _lastLogin || culture != _lastCulture) { forceLogin = true; } if (!_isLoggedIn || forceLogin) { Log.Info("Login to Amazon " + Properties.Resources.AmazonRootUrl); _isLoggedIn = false; _lastCulture = culture; var loginDoc = Load(Properties.Resources.AmazonLoginUrl); var formElements = new FormElementCollection(loginDoc); string postUrl = loginDoc.GetElementbyId("ap_signin_form").Attributes["action"].Value; formElements["email"] = username; formElements["password"] = password; formElements["create"] = "0"; Thread.Sleep(1500); string login = GetWebData(postUrl, formElements.AssemblePostPayload(), cc, null, null, false, false, userAgent); // TODO add login check _isLoggedIn = true; _lastLogin = day; Log.Info("Login complete"); } }
public void Login(string username, string password, bool forceLogin = false) { string culture = Properties.Resources.Culture.ToString(); long day = DateTime.Now.Ticks / TimeSpan.TicksPerDay; if (day > _lastLogin || culture != _lastCulture) { forceLogin = true; } if (!_isLoggedIn || forceLogin) { Log.Info("Login to Amazon " + Properties.Resources.AmazonRootUrl); _isLoggedIn = false; _lastCulture = culture; var loginDoc = Load(Properties.Resources.AmazonLoginUrl); var formElements = new FormElementCollection(loginDoc); string postUrl = loginDoc.GetElementbyId("ap_signin_form").Attributes["action"].Value; formElements["email"] = username; formElements["password"] = password; formElements["create"] = "0"; Thread.Sleep(1500); string login = GetWebData(postUrl, formElements.AssemblePostPayload(), cc, null, null, false, false, userAgent); // TODO add login check _isLoggedIn = true; _lastLogin = day; Log.Info("Login complete"); } }
public void Login(string username, string password, bool forceLogin = false) { string culture = Resources.Culture.ToString(); long day = DateTime.Now.Ticks / TimeSpan.TicksPerDay; if (day > _lastLogin || culture != _lastCulture) { forceLogin = true; } if (!_isLoggedIn || forceLogin) { Log.Info("Login to Amazon " + Resources.AmazonRootUrl); _isLoggedIn = false; _lastCulture = culture; // Load the main page inside a WebBrowser control to retrieve all dynamically created cookies (session ids by JS) _cc = GetCookies(Resources.AmazonLoginUrl); var loginDoc = Load(Resources.AmazonLoginUrl); var formElements = new FormElementCollection(loginDoc); // There can appear different login pages, using other names for form / controls var loginForm = loginDoc.GetElementbyId("ap_signin_form") ?? loginDoc.DocumentNode.SelectNodes("//*[@name='signIn']").FirstOrDefault(); if (loginForm == null) { Log.Error("AmazonBrowserSession: Failed to get login form!"); return; } // Copy over all input elements foreach (var inputElement in loginForm.SelectNodes("//input")) { var name = inputElement.Attributes["name"]; var value = inputElement.Attributes["value"]; if (name != null && value != null) formElements[name.Value] = value.Value; } if (formElements.ContainsKey("email")) { formElements["email"] = username; formElements["password"] = password; formElements["create"] = "0"; } else { // 2nd variant of login form formElements["ap_email"] = username; formElements["ap_password"] = password; } NameValueCollection headers = new NameValueCollection(); headers["Accept"] = "text/html, application/xhtml+xml, image/jxr, */*"; headers["Accept-Language"] = "de-DE"; headers["Cache-Control"] = "no-cache"; headers["User-Agent"] = UserAgent; string postUrl = loginForm.Attributes["action"].Value; //Thread.Sleep(500); string login = GetWebData(postUrl, formElements.AssemblePostPayload(), _cc, Resources.AmazonLoginUrl, null, false, false, UserAgent, null, headers); var reCustomer = new Regex("\"customerID\":\"([^\"]*)\""); var customerMatch = reCustomer.Match(login); if (customerMatch.Groups.Count > 1) { _customerId = customerMatch.Groups[1].Value; _isLoggedIn = true; _lastLogin = day; } Log.Info("Login complete"); } }
public void Login(string username, string password, bool forceLogin = false) { string culture = Resources.Culture.ToString(); long day = DateTime.Now.Ticks / TimeSpan.TicksPerDay; if (day > _lastLogin || culture != _lastCulture) { forceLogin = true; } if (!_isLoggedIn || forceLogin) { Log.Info("Login to Amazon " + Resources.AmazonRootUrl); _isLoggedIn = false; _lastCulture = culture; // Load the main page inside a WebBrowser control to retrieve all dynamically created cookies (session ids by JS) _cc = GetCookies(Resources.AmazonLoginUrl); var loginDoc = Load(Resources.AmazonLoginUrl); var formElements = new FormElementCollection(loginDoc); // There can appear different login pages, using other names for form / controls var loginForm = loginDoc.GetElementbyId("ap_signin_form") ?? loginDoc.DocumentNode.SelectNodes("//*[@name='signIn']").FirstOrDefault(); if (loginForm == null) { Log.Error("AmazonBrowserSession: Failed to get login form!"); return; } // Copy over all input elements foreach (var inputElement in loginForm.SelectNodes("//input")) { var name = inputElement.Attributes["name"]; var value = inputElement.Attributes["value"]; if (name != null && value != null) { formElements[name.Value] = value.Value; } } if (formElements.ContainsKey("email")) { formElements["email"] = username; formElements["password"] = password; formElements["create"] = "0"; } else { // 2nd variant of login form formElements["ap_email"] = username; formElements["ap_password"] = password; } NameValueCollection headers = new NameValueCollection(); headers["Accept"] = "text/html, application/xhtml+xml, image/jxr, */*"; headers["Accept-Language"] = "de-DE"; headers["Cache-Control"] = "no-cache"; headers["User-Agent"] = UserAgent; string postUrl = loginForm.Attributes["action"].Value; //Thread.Sleep(500); string login = GetWebData(postUrl, formElements.AssemblePostPayload(), _cc, Resources.AmazonLoginUrl, null, false, false, UserAgent, null, headers); var reCustomer = new Regex("\"customerID\":\"([^\"]*)\""); var customerMatch = reCustomer.Match(login); if (customerMatch.Groups.Count > 1) { _customerId = customerMatch.Groups[1].Value; _isLoggedIn = true; _lastLogin = day; } Log.Info("Login complete"); } }