public bool Extract(NetworkCredential credential, out MailContactList list) { bool result = false; list = new MailContactList(); try { var rs = new RequestSettings("eStream-AspNetDating", credential.UserName, credential.Password) {AutoPaging = true}; var cr = new ContactsRequest(rs); Feed<Contact> f = cr.GetContacts(); foreach (Contact e in f.Entries) { foreach (var email in e.Emails) { var mailContact = new MailContact {Email = email.Address, Name = e.Title}; list.Add(mailContact); } } result = true; } catch (Exception ex) { Global.Logger.LogError(ex); } return result; }
public bool Extract(NetworkCredential credential, out MailContactList list) { list = new MailContactList(); bool result = false; try { var ticketAcquirer = new TicketAcquirer(); string ticket = ticketAcquirer.GetTicket(credential); if (string.IsNullOrEmpty(ticket)) { return false; } var urib = new UriBuilder(); urib.Scheme = "HTTPS"; urib.Path = string.Format("/{0}/LiveContacts", credential.UserName); urib.Host = "cumulus.services.live.com"; urib.Port = 443; var request = (HttpWebRequest) WebRequest.Create((Uri) urib.Uri); string authHeader = string.Format("WLID1.0 t=\"{0}\"", ticket); request.Headers.Add("Authorization", authHeader); WebResponse response = request.GetResponse(); if (response.ContentLength != 0) { var xmlDocument = new XmlDocument(); xmlDocument.Load(response.GetResponseStream()); XmlNodeList contacts = xmlDocument.SelectNodes("/LiveContacts/Contacts/Contact"); foreach (XmlNode node in contacts) { XmlNode firstName = node.SelectSingleNode("Profiles/Personal/FirstName"); XmlNode lastName = node.SelectSingleNode("Profiles/Personal/LastName"); XmlNode firstMail = node.SelectSingleNode("Emails/Email/Address"); var mailContact = new MailContact(); mailContact.Name = string.Format("{0} {1}", firstName.InnerText, lastName.InnerText); mailContact.Email = firstMail.InnerText; list.Add(mailContact); } } result = true; } catch { } return result; }
public bool Extract(NetworkCredential credential, out MailContactList list) { bool result = false; list = new MailContactList(); try { var webClient = new WebClient(); webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent; webClient.Encoding = Encoding.UTF8; byte[] firstResponse = webClient.DownloadData(_loginPage); string firstRes = Encoding.UTF8.GetString(firstResponse); var postToLogin = new NameValueCollection(); var regex = new Regex("type=\"hidden\" name=\"(.*?)\" value=\"(.*?)\"", RegexOptions.IgnoreCase); Match match = regex.Match(firstRes); while (match.Success) { if (match.Groups[0].Value.Length > 0) { postToLogin.Add(match.Groups[1].Value, match.Groups[2].Value); } match = regex.Match(firstRes, match.Index + match.Length); } postToLogin.Add(".save", "Sign In"); postToLogin.Add(".persistent", "y"); string login = credential.UserName.Split('@')[0]; postToLogin.Add("login", login); postToLogin.Add("passwd", credential.Password); webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent; webClient.Headers[HttpRequestHeader.Referer] = _loginPage; webClient.Encoding = Encoding.UTF8; webClient.Headers[HttpRequestHeader.Cookie] = webClient.ResponseHeaders[HttpResponseHeader.SetCookie]; webClient.UploadValues(_authUrl, postToLogin); string cookie = webClient.ResponseHeaders[HttpResponseHeader.SetCookie]; if (string.IsNullOrEmpty(cookie)) { return false; } string newCookie = string.Empty; string[] tmp1 = cookie.Split(','); foreach (string var in tmp1) { string[] tmp2 = var.Split(';'); newCookie = String.IsNullOrEmpty(newCookie) ? tmp2[0] : newCookie + ";" + tmp2[0]; } // set login cookie webClient.Headers[HttpRequestHeader.Cookie] = newCookie; byte[] thirdResponse = webClient.DownloadData(_addressBookUrl); string thirdRes = Encoding.UTF8.GetString(thirdResponse); string crumb = string.Empty; var regexCrumb = new Regex("type=\"hidden\" name=\"\\.crumb\" id=\"crumb1\" value=\"(.*?)\"", RegexOptions.IgnoreCase); match = regexCrumb.Match(thirdRes); if (match.Success && match.Groups[0].Value.Length > 0) { crumb = match.Groups[1].Value; } var postDataAB = new NameValueCollection(); postDataAB.Add(".crumb", crumb); postDataAB.Add("vcp", "import_export"); postDataAB.Add("submit[action_export_yahoo]", "Export Now"); webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent; webClient.Headers[HttpRequestHeader.Referer] = _addressBookUrl; byte[] FourResponse = webClient.UploadValues(_addressBookUrl, postDataAB); string csvData = Encoding.UTF8.GetString(FourResponse); string[] lines = csvData.Split('\n'); foreach (string line in lines) { string[] items = line.Split(','); if (items.Length < 5) { continue; } string email = items[4]; string name = items[3]; if (!string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(name)) { email = email.Trim('\"'); name = name.Trim('\"'); if (!email.Equals("Email") && !name.Equals("Nickname")) { var mailContact = new MailContact(); mailContact.Name = name; mailContact.Email = email; list.Add(mailContact); } } } result = true; } catch { } return result; }
public bool Extract(NetworkCredential credential, out MailContactList list) { bool result = false; list = new MailContactList(); try { CookieCollection cookies = new CookieCollection(); // Prepare login form data HttpValueCollection loginFormValues = new HttpValueCollection(); loginFormValues["ltmpl"] = "default"; loginFormValues["ltmplcache"] = "2"; loginFormValues["continue"] = ContinueUrl; loginFormValues["service"] = "mail"; loginFormValues["rm"] = "false"; loginFormValues["hl"] = "en"; loginFormValues["Email"] = credential.UserName; loginFormValues["Passwd"] = credential.Password; loginFormValues["PersistentCookie"] = "true"; loginFormValues["rmShown"] = "1"; loginFormValues["null"] = "Sign In"; // Convert to bytes byte[] loginPostData = Encoding.UTF8.GetBytes(loginFormValues.ToString(true)); HttpWebRequest loginRequest = ( HttpWebRequest )WebRequest.Create(LoginUrl); loginRequest.Method = "POST"; loginRequest.UserAgent = UserAgent; loginRequest.Referer = LoginRefererUrl; loginRequest.ContentType = "application/x-www-form-urlencoded"; loginRequest.ContentLength = loginPostData.Length; loginRequest.AllowAutoRedirect = false; // Create cookie container loginRequest.CookieContainer = new CookieContainer(); // Add post data to request Stream stream; using (stream = loginRequest.GetRequestStream()) { stream.Write(loginPostData, 0, loginPostData.Length); } HttpWebResponse loginResponse = ( HttpWebResponse )loginRequest.GetResponse(); cookies.Add(loginResponse.Cookies); // Create request to export Google CSV page HttpWebRequest contactsRequest = ( HttpWebRequest )WebRequest.Create(ExportUrl); contactsRequest.Method = "GET"; contactsRequest.UserAgent = UserAgent; contactsRequest.Referer = loginResponse.ResponseUri.ToString(); // use cookie gotten from login page contactsRequest.CookieContainer = new CookieContainer(); foreach (Cookie cookie in cookies) { contactsRequest.CookieContainer.Add(cookie); } HttpWebResponse exportResponse = ( HttpWebResponse )contactsRequest.GetResponse(); // Read data from response stream string csvData; using (Stream responseStream = exportResponse.GetResponseStream()) { using (StreamReader streamRead = new StreamReader(responseStream)) { csvData = streamRead.ReadToEnd(); } } // parse google csv string[] lines = csvData.Split('\n'); foreach (string line in lines) { string[] values = line.Split(','); if (values.Length < 2) { continue; } MailContact mailContact = new MailContact(); mailContact.Email = values[1]; mailContact.Name = values[0]; if (mailContact.Email.Trim().Length > 0) { list.Add(mailContact); } } result = true; } catch { } return(result); }
public bool Extract(NetworkCredential credential, out MailContactList list) { bool result = false; list = new MailContactList(); DateTime jsStartDate = new DateTime(1970, 1, 1); TimeSpan endTs = DateTime.Now.Subtract(jsStartDate); TimeSpan startTs = DateTime.Now.AddMinutes(-2).Subtract(jsStartDate); try { CookieCollection cookies = new CookieCollection(); // Prepare login form data HttpValueCollection loginFormValues = new HttpValueCollection(); loginFormValues["Email"] = credential.UserName; loginFormValues["Passwd"] = credential.Password; loginFormValues["asts"] = ""; loginFormValues["continue"] = ContinueUrl; loginFormValues["dsh"] = "1461574034599761425"; loginFormValues["hl"] = "en"; loginFormValues["ltmpl"] = "default"; loginFormValues["ltmplcache"] = "2"; loginFormValues["rm"] = "false"; loginFormValues["rmShown"] = "1"; loginFormValues["service"] = "mail"; loginFormValues["signIn"] = "Sign In"; loginFormValues["scc"] = "1"; loginFormValues["ss"] = "1"; loginFormValues["GALX"] = "rBTUs4OAJBI"; loginFormValues["ltmpl"] = "default"; loginFormValues["ltmpl"] = "default"; // Convert to bytes byte[] loginPostData = Encoding.UTF8.GetBytes(loginFormValues.ToString(true)); HttpWebRequest loginRequest = ( HttpWebRequest )WebRequest.Create(LoginUrl); loginRequest.Method = "POST"; loginRequest.UserAgent = UserAgent; loginRequest.Referer = LoginRefererUrl; loginRequest.ContentType = "application/x-www-form-urlencoded"; loginRequest.ContentLength = loginPostData.Length; loginRequest.AllowAutoRedirect = false; // Create cookie container loginRequest.CookieContainer = new CookieContainer(); loginRequest.CookieContainer.Add(new Cookie("GMAIL_LOGIN", "T" + startTs.Milliseconds.ToString() + "/" + startTs.Milliseconds.ToString() + "/" + endTs.Milliseconds.ToString(), "/", ".google.com")); loginRequest.CookieContainer.Add(new Cookie("GALX", "rBTUs4OAJBI", "/accounts", ".google.com")); // Add post data to request Stream stream; using (stream = loginRequest.GetRequestStream()) { stream.Write(loginPostData, 0, loginPostData.Length); } HttpWebResponse loginResponse = ( HttpWebResponse )loginRequest.GetResponse(); cookies.Add(loginResponse.Cookies); // Create request to export Google CSV page HttpWebRequest contactsRequest = ( HttpWebRequest )WebRequest.Create(ExportUrl); contactsRequest.Method = "GET"; contactsRequest.UserAgent = UserAgent; contactsRequest.Referer = loginResponse.ResponseUri.ToString(); // use cookie gotten from login page contactsRequest.CookieContainer = new CookieContainer(); foreach (Cookie cookie in cookies) { contactsRequest.CookieContainer.Add(cookie); } HttpWebResponse exportResponse = ( HttpWebResponse )contactsRequest.GetResponse(); // Read data from response stream string csvData; using (Stream responseStream = exportResponse.GetResponseStream()) { using (StreamReader streamRead = new StreamReader(responseStream)) { csvData = streamRead.ReadToEnd(); } } // parse google csv string[] lines = csvData.Split('\n'); foreach (string line in lines) { string[] values = line.Split(','); if (values.Length < 2) { continue; } MailContact mailContact = new MailContact(); mailContact.Email = values[28]; mailContact.Name = values[0]; if (mailContact.Email.Trim().Length > 0) { list.Add(mailContact); } } result = true; } catch { } return(result); }