示例#1
0
        public static void DoQuery(List <string> _nums, WPExists wPExists)
        {
            List <WAResponse> wAResponses = new List <WAResponse>();

            ChromeOptions options = new ChromeOptions();

            //options.AddArgument("headless");
            //options.AddArgument("--silent");
            options.AddArgument("disable-popup-blocking");
            service.HideCommandPromptWindow = true;
            IWebDriver driver = new ChromeDriver(service, options);

            driver.Navigate().GoToUrl("about:blank");

            foreach (string line in _nums)
            {
                driver.FindElement(By.CssSelector("Body")).SendKeys(System.Windows.Forms.Keys.Control + "t");
                driver.SwitchTo().Window(driver.WindowHandles.Last());
                string url = SettingConfig.API_BASE_URL + line;
                driver.Navigate().GoToUrl(url);
                string result = driver.PageSource.Replace("<html><head></head><body><pre style=\"word-wrap: break-word; white-space: pre-wrap;\">", "").Replace("</pre></body></html>", "");
                wPExists.WAResponse = new WAResponse()
                {
                    Number = line, Exists = result
                };
            }
            driver.Close();
        }
示例#2
0
        private static void DoQuery(string mobileNumber, CancellationToken ct, WPExists wPExists)
        {
            if (ct.IsCancellationRequested)
            {
                try
                {
                    wPExists.SetError         = "Operation Canceled.";
                    wPExists.ProcessCompleted = wPExists.StopRequested = true;
                    ct.ThrowIfCancellationRequested();
                }
                catch (Exception ex)
                {
                    wPExists.SetError = ex.Message;
                }
            }

            WAResponse wa = new WAResponse();

            wa.Number = mobileNumber;
            try
            {
                string url    = SettingConfig.API_BASE_URL + mobileNumber;
                var    client = new RestClient(url);
                client.Timeout = -1;
                var           request  = new RestRequest(Method.GET);
                IRestResponse response = client.Execute(request);
                var           data     = response.Content;

                Thread ts = new Thread(delegate()
                {
                    wa.Exists            = response.Content;
                    wa.StatusCode        = Convert.ToInt32(response.StatusCode);
                    wa.StatusDescription = response.StatusDescription;
                });
                ts.IsBackground = true;
                ts.Start();
            }
            catch (Exception ex)
            {
                wPExists.SetError = ex.Message + Environment.NewLine + ex.InnerException;
                wa.Exception      = ex.Message;
                wa.InnerException = ex.InnerException.Message;
            }
            finally
            {
                wPExists.WAResponse = wa;
            }
        }
示例#3
0
        private static async Task <string> ReadString(HttpClient client, string url, WPExists wPExists)
        {
            var response = await client.GetAsync(SettingConfig.API_BASE_URL + url);

            string data = await response.Content.ReadAsStringAsync();

            Thread th = new Thread(delegate()
            {
                //Console.WriteLine($"Fetched data from url={url}. Length={data.Length}");
                wPExists.WAResponse = new WAResponse()
                {
                    Number = url, Exists = data
                };
            })
            {
                IsBackground = true
            }; th.Start();

            return(data);
        }
示例#4
0
        public static async System.Threading.Tasks.Task StartQuery(List <string> numbers, WPExists wPExists)
        {
            try
            {
                HttpClient client = new HttpClient();

                var tasks = numbers.Select(async url =>
                {
                    while (true)
                    {
                        await ReadString(client, url, wPExists);
                    }
                });
                System.Threading.Tasks.Task.WhenAll(tasks).Wait();

                wPExists.ProcessCompleted = true;
                wPExists.StopRequested    = true;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex.InnerException);
            }
        }
示例#5
0
        public static async System.Threading.Tasks.Task StartQuery(List <string> numbers, WPExists wPExists)
        {
            try
            {
                wPExists.CurrentProxyIP = "PROXY DISABLED";
                if (numbers != null && numbers.Count > 0)
                {
                    var tasks = System.Threading.Tasks.Task.Factory.StartNew(arg => DoQuery(numbers, wPExists),
                                                                             TaskContinuationOptions.LongRunning | TaskContinuationOptions.RunContinuationsAsynchronously);
                    System.Threading.Tasks.Task.WaitAll(tasks);
                }

                wPExists.ProcessCompleted = true;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex.InnerException);
            }
        }
示例#6
0
        public static async System.Threading.Tasks.Task HttpClintProxyAsync(List <string> list, WPExists wPExists)
        {
            try
            {
                var           urls      = list.Select(s => s = SettingConfig.API_BASE_URL + s).ToList();
                List <string> proxyList = SettingConfig.ProxyIPCollection;
                if (SettingConfig.USEPROXY)
                {
                    var random       = new Random();
                    var currentProxy = proxyList[random.Next(proxyList.Count)];
                    wPExists.CurrentProxyIP = currentProxy;
                    WebProxy proxy = new WebProxy
                    {
                        Address = new Uri("http://" + currentProxy),
                    };
                    HttpClientHandler clientHandler = new HttpClientHandler()
                    {
                        Proxy = proxy,
                    };
                    using (HttpClient client = new HttpClient(clientHandler))
                    {
                        //Start requests for all of them
                        var requests = urls.Select
                                       (
                            url => client.GetAsync(url)
                                       ).ToList();

                        wPExists.RunningThreadCount = requests.Count;

                        //Wait for all the requests to finish
                        await System.Threading.Tasks.Task.WhenAll(requests);

                        //Get the responses
                        var responses = requests.Select
                                        (
                            task => task.Result
                                        );

                        Thread thw = new Thread(delegate()
                        {
                            var data = responses.ToList();
                            List <WAResponse> aResponses = (List <WAResponse>)data.Select(a => new WAResponse
                            {
                                Number            = a.RequestMessage.RequestUri.AbsolutePath.Split('/').Last().ToString(),
                                Exists            = a.Content.ReadAsStringAsync().Result,
                                StatusCode        = Convert.ToInt32(a.StatusCode),
                                StatusDescription = a.ReasonPhrase
                            });
                            wPExists.WAResponseList = aResponses;
                        })
                        {
                            IsBackground = true
                        };
                        thw.Start();
                    }
                }
                else
                {
                    wPExists.CurrentProxyIP = "PROXY DISABLED";

                    var client = new HttpClient();

                    //Start requests for all of them
                    var requests = urls.Select
                                   (
                        url => client.GetAsync(url)
                                   ).ToList();

                    wPExists.RunningThreadCount = requests.Count;

                    //Wait for all the requests to finish
                    await System.Threading.Tasks.Task.WhenAll(requests);

                    //Get the responses
                    var responses = requests.Select
                                    (
                        task => task.Result
                                    );

                    Thread thp = new Thread(delegate()
                    {
                        var data = responses.ToList();
                        List <WAResponse> aResponses = (List <WAResponse>)data.Select(a => new WAResponse
                        {
                            Number            = a.RequestMessage.RequestUri.AbsolutePath.Split('/').Last().ToString(),
                            Exists            = a.Content.ReadAsStringAsync().Result,
                            StatusCode        = Convert.ToInt32(a.StatusCode),
                            StatusDescription = a.ReasonPhrase
                        }).ToList();
                        wPExists.WAResponseList = aResponses;
                    })
                    {
                        IsBackground = true
                    };
                    thp.Start();
                }
            }
            catch (HttpRequestException ex)
            {
                wPExists.SetError = ex.Message + Environment.NewLine + ex.InnerException;
            }
        }
示例#7
0
        private static void DoQueryWithProxy(string proxyIP, int proxyPort, string mobileNumber, CancellationToken ct, WPExists wPExists)
        {
            if (ct.IsCancellationRequested)
            {
                try
                {
                    wPExists.SetError         = "Operation Canceled.";
                    wPExists.ProcessCompleted = wPExists.StopRequested = true;
                    ct.ThrowIfCancellationRequested();
                }
                catch (Exception ex)
                {
                    wPExists.SetError = ex.Message;
                }
            }

            WAResponse wa = new WAResponse();

            wa.Number = mobileNumber;
            try
            {
                string         url     = SettingConfig.API_BASE_URL + mobileNumber;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
                WebProxy       myproxy = new WebProxy(proxyIP, proxyPort);
                myproxy.BypassProxyOnLocal = false;
                request.Proxy  = myproxy;
                request.Method = "GET";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                Thread ts = new Thread(delegate()
                {
                    Stream newStream = response.GetResponseStream();
                    StreamReader sr  = new StreamReader(newStream);

                    wa.Exists            = sr.ReadToEnd();
                    wa.StatusCode        = Convert.ToInt32(response.StatusCode);
                    wa.StatusDescription = response.StatusDescription;
                });
                ts.IsBackground = true;
                ts.Start();
            }
            catch (Exception ex)
            {
                wPExists.SetError = ex.Message + Environment.NewLine + ex.InnerException;
                wa.Exception      = ex.Message;
                wa.InnerException = ex.InnerException.Message;
            }
            finally
            {
                wPExists.WAResponse = wa;
            }
        }
示例#8
0
        public static async System.Threading.Tasks.Task DoTaskQuery(List <string> current, WPExists wPExists, CancellationTokenSource tokenSource)
        {
            CancellationToken token = tokenSource.Token;

            if (SettingConfig.USEPROXY)
            {
                List <string> proxyList    = SettingConfig.ProxyIPCollection;
                int           currentProxy = 0;
                if (currentProxy >= proxyList.Count)
                {
                    currentProxy = 0;
                }
                string proxyIP   = proxyList[currentProxy].Split(':')[0].ToString();
                int    proxyPort = Convert.ToInt32(proxyList[currentProxy].Split(':')[1].ToString());
                wPExists.CurrentProxyIP = proxyList[currentProxy];

                var tasks = current
                            .Select(data => System.Threading.Tasks.Task.Factory.StartNew(arg => DoQueryWithProxy(proxyIP, proxyPort, data, token, wPExists),
                                                                                         TaskContinuationOptions.LongRunning | TaskContinuationOptions.PreferFairness))
                            .ToArray();

                wPExists.RunningThreadCount = tasks.Count();
                System.Threading.Tasks.Task.WaitAll(tasks, token);
            }
            else
            {
                wPExists.CurrentProxyIP = "PROXY DISABLED";

                var tasks = current
                            .Select(data => System.Threading.Tasks.Task.Factory.StartNew(arg => DoQuery(data, token, wPExists),
                                                                                         TaskContinuationOptions.LongRunning | TaskContinuationOptions.PreferFairness))
                            .ToArray();
                wPExists.RunningThreadCount = tasks.Count();
                System.Threading.Tasks.Task.WaitAll(tasks, token);
            }
        }
示例#9
0
 public WACheck(WPExists wPExists)
 {
     this.wPExists = wPExists;
 }
示例#10
0
        public static async System.Threading.Tasks.Task DoHashSetQuery(List <string> current, WPExists wPExists, CancellationTokenSource tokenSource)
        {
            CancellationToken token = tokenSource.Token;

            if (SettingConfig.USEPROXY)
            {
                List <string> proxyList    = SettingConfig.ProxyIPCollection;
                int           currentProxy = 0;
                if (currentProxy >= proxyList.Count)
                {
                    currentProxy = 0;
                }
                string proxyIP   = proxyList[currentProxy].Split(':')[0].ToString();
                int    proxyPort = Convert.ToInt32(proxyList[currentProxy].Split(':')[1].ToString());
                wPExists.CurrentProxyIP = proxyList[currentProxy];


                HashSet <Thread> Threadlist = new HashSet <Thread>();
                foreach (var v in current)
                {
                    Threadlist.Add(new Thread(() => DoQueryWithProxy(proxyIP, proxyPort, v, token, wPExists)));
                }
                foreach (Thread T in Threadlist)
                {
                    T.SetApartmentState(ApartmentState.STA);
                    T.Start();
                }
                foreach (Thread T in Threadlist)
                {
                    if (T.ThreadState == ThreadState.Running)
                    {
                        T.Join();
                    }
                    wPExists.RunningThreadCount = Threadlist.Count();
                }
            }
            else
            {
                HashSet <Thread> Threadlist = new HashSet <Thread>();
                foreach (var v in current)
                {
                    Threadlist.Add(new Thread(() => DoQuery(v, token, wPExists)));
                }
                foreach (Thread T in Threadlist)
                {
                    T.SetApartmentState(ApartmentState.STA);
                    T.Start();
                }
                foreach (Thread T in Threadlist)
                {
                    if (T.ThreadState == ThreadState.Running)
                    {
                        T.Join();
                    }
                    wPExists.RunningThreadCount = Threadlist.Count();
                }
            }
        }