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(); }
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; } }
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); }
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); } }
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); } }
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; } }
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; } }
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); } }
public WACheck(WPExists wPExists) { this.wPExists = wPExists; }
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(); } } }