Example #1
0
        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;
        }
Example #2
0
        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;
        }
Example #3
0
        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);
    }
Example #5
0
    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);
    }