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); }
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); }
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); }
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; } }
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}"); } } }
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); }
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()); } }
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) { } }
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)); }
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); }
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); }
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) { } }
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); }
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); }
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) { } }
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); }