Использование Selenium и C# для автоматизации вызовов CAPTCHA
Использование Selenium и C# для автоматизации вызовов CAPTCHA
Nikolai Smirnov
Software Development Lead
11-Jul-2024
Введение
CAPTCHA часто становится серьезным препятствием при веб-скрапинге и задачах автоматизации. Однако с правильным подходом, используя Selenium и C#, можно эффективно управлять и решать вызовы CAPTCHA. В этом руководстве мы рассмотрим программное управление CAPTCHA на веб-сайтах и продемонстрируем веб-скрапинг на примере сайта.
Понимание CAPTCHA
CAPTCHA, что означает полностью автоматизированный общедоступный тест Тьюринга для различения компьютеров и людей, действует как цифровой страж у входа на веб-сайты. Он предлагает пользователям задачи, такие как разгадывание искажённого текста, определение объектов или прослушивание аудио в условиях шума. Эти тесты играют ключевую роль в защите онлайн-сервисов от автоматизированных ботов, обеспечивая взаимодействие только с настоящими людьми.
Для более подробного изучения CAPTCHA и его разновидностей вы можете ознакомиться с этим исчерпывающим руководством о типах CAPTCHA и их эффективности.
Сталкиваетесь с проблемами при решении раздражающей CAPTCHA? Откройте для себя безшовное автоматическое решение CAPTCHA с помощью технологии автоматического разблокирования веб-сайтов CapSolver на основе искусственного интеллекта!
Получите ваш Бонусный код для лучших решений CAPTCHA; CapSolver: WEBS. Пройдите код, и после каждого пополнения счета вы получите дополнительные 5% бонуса, безлимитно.
Предварительные требования
Перед тем как начать использовать Selenium и C# для решения CAPTCHA и веб-скрапинга, убедитесь, что у вас есть следующее:
Selenium WebDriver для C# (Установка через NuGet Package Manager: Install-Package Selenium.WebDriver)
WebDriver для выбранного вами браузера (например, ChromeDriver)
Настройка Selenium в Visual Studio
Для начала создайте новый проект C# в Visual Studio и добавьте Selenium WebDriver с помощью NuGet Package Manager:
powershellCopy
Install-Package Selenium.WebDriver
Дополнительно установите WebDriver для вашего предпочтительного браузера. Вы можете найти специфические драйверы, такие как ChromeDriver и FirefoxDriver для скачивания.
Пример простого веб-скрапинга
Давайте продемонстрируем, как извлекать данные с примерного веб-сайта, используя Selenium в C#:
csharpCopy
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
namespace WebScrapingExample
{
class Program
{
static void Main(string[] args)
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.scrapethissite.com/pages/simple/");
var countries = driver.FindElements(By.CssSelector(".country"));
List<string> countryData = new List<string>();
foreach (var country in countries)
{
var name = country.FindElement(By.CssSelector(".country-name")).Text;
var capital = country.FindElement(By.CssSelector(".country-capital")).Text;
var population = country.FindElement(By.CssSelector(".country-population")).Text;
var area = country.FindElement(By.CssSelector(".country-area")).Text;
countryData.Add($"Name: {name}, Capital: {capital}, Population: {population}, Area: {area}");
}
foreach (var data in countryData)
{
Console.WriteLine(data);
}
driver.Quit();
}
}
}
Работа с вызовами CAPTCHA
Работа с CAPTCHA включает интеграцию сервиса решения CAPTCHA, такого как CapSolver. Вот базовый пример того, как это можно сделать:
Настройка интеграции с API CapSolver
Для программного решения CAPTCHA вам необходимо зарегистрироваться на веб-сайте CapSolver и получить API-ключ.
Пошаговая интеграция с CapSolver
Создайте аккаунт: Зарегистрируйтесь на веб-сайте CapSolver и войдите в свой аккаунт.
Сгенерируйте API-ключ: Перейдите в раздел API в вашем личном кабинете CapSolver и сгенерируйте API-ключ.
Реализация решения CAPTCHA с CapSolver
Ниже приведен пример реализации с использованием CapSolver для решения вызова reCAPTCHA v2:
csharpCopy
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
namespace SolveCaptchaExample
{
class Program
{
static async Task Main(string[] args)
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.google.com/recaptcha/api2/demo");
var siteKey = driver.FindElement(By.CssSelector("div.g-recaptcha")).GetAttribute("data-sitekey");
var pageUrl = driver.Url;
var captchaResponse = await SolveCaptcha(siteKey, pageUrl, "ваш apiKey");
await Console.Out.WriteLineAsync(captchaResponse);
IWebElement recaptchaResponseElement = driver.FindElement(By.Id("g-recaptcha-response"));
((IJavaScriptExecutor)driver).ExecuteScript($"arguments[0].value = '{captchaResponse}';", recaptchaResponseElement);
IWebElement submitButton = driver.FindElement(By.CssSelector("#recaptcha-demo-submit"));
submitButton.Click();
}
static async Task<string> SolveCaptcha(string siteKey, string pageUrl, string apikey)
{
var client = new HttpClient();
var content = new StringContent($"{{\"clientKey\": \"{apikey}\", \"task\": {{\"type\": \"RecaptchaV2TaskProxyless\", \"websiteURL\": \"{pageUrl}\", \"websiteKey\": \"{siteKey}\"}}}}", System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.capsolver.com/createTask", content);
var jsonResponse = await response.Content.ReadAsStringAsync();
var taskId = JObject.Parse(jsonResponse)["taskId"].ToString();
string captchaSolution = "";
while (captchaSolution == "" || captchaSolution.Contains("processing"))
{
await Task.Delay(5000);
var content2 = new StringContent($"{{\"clientKey\": \"{apikey}\", \"taskId\": \"{taskId}\"}}", System.Text.Encoding.UTF8, "application/json");
var response2 = await client.PostAsync("https://api.capsolver.com/getTaskResult", content2);
var jsonResponse3 = await response2.Content.ReadAsStringAsync();
captchaSolution = JObject.Parse(jsonResponse3)["solution"]["gRecaptchaResponse"].ToString();
}
return captchaSolution;
}
}
}
Заключение
В этом руковод стве мы рассмотрели основы использования Selenium с C# для работы с CAPTCHA и продемонстрировали веб-скрапинг на практическом примере. С использованием этих техник и инструментов, таких как CapSolver, вы можете эффективно автоматизировать взаимодействие с защищенными CAPTCHA веб-сайтами и без проблем извлекать данные.
Дисклеймер о соблюдении: Информация, представленная в этом блоге, предназначена только для справочных целей. CapSolver обязуется соблюдать все применимые законы и нормы. Использование сети CapSolver для незаконной, мошеннической или злоупотребляющей деятельности строго запрещено и будет расследовано. Наши решения для распознавания капчи улучшают пользовательский опыт, обеспечивая 100% соблюдение при помощи в решении трудностей с капчей в процессе сбора общедоступных данных. Мы призываем к ответственному использованию наших услуг. Для получения дополнительной информации, пожалуйста, посетите наши Условия обслуживания и Политику конфиденциальности.