string extPath = @"C:\Users\Anon\Desktop\CapMonster-Cloud-—.crx"; // Расширение .crx CapMonsterCloud
string apiKey = "0aa48deeb390f25aaf616d15d3c61812"; // Апи ключ CapMonsterCloud
int attempCnt = 5; // Количество попыток разгадать каптчу от 0 до 9
// Устанавливаем расширение
instance.InstallCrxExtension(extPath);
// Активируем установленное расширение
_ = instance.GetExtensionById("pabjfbciaedomjjfelfafejkppknjleh").Activate();
// Проверка на автивацию расширения
_ = !instance.IsExtensionWorking ? throw new Exception("Не удается активировать расширение CapMonsterCloud !") : true;
// Объявим упрощенное обращение к активированному расширению
Tab ext = instance.ActiveExtension;
// Вводим Api ключ CapMonsterCloud в расширение
ext.FindElementByXPath("//input[@type='text']", 0).SetValue(apiKey.Trim(), "Full");
// Дождемся с прокликом, пока станет активной иконка сохранения Api ключа
while (true)
{
HtmlElement saveIcon = ext.FindElementByXPath("//span[@class='anticon']/*[@fill='#46B982']", 0);
if(!saveIcon.IsNull && !saveIcon.IsVoid)
{
saveIcon.Click();
break;
}
}
// Ожидаем прогрузку баланса
string balance = "";
var timer = System.Diagnostics.Stopwatch.StartNew();
while (true)
{
try
{
if (timer.ElapsedMilliseconds > 10000) throw new Exception("Не удалось соединиться с сервером CapMonsterCloud в течении 10 секунд !");
balance = ext.FindElementByXPath("//span[starts-with(@class, 'ant-typography')]", 3).InnerText;
if (balance.Contains("$")) break;
else if (balance.Contains("Неверный ключ")) throw new Exception("Неверный Api ключ CapMonsterCloud !");
}
finally { timer.Stop(); }
}
// Проверим на низкий баланс
double buy = double.Parse(new string(balance.Where(x => char.IsDigit(x) || x == '.').ToArray()), System.Globalization.CultureInfo.InvariantCulture);
if (buy < 0.05) throw new Exception($"Слишком маленький баланс CapMonsterCloud: {buy}$ !");
// Выбираем кол-во повторных решений, в случае ошибки распознавания
if (0 < attempCnt && attempCnt < 10)
{
ext.FindElementByXPath("//span[@class='ant-select-selection-item']", 0).Click();
ext.FindElementByXPath("//*[@class='ant-select-item-option-content']", attempCnt).Click();
}
// Убираем расширение с экрана
instance.ActiveTab.FindElementByXPath("/html", 0).Click();