Exemplo n.º 1
0
        private async Task <Page> PageInit(Browser browser, bool isIncognito = false)
        {
            Page page;

            if (isIncognito)
            {
                var context = await browser.CreateIncognitoBrowserContextAsync();

                page = await context.NewPageAsync();
            }
            //else page = await browser.NewPageAsync();
            else
            {
                page = (await browser.PagesAsync())[0];
            }

            #region commented
            //await SetRequestHook(page);
            //var deviceDescriptorName = GetDeviceDescriptorName();
            //if (deviceDescriptorName != DeviceDescriptorName.BlackberryPlayBook)
            //{
            //    await page.EmulateAsync(Puppeteer.Devices[deviceDescriptorName]);
            //}
            #endregion
            if (_chromiumSettings != null)
            {
                await PuppeteerBrowser.Authenticate(page, _chromiumSettings.Proxy);
            }
            await page.GoToAsync(GetRegistrationUrl(), _navigationOptions);

            return(page);
        }
Exemplo n.º 2
0
        public async Task <List <CheckFbCredentialOutput> > RunScenario(IList <CheckFbCredentialInput> listCheckFbCredentialInput)
        {
            var listCheckFbCredentialOutput = new List <CheckFbCredentialOutput>(listCheckFbCredentialInput.Count);

            foreach (var credential in listCheckFbCredentialInput)
            {
                try
                {
                    using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless()))
                        using (var page = await browser.NewPageAsync())
                        {
                            var pageUrl = await FbAuthorization.Auth(page, new EmailAccountData { Phone = credential.Login, Password = credential.Password });

                            var checkFbCredentialOutput = new CheckFbCredentialOutput
                            {
                                Login     = credential.Login,
                                Password  = credential.Password,
                                IsSuccess = !string.IsNullOrEmpty(pageUrl),
                                Url       = pageUrl
                            };
                            listCheckFbCredentialOutput.Add(checkFbCredentialOutput);
                            _progressResult?.Report(checkFbCredentialOutput);
                            Info(JsonConvert.SerializeObject(checkFbCredentialOutput));
                        }
                }
                catch (Exception exception)
                {
                    Error(exception.Message);
                }
            }
            return(listCheckFbCredentialOutput);
        }
Exemplo n.º 3
0
        public async Task <List <string> > RunScenario(string[] queries, int pageCount)
        {
            var result = new List <string>();

            try
            {
                var navigationOptions = new NavigationOptions {
                    Timeout = 60000
                };
                using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless(), _chromiumSettings.GetArgs()))
                    using (var page = await browser.NewPageAsync())
                    {
                        await PuppeteerBrowser.Authenticate(page, _chromiumSettings.Proxy);

                        var linkCount = 1;
                        foreach (var query in queries)
                        {
                            await page.GoToAsync($"https://yandex.ru", navigationOptions);

                            await page.TypeAsync("input", query, new TypeOptions { Delay = 150 });

                            await page.Keyboard.PressAsync($"{nameof(Key.Enter)}");

                            await page.WaitForNavigationAsync(navigationOptions);

                            var contentSelector = "div.organic>h2>a";
                            for (int pageIndex = 0; pageIndex < pageCount; pageIndex++)
                            {
                                var links = await page.QuerySelectorAllAsync(contentSelector);

                                foreach (var item in links)
                                {
                                    var text = (await(await item.GetPropertyAsync("href")).JsonValueAsync()).ToString();
                                    if (text.Contains("http") && !text.Contains("yabs.yandex"))
                                    {
                                        Report($"------------{linkCount}------------------------------------------------");
                                        Report($"{text}");
                                        result.Add(text);
                                        linkCount++;
                                    }
                                }
                                if (pageIndex < pageCount - 1)
                                {
                                    await page.ClickAsync("div.pager a:last-child");

                                    await page.WaitForNavigationAsync(navigationOptions);
                                }
                            }
                        }
                    }
            }
            catch (Exception exception)
            {
                Error(exception.ToString());
            }
            return(result);
        }
Exemplo n.º 4
0
 private async void BtnRecaptcha_Click(object sender, EventArgs e)
 {
     try
     {
         using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless(), _chromiumSettings.GetArgs()))
             using (var page = await PageInit(browser)) await Recaptcha(page);
     }
     catch (Exception exception)
     {
         throw;
     }
 }
Exemplo n.º 5
0
        public async Task RunScenario(List <LoginPasswordInput> listEmailAndPassword, string to, string subject, string[] emailText)
        {
            using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless()))
                foreach (var emailAndPassword in listEmailAndPassword)
                {
                    try
                    {
                        var login       = emailAndPassword.Login.Trim().ToLower();
                        var mailAddress = new MailAddress(login);
                        if (mailAddress != null)
                        {
                            if (MailRuDomains.Contains(mailAddress.Host))
                            {
                                using (var page = await browser.NewPageAsync())
                                {
                                    await page.GoToAsync(MailRuRegistration.GetLoginUrl());

                                    var isLoginSuccess = await MailRuRegistration.Login(accountName : login, password : emailAndPassword.Password, page : page);

                                    await MailRuRegistration.SendEmail(to : to, subject : subject, text : emailText, page : page);

                                    Info($"Почта отправлена {mailAddress.Address}");
                                }
                            }
                            if (mailAddress.Host.Equals(ServiceDomains.GetDomain(ServiceCode.Yandex)))
                            {
                                using (var page = await browser.NewPageAsync())
                                {
                                    await page.GoToAsync(YandexRegistration.GetLoginUrl());

                                    var isLoginSuccess = await YandexRegistration.Login(accountName : login, password : emailAndPassword.Password, page : page);

                                    await YandexRegistration.SendEmail(to : to, subject : subject, text : emailText, page : page);

                                    Info($"Почта отправлена {mailAddress.Address}");
                                }
                            }
                            if (mailAddress.Host.Equals(ServiceDomains.GetDomain(ServiceCode.Gmail)))
                            {
                                Info($"gmail {mailAddress.Address} {emailAndPassword.Password}");
                            }
                        }
                    }
                    catch (FormatException)
                    {
                        Error($"Некорректный адрес {emailAndPassword.Login}");
                    }
                }
        }
Exemplo n.º 6
0
        public async Task <List <string> > RunScenario(IAccountData accountData, string[] vkAccountNames)
        {
            var result = new List <string>();

            try
            {
                using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless()))
                    using (var page = await browser.NewPageAsync())
                    {
                        if (accountData != null)
                        {
                            var vkAuthorizationAuth = await VkAuthorization.Auth(page, accountData);

                            Info($"Авторизация ВКонтакте успешна - {vkAuthorizationAuth}");
                        }
                        else
                        {
                            Info("Нет данных для авторизация ВКонтакте");
                        }
                        foreach (var vkAccountName in vkAccountNames)
                        {
                            if (string.IsNullOrEmpty(vkAccountName))
                            {
                                continue;
                            }
                            var response = await page.GoToAsync($"https://vk.com/{vkAccountName}");

                            var checkVkAccountResult = new CheckVkAccountOutput
                            {
                                AccountName = vkAccountName,
                                Available   = response.Ok
                            };
                            _progressResult?.Report(checkVkAccountResult);
                            var text = JsonConvert.SerializeObject(checkVkAccountResult);
                            Info(text);
                            result.Add(text);
                        }
                    }
            }
            catch (Exception exception)
            {
                Error(exception.Message);
            }
            return(result);
        }
Exemplo n.º 7
0
        public async Task RunScenario(IAccountData accountData, string[] vkGroups, string message)
        {
            try
            {
                using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless()))
                    using (var page = await browser.NewPageAsync())
                    {
                        foreach (var vkGroup in vkGroups)
                        {
                            await VkAuthorization.Auth(page, accountData);

                            await page.GoToAsync($"https://vk.com/{vkGroup}");

                            //await page.GoToAsync($"https://vk.com/club188446341");

                            await page.WaitForSelectorAsync("div.submit_post_field", new WaitForSelectorOptions { Timeout = 5000 });

                            await page.ClickAsync("div.submit_post_field");

                            await page.WaitForTimeoutAsync(500);

                            //await page.TypeAsync("div.submit_post_field", "45", new TypeOptions { Delay = 50 });
                            await page.Keyboard.PressAsync($"{nameof(Key.Backspace)}");

                            await page.Keyboard.PressAsync($"{nameof(Key.Backspace)}");

                            await page.TypeAsync("div.submit_post_field", message, new TypeOptions { Delay = 50 });

                            await page.WaitForTimeoutAsync(500);

                            await page.ClickAsync("#send_post");

                            await page.WaitForTimeoutAsync(500);

                            //await page.Keyboard.PressAsync($"{nameof(Key.Enter)}");

                            //Report($"{text}");
                        }
                    }
            }
            catch (Exception exception)
            {
                Error(exception.ToString());
            }
        }
Exemplo n.º 8
0
        private async void BtnIpWebShow_Click(object sender, EventArgs e)
        {
            var url   = cmbIpWeb.Text;
            var proxy = tbProxy.Text;

            try
            {
                _chromiumSettings.Proxy = proxy;
                var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless(), _chromiumSettings.GetArgs());

                var page = (await browser.PagesAsync())[0];
                await PuppeteerBrowser.Authenticate(page, _chromiumSettings.Proxy);

                await page.GoToAsync(url);

                browser = null;
                page    = null;
            }
            catch (Exception exception)
            {
            }
        }
Exemplo n.º 9
0
        private static async Task JiraAsync(string ticket)
        {
            // JIRA
            var jiraHost = Environment.GetEnvironmentVariable("VISDIFF_JIRA_HOST");
            var jiraUser = Environment.GetEnvironmentVariable("VISDIFF_JIRA_USER");
            var jiraKey  = Environment.GetEnvironmentVariable("VISDIFF_JIRA_KEY");
            var jira     = JIRAUtils.Create(jiraHost, jiraUser, jiraKey);

            // Browser
            var browser   = new PuppeteerBrowser();
            var tcManager = new DefaultTestCaseManager(browser)
            {
                ProdBaseUrl  = "http://example.com",
                StageBaseUrl = "http://stage.example.com"
            };

            // GO!
            Console.WriteLine(String.Format("[RABBIT][JIRA-ASYNC] Received: {0}", ticket));
            await OrchestrationUtils.RunJiraDiff(jira, tcManager, ticket);

            Console.WriteLine(String.Format("[RABBIT][JIRA-ASYNC] Completed: {0}", ticket));
        }
Exemplo n.º 10
0
        public async Task <List <string> > RunScenario(string[] domains)
        {
            var result = new List <string>();

            try
            {
                using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless()))
                    using (var page = await browser.NewPageAsync())
                    {
                        foreach (var domain in domains)
                        {
                            Report($"Проверка {domain}");
                            await page.GoToAsync($"https://www.nic.ru/whois");

                            await page.TypeAsync("input", domain, new TypeOptions { Delay = 50 });

                            await page.Keyboard.PressAsync($"{nameof(Key.Enter)}");

                            var contentSelector = "div[data-qa='Whois-card']";
                            var data            = await page.WaitForSelectorAsync(contentSelector, new WaitForSelectorOptions { Timeout = 5000 });

                            var text    = (await(await data.GetPropertyAsync("innerText")).JsonValueAsync()).ToString();
                            var indexOf = text.IndexOf("<<<");
                            if (indexOf >= 0)
                            {
                                text = text.Remove(indexOf);
                            }
                            Report($"{text}");
                            result.Add(text);
                        }
                    }
            }
            catch (Exception exception)
            {
                Error(exception.ToString());
            }
            return(result);
        }
Exemplo n.º 11
0
 public async Task <IAccountData> Registration(CountryCode countryCode)
 {
     try
     {
         _countryPrefix = PhoneServiceStore.CountryPrefixes[countryCode];
         if (!string.IsNullOrEmpty(await SmsServiceInit(countryCode)))
         {
             return(_data);
         }
         if (_chromiumSettings != null)
         {
             using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless(), _chromiumSettings.GetArgs()))
                 using (var page = await PageInit(browser)) await StartRegistration(page);
         }
         else if (!string.IsNullOrEmpty(_folder))
         {
             _browserProfileService.AddToName(_folder, $" {_data.Domain}: {_data.AccountName}/{_data.Password}");
             using (var browser = await _browserProfileService.StartProfile(_folder))
                 using (var page = await PageInit(browser)) await StartRegistration(page);
         }
         else
         {
             var browserProfile = _browserProfileService.GetNew();
             _folder              = browserProfile.Folder;
             browserProfile.Name += $"{_data.Domain}: {_data.AccountName}/{_data.Password}";
             _browserProfileService.Add(browserProfile);
             _browserProfileService.SaveProfiles();
             using (var browser = await _browserProfileService.StartProfile(_folder))
                 using (var page = await PageInit(browser)) await StartRegistration(page);
         }
     }
     catch (Exception exception)
     {
         Log.Error(exception);
         _data.ErrMsg = exception.Message;
     }
     return(_data);
 }
Exemplo n.º 12
0
        private async void BtnExecute_Click(object sender, EventArgs e)
        {
            try
            {
                tbProgress.Clear();
                var progress = new Progress <string>(update => tbProgress.AppendText(update + Environment.NewLine));

                /*using (*/
                var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless(), _chromiumSettings.GetArgs()); /*)
                                                                                                                                                             * {*/

                /*using (*/ var page = await browser.NewPageAsync();                                                                                        /*)
                                                                                                                                                             * {*/

                await page.GoToAsync(cbUrl.Text);

                await page.ExposeFunctionAsync("imgcl", async (string text) =>
                {
                    Debug.WriteLine(text);
                    await page.EvaluateExpressionAsync($"console.log('{text}')");
                    //if (text.ToLower().Contains(args.TriggerWord) && !text.Contains(args.ResponseTemplate))
                    //{
                    //    await RespondAsync(args, text);
                    //}
                });

                //await Page.ExposeFunctionAsync("compute", (int a, int b) => a * b);
                // var result = await Page.EvaluateExpressionAsync<int>("compute(9, 4)");

                await page.EvaluateExpressionAsync("imgcl('фигня')");

                await page.EvaluateExpressionAsync("imgcl('фигня')");


                await page.EvaluateFunctionAsync(@"() => {
                            let imgs = Array.from(document.querySelectorAll('img'));
                            for (let i = 0; i < imgs.length; i++)
                            {
                                let a = imgs[i];
                                console.log(`Binding for ${ a.src}`);

                                // This event does not trigger!!!!!
                                a.addEventListener('click', e => {
                                    console.log(`some one clicked the img ${e}`);
                                    imgcl('aaaaa');
                                    e.preventDefault();
                                    e.stopPropagation();
                                    return false;
                                });
                             };
                           }");



                //await page.Mouse.DownAsync(new PuppeteerSharp.Input.ClickOptions { })
                //}
                //}
            }
            catch (Exception exception)
            {
            }
        }
Exemplo n.º 13
0
        public async Task <List <string> > RunScenario(string[] emails)
        {
            var result          = new List <string>();
            var listMailAddress = new Dictionary <string, MailAddress>(emails.Length);

            try
            {
                var dnsLite = new DnsLite();
                // https://developers.google.com/speed/public-dns/
                //http://www.opendns.com/opendns-ip-addresses/
                var dnslist = new List <string>
                {
                    "8.8.8.8",
                    "8.8.4.4",
                    "208.67.222.222",
                    "208.67.220.220"
                };

                var oldStyleList = new ArrayList();
                foreach (var s in dnslist)
                {
                    oldStyleList.Add(s);
                }
                dnsLite.setDnsServers(oldStyleList);

                foreach (var email in emails.Where(x => !string.IsNullOrEmpty(x)).Select(x => x.ToLower()).Distinct().ToArray())
                {
                    MailAddress mailAddress;
                    try
                    {
                        mailAddress = new MailAddress(email);
                    }
                    catch (FormatException)
                    {
                        mailAddress = null;
                    }

                    if (mailAddress != null)
                    {
                        if (EmailValidator.Validate(mailAddress.Address))
                        {
                            var servers = dnsLite.getMXRecords(mailAddress.Host).OfType <MXRecord>().OrderBy(record => record.preference).Select(x => "smtp://" + x.exchange).Distinct().ToList();
                            //var servers = dnsLite.getMXRecords(mailAddress.Host).OfType<MXRecord>().Distinct().ToList();
                            if (servers.Count > 0)
                            {
                                listMailAddress[mailAddress.Address] = mailAddress;
                                result.Add(mailAddress.Address);
                                Info($"{email} - успешная проверка написания");
                            }
                            else
                            {
                                Info($"{email} - ошибка Mx records");
                            }
                        }
                        else
                        {
                            Info($"{email} - ошибка rfc653x");
                        }
                    }
                    else
                    {
                        Info($"{email} - ошибка написания");
                    }
                }

                //проверка попыткой регистрации
                using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless()))
                    foreach (var item in listMailAddress)
                    {
                        if (MailRuDomains.Contains(item.Value.Host))
                        {
                            using (var page = await browser.NewPageAsync())
                            {
                                await page.GoToAsync(MailRuRegistration.RegistrationUrl);

                                var emailAlreadyRegistered = await MailRuRegistration.EmailAlreadyRegistered(item.Value.User, item.Value.Host, page);

                                if (emailAlreadyRegistered)
                                {
                                    Info($"{item.Value.Address} - успешная проверка регистрацией - адрес существует");
                                }
                                else
                                {
                                    Info($"{item.Value.Address} - ошибка - проверка регистрацией - адрес не существует");
                                    result.Remove(item.Value.Address);
                                }
                            }
                        }
                        if (item.Value.Host.Equals(ServiceDomains.GetDomain(ServiceCode.Yandex)))
                        {
                            using (var page = await browser.NewPageAsync())
                            {
                                await page.GoToAsync(YandexRegistration.RegistrationUrl);

                                var emailAlreadyRegistered = await YandexRegistration.EmailAlreadyRegistered(item.Value.User, page);

                                if (emailAlreadyRegistered)
                                {
                                    Info($"{item.Value.Address} - успешная проверка регистрацией - адрес существует");
                                }
                                else
                                {
                                    Info($"{item.Value.Address} - ошибка - проверка регистрацией - адрес не существует");
                                    result.Remove(item.Value.Address);
                                }
                            }
                        }
                        if (item.Value.Host.Equals(ServiceDomains.GetDomain(ServiceCode.Gmail)))
                        {
                            using (var page = await browser.NewPageAsync())
                            {
                                await page.GoToAsync(GmailRegistration.RegistrationUrl);

                                var emailAlreadyRegistered = await GmailRegistration.EmailAlreadyRegistered(item.Value.User, page, _chromiumSettings.GetPath());

                                if (emailAlreadyRegistered)
                                {
                                    Info($"{item.Value.Address} - успешная проверка регистрацией - адрес существует");
                                }
                                else
                                {
                                    Info($"{item.Value.Address} - ошибка - проверка регистрацией - адрес не существует");
                                    result.Remove(item.Value.Address);
                                }
                            }
                        }
                    }
            }
            catch (Exception exception)
            {
                Error(exception.ToString());
            }
            return(result);
        }
Exemplo n.º 14
0
        public async Task <List <string> > RunScenario(IAccountData accountData, string[] vkAccountNames, int pageCount)
        {
            var result = new List <string>();

            try
            {
                using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless()))
                    using (var page = await browser.NewPageAsync())
                    {
                        await VkAuthorization.Auth(page, accountData);

                        var i = 1;
                        foreach (var vkAccountName in vkAccountNames)
                        {
                            await page.GoToAsync($"https://vk.com/{vkAccountName}");

                            var postContentSelector = "div.post_content";
                            var postContent         = await page.QuerySelectorAllAsync(postContentSelector);

                            var postCount = postContent.Length;

                            var cycleIndex    = 1;
                            var postCountPrev = 0;
                            while (postCount >= postCountPrev)
                            {
                                if (cycleIndex >= pageCount)
                                {
                                    break;
                                }
                                postCountPrev = postCount;
                                await page.Keyboard.DownAsync($"{nameof(Key.Control)}");

                                await page.Keyboard.PressAsync($"{nameof(Key.End)}");

                                await page.Keyboard.UpAsync($"{nameof(Key.Control)}");

                                await page.WaitForTimeoutAsync(300);

                                postContent = await page.QuerySelectorAllAsync(postContentSelector);

                                postCount = postContent.Length;
                                cycleIndex++;
                            }

                            foreach (var item in postContent)
                            {
                                Report($"------------{i}------------------------------------------------");
                                var text = (await(await item.GetPropertyAsync("innerText")).JsonValueAsync()).ToString();
                                Report(text);
                                result.Add(text);
                                i++;
                            }
                        }
                    }
            }
            catch (Exception exception)
            {
                Error(exception.ToString());
            }
            return(result);
        }
Exemplo n.º 15
0
        private async void BtnWebShow_Click(object sender, EventArgs e)
        {
            var url   = cmbIpWeb.Text;
            var proxy = tbProxy.Text;

            try
            {
                _chromiumSettings.ClearArgs();
                if (lbLocale.SelectedIndex >= 0)
                {
                    _chromiumSettings.AddArg($"--lang={lbLocale.Items[lbLocale.SelectedIndex]}");
                }
                _chromiumSettings.Proxy = proxy;
                var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless(), _chromiumSettings.GetArgs());

                var page = (await browser.PagesAsync())[0];
                await page.EvaluateFunctionOnNewDocumentAsync(@"() => {
        const originalFunction = HTMLCanvasElement.prototype.toDataURL;
        HTMLCanvasElement.prototype.toDataURL = function (type) {
            //if (type === 'image/png' && this.width === 220 && this.height === 30) {
                // this is likely a fingerprint attempt, return fake fingerprint
                
                return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAAAeCAYAAABHenA+AAACiklEQVR4Xu3ZwW7DMAwD0PTP/ecburbAsMXr0yrDPbBnVrIoUlaSy9H/+5CQYwyBHYqjYDfQpYBtg44xlBc6n8bTApTnAo7qOI6DeOmuoxCP6tB+UDA93B1HBBYaV0z/FL6i5qdJtSFjDDqfxnt6sDugux9aRwynHZrjYrgTbtQgKlSNp+2M4c6Z6u4HTVNtWm64OVNqkO4Ga+9iuBjuiwEVggorz3BTYRGF2g8dHFkpifY/QVkps1JeB6VuT6QXlaUOhEI8qkM3GAqmh8tKmZXywUAMd66FGK44Tf4L1wmoQtV4el69GQo41VZuOG3SBEcEFhr34nF+/V2F0JpXDRLDvUa76kqzdPdjhfhiuDzD5Rlu4mg2nE5onRzdOJ1EhbdixI3ysmDyEoWFvFTvLv6o2I0g1Z+SfJ1YdHPtqlkL3iWYgvCJQo2nuMLnEtUBaevddUXNuH2+onoJdE367sRowTHcVEKqhRju/JGB+CNQDNfyul+HJeH05lJcbjiifQrSgR/DzXkmbvTmLwifOq/xFBfDEe0x3IMBnTBZKbNSvmat83+r/miKZ6XMSvmNgTzD5RnO3xLlhssNlxuugQG90mO4GK5Bbr9CqP6yUualyYMB1UJWyndaKdXp+nZPp5Hm1RtO3+4V8mopKmiKp3VQsAWg7vNpvF04nWr84VsFGMNN1RvDvWDsXUbSvDHcpLlKoA6YgoZiuAJZP6GFvlGW7ngxXAxHwlsFUkFrfo23CxfDxXCq5SU4Fb4m13i7cDFcDKdaXoJT4WtyjbcLF8PFcKrlJTgVvibXeLtwMVwMp1peglPha3KNtwsXw8VwquUlOBW+Jtd4u3AxXAynWl6CU+Frco23C/cJYv9dKep5EnQAAAAASUVORK5CYII=';
            //}
            // otherwise, just use the original function
            return originalFunction.apply(this, arguments);
        };
    }");

//                await page.EvaluateFunctionOnNewDocumentAsync(@"() => {
//        const getParameter = WebGLRenderingContext.getParameter;
//WebGLRenderingContext.prototype.getParameter = function(parameter) {
//  // UNMASKED_VENDOR_WEBGL
//  if (parameter === 37445) {
//    return 'Intel Open Source Technology Center';
//  }
//  // UNMASKED_RENDERER_WEBGL
//  if (parameter === 37446) {
//    return 'Mesa DRI Intel(R) Ivybridge Mobile ';
//  }

//  return getParameter(parameter);
//};
//    }");
                await PuppeteerBrowser.Authenticate(page, _chromiumSettings.Proxy);

                if (_deviceItem != null && !string.IsNullOrEmpty(tbCurrentDevice.Text))
                {
                    await page.EmulateAsync(Puppeteer.Devices[_deviceItem.DeviceDescriptorName]);
                }
                if (lbTimeZones.SelectedIndex >= 0)
                {
                    await page.EmulateTimezoneAsync((string)lbTimeZones.Items[lbTimeZones.SelectedIndex]);
                }
                await page.GoToAsync(url);

                browser = null;
                page    = null;
            }
            catch (Exception exception)
            {
            }
        }
Exemplo n.º 16
0
        public async Task <List <string> > RunScenario(string[] queries, int pageCount)
        {
            var result = new List <string>();

            try
            {
                using (var browser = await PuppeteerBrowser.GetBrowser(_chromiumSettings.GetPath(), _chromiumSettings.GetHeadless(), _chromiumSettings.GetArgs()))
                    using (var page = await browser.NewPageAsync())
                    {
                        var navigationOptions = new NavigationOptions {
                            Timeout = 60000, WaitUntil = new[] { WaitUntilNavigation.Networkidle0 }
                        };
                        await PuppeteerBrowser.Authenticate(page, _chromiumSettings.Proxy);

                        foreach (var query in queries)
                        {
                            await page.GoToAsync($"https://hunter.ddosecrets.com/search", navigationOptions);

                            //await page.WaitForNavigationAsync(navigationOptions);

                            await page.TypeAsync("#search-box", query, new TypeOptions { Delay = 50 });

                            await page.Keyboard.PressAsync($"{nameof(Key.Enter)}");

                            //await page.WaitForTimeoutAsync(5000);

                            var contentSelector = "a.EntityLink";
                            await page.WaitForSelectorAsync(contentSelector);

                            var elementHandles = await page.QuerySelectorAllAsync(contentSelector);

                            var elementCount = elementHandles.Length;
                            await page.ClickAsync("main.ContentPane");

                            var elementCountPrev = 0;
                            while (elementCount > elementCountPrev)
                            {
                                elementCountPrev = elementCount;
                                await page.Keyboard.DownAsync($"{nameof(Key.Control)}");

                                await page.Keyboard.PressAsync($"{nameof(Key.End)}");

                                await page.Keyboard.UpAsync($"{nameof(Key.Control)}");

                                await page.WaitForTimeoutAsync(1500);

                                elementHandles = await page.QuerySelectorAllAsync(contentSelector);

                                elementCount = elementHandles.Length;
                            }
                            Report($"query:{query} - found {elementCount} links");
                            var downloadLinks = new List <string>(elementCount);
                            foreach (var item in elementHandles)
                            {
                                var text = (await(await item.GetPropertyAsync("href")).JsonValueAsync()).ToString();
                                downloadLinks.Add(text);
                            }
                            navigationOptions = new NavigationOptions {
                                WaitUntil = new[] { WaitUntilNavigation.DOMContentLoaded }
                            };
                            foreach (var link in downloadLinks)
                            {
                                await page.GoToAsync(link, navigationOptions);

                                ElementHandle fileLink;
                                try
                                {
                                    fileLink = await page.WaitForSelectorAsync("a.DownloadButton");
                                }
                                catch
                                {
                                    await page.ClickAsync("li span a.EntityLink");

                                    fileLink = await page.WaitForSelectorAsync("a.DownloadButton");
                                }
                                var href = (await(await fileLink.GetPropertyAsync("href")).JsonValueAsync()).ToString();

                                _progressResult?.Report(href);
                                result.Add(href);
                            }
                        }
                    }
            }
            catch (Exception exception)
            {
                Error(exception.ToString());
            }
            return(result);
        }