// =D0=
=9E=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D1=8B=D0=B5 =D0=BF=D0=B0=D1=80=D0=B0=D0=
=BC=D0=B5=D1=82=D1=80=D1=8B
=20
// =D0=B2=D1=80=D0=B5=D0=BC=D1=8F =D0=BE=D0=B6=D0=B8=D0=B4=D0=B0=D0=BD=D0=
=B8=D1=8F
var waitTime =3D 1500;
// =D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=BE =D0=BF=D0=
=BE=D0=BF=D1=8B=D1=82=D0=BE=D0=BA =D1=80=D0=B0=D1=81=D0=BF=D0=BE=D0=B7=D0=
=BD=D0=B0=D1=82=D1=8C
var tryRecognize =3D 10;
// =D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=BE =D0=BF=D0=
=BE=D0=BF=D1=8B=D1=82=D0=BE=D0=BA =D0=B2=D1=8B=D0=B1=D0=B8=D1=80=D0=B0=D1=
=82=D1=8C =D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D1=8F=D1=8E=D1=89=D0=B8=D0=B5=D1=
=81=D1=8F =D0=BA=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BA=D0=B8
var dynamicImagesRecognizeAttempts =3D 20;
// =D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=BE =D0=BF=D0=
=BE=D0=BF=D1=8B=D1=82=D0=BE=D0=BA =D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=
=B8=D1=82=D1=8C =D1=8D=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD=D1=82
var tryLoadElement =3D 60;
// =D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B0=D1=82=D1=8C =D0=BF=D0=BE=D0=BB=D0=
=BD=D1=8B=D0=B9 =D0=BE=D1=82=D0=B2=D0=B5=D1=82
bool fullAnswer =3D false;
// =D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B=D0=B2=D0=B0=D1=82=D1=8C =D1=81=D0=
=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F =D0=BE =D0=BF=D1=80=D0=BE=D0=
=B3=D1=80=D0=B5=D1=81=D1=81=D0=B5 =D1=80=D0=B0=D1=81=D0=BF=D0=BE=D0=B7=D0=
=BD=D0=B0=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F
var needShowMessages =3D false;
// =D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D1=82=D1=8C =D0=BA=D0=BE=D1=
=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D0=BE=D1=81=D1=82=D1=8C =D1=80=D0=B0=D1=
=81=D0=BF=D0=BE=D0=B7=D0=BD=D0=B0=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE =D0=BE=D1=
=82=D0=B2=D0=B5=D1=82=D0=B0
var needToCheck =3D true;
=20
// =D0=92=D1=81=D0=BF=D0=BE=D0=BC=D0=BE=D0=B3=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=
=D0=BD=D1=8B=D0=B5 =D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D1=8B=
=D0=B5
=20
// =D0=B2=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0
Tab tab =3D instance.ActiveTab;
// =D0=BF=D0=BE=D0=B7=D0=B4=D1=80=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5=D0=BC, =D0=
=B2=D1=8B =D0=BD=D0=B5 =D1=80=D0=BE=D0=B1=D0=BE=D1=82
var success =3D false;
// =D0=B2=D1=80=D0=B5=D0=BC=D1=8F =D0=B2=D1=8B=D1=88=D0=BB=D0=BE
var timeout =3D false;
// =D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5 =D0=B4=D0=BB=D1=8F =D1=80=D0=
=B5=D0=BA=D0=B0=D0=BF=D1=87=D0=B8 2
string task =3D string.Empty;
// url =D0=B8=D0=B7=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F
var src =3D string.Empty;
// =D0=BA=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BA=D0=B0 =D0=B2 base64
var imageString =3D string.Empty;
// =D0=BE=D1=82=D0=B2=D0=B5=D1=82 =D0=BD=D0=B0 =D0=BA=D0=B0=D0=BF=D1=82=D1=
=87=D1=83
string answer =3D string.Empty;
// =D0=BA=D0=B0=D0=BF=D1=87=D0=B0 =D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=
=BB=D0=B0=D1=81=D1=8C
var changed =3D false;
// =D0=BF=D1=83=D1=81=D1=82=D0=BE=D0=B9 =D0=BE=D1=82=D0=B2=D0=B5=D1=82
bool answerIsEmpty =3D false;
// =D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D1=8F=D0=B5=D0=BC=D0=B0=D1=8F =D0=BA=D0=
=B0=D0=BF=D1=82=D1=87=D0=B0
bool dynamicCaptcha =3D false;
// =D0=B2=D0=B2=D0=BE=D0=B4 =D0=BA=D0=B0=D0=BF=D1=82=D1=87=D0=B8 =D0=BD=D0=
=B5=D1=81=D0=BA=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE =D1=80=D0=B0=D0=B7
bool notOneEnter =3D false;
var coincidenceReCaptcha2Index =3D -1;
=20
// =D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0 =D0=BF=D1=80=D0=BE=D1=
=85=D0=BE=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F =D0=B7=D0=B0=D1=89=D0=B8=D1=
=82=D1=8B
Action CheckOK=3D () =3D>=20
{
tab.WaitDownloading();
for (int k =3D 0; k < tryLoadElement; k++)
{
System.Threading.Thread.Sleep(waitTime); // =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=
=D0=B4=D1=91=D0=BC =D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8 =D1=8D=
=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2
var check =3D tab.FindElementByAttribute("div", "class", "recaptcha-checkbo=
x-checkmark", "regexp", 0);
=20
// =D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0 =D0=B8=D1=81=D1=87=D0=
=B5=D0=B7=D0=BD=D0=BE=D0=B2=D0=B5=D0=BD=D0=B8=D1=8F =D1=84=D0=BE=D1=80=D0=
=BC=D1=8B
var loadedForm =3D tab.FindElementByAttribute("div", "class", "primary-cont=
rols", "regexp", 0);
if (loadedForm.IsVoid)
{
success =3D true;
break;
}
else
{
int xPrimaryControlsDisplaysment =3D loadedForm.DisplacementInTabWindow.X;
int yPrimaryControlsDisplaysment =3D loadedForm.DisplacementInTabWindow.Y;
=20
if (xPrimaryControlsDisplaysment < 0 || yPrimaryControlsDisplaysment <=
; 0) // there are no visible recaptcha
{
success =3D true;
break;
}
if (check.IsVoid)
break;
}
=20
var more =3D tab.FindElementByAttribute("div", "class", "rc-imageselect-err=
or-select-more", "regexp", 0);
var wrong =3D tab.FindElementByAttribute("div", "class", "rc-imageselect-in=
correct-response", "regexp", 0);
if (!more.IsVoid && !wrong.IsVoid)
{
var isNotVisibleMore =3D more.GetAttribute("outerhtml").Replace(" ","").Con=
tains("display:none");
var isNotVisibleWrong =3D wrong.GetAttribute("outerhtml").Replace(" ","").C=
ontains("display:none");
if (isNotVisibleMore && isNotVisibleWrong)
{
if (!check.IsVoid)
{
if (check.OuterHtml.Contains("style=3D\"\""))=20
{
success =3D true;
break;
}
else break;
}
}
else break;
}
if (k =3D=3D (tryLoadElement - 1)) timeout =3D true;
=20
}
};
=20
// =D0=9F=D0=BE=D0=B4=D1=82=D0=B2=D0=B5=D1=80=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=
=D0=B5 =D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0
Action VerifyAnswer=3D () =3D>
{
project.SendInfoToLog("=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0 =D0=
=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B8 =D0=
=BF=D0=BE=D1=81=D0=BB=D0=B5 =D0=B2=D0=B2=D0=BE=D0=B4=D0=B0 =D0=B4=D0=B8=D0=
=BD=D0=B0=D0=BC=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B9 =D0=BA=D0=B0=D0=
=BF=D1=87=D0=B8", needShowMessages);
tab.WaitDownloading();
// =D0=BF=D0=BE=D0=B8=D1=81=D0=BA =D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8 "=D0=
=9F=D0=BE=D0=B4=D1=82=D0=B2=D0=B5=D1=80=D0=B4=D0=B8=D1=82=D1=8C"
HtmlElement apply =3D tab.FindElementById("recaptcha-verify-button");
if (!apply.IsVoid) apply.Click();
// =D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0 =D0=BF=D1=80=D0=B0=D0=
=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B8 =D0=BE=D1=82=D0=B2=D0=
=B5=D1=82=D0=B0
CheckOK();
};
=20
Action InputNotBotText=3D () =3D>
{
tab.WaitDownloading();
var inputField =3D tab.FindElementByAttribute("input:text", "id", "default-=
response", "text", 0);
if (!inputField.IsVoid)
{
inputField.SetValue("I am not robot", "Full");
VerifyAnswer();
}
};
=20
Action UpdateImage=3D () =3D>=20
{
project.SendInfoToLog("=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=
=B8=D0=B5 =D0=BA=D0=B0=D0=BF=D1=87=D0=B8", needShowMessages);
=20
// =D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82=D1=8C =D0=BA=D0=B0=D0=BF=D1=
=87=D1=83 =D0=B5=D1=81=D0=BB=D0=B8 =D0=BD=D0=B5=D0=BE=D0=B1=D1=85=D0=BE=D0=
=B4=D0=B8=D0=BC=D0=BE
if (!changed)=20
{
HtmlElement reload =3D tab.FindElementById("recaptcha-reload-button");
=20
if (!reload.IsVoid)
{
reload.Click();
InputNotBotText();
}
else timeout =3D true;
}
changed =3D false;
=20
for (int k =3D 0; k < tryLoadElement; k++)
{
System.Threading.Thread.Sleep(waitTime); // waiting for element load
// searching for the picture
var testImage =3D tab.FindElementByAttribute("img", "class", "rc-image-tile=
", "regexp", 0);
if (testImage.IsVoid) continue;
// get image url
var newSrc =3D testImage.GetAttribute("src");
// if the image has been changed, go out
if (newSrc !=3D src) break;
if (k =3D=3D (tryLoadElement - 1)) timeout =3D true;
}
};
=20
Action VisibleIndexReCaptchaDefinition=3D () =3D> {
tab.WaitDownloading();
var recaptchaElementsGroup =3D tab.FindElementsByAttribute("div", "class", =
"recaptcha-checkbox-checkmark", "regexp");
int length =3D recaptchaElementsGroup.Elements.Length;
if (length =3D=3D 1)
{
coincidenceReCaptcha2Index =3D 0;
return;
}
=20
for(int i =3D 0; i < length; i++)
{
var element =3D recaptchaElementsGroup.Elements[i];
if (!element.IsVoid)
{
int x =3D element.DisplacementInTabWindow.X;
int y =3D element.DisplacementInTabWindow.Y;
=20
var suspectVisibleElement =3D tab.GetElementFromPoint(x, y).DisplacementInT=
abWindow;
if (x =3D=3D suspectVisibleElement.X && y =3D=3D suspectVisibleElem=
ent.Y && element.Width !=3D 0 && element.Height !=3D 0 &=
;& x !=3D 0 && y !=3D 0)
{
coincidenceReCaptcha2Index =3D i;
break;
}
}
}
};
=20
// =D0=9F=D0=BE=D0=B8=D1=81=D0=BA =D1=80=D0=B5=D0=BA=D0=B0=D0=BF=D1=82=D1=
=87=D0=B8 2
Action SearchReCaptcha2=3D () =3D>=20
{
project.SendInfoToLog("=D0=9F=D0=BE=D0=B8=D1=81=D0=BA =D1=80=D0=B5=D0=BA=D0=
=B0=D0=BF=D1=87=D0=B8 2", needShowMessages);
tab.WaitDownloading();
for (int k =3D 0; k < tryLoadElement; k++)
{
VisibleIndexReCaptchaDefinition();
if (coincidenceReCaptcha2Index < 0) coincidenceReCaptcha2Index =3D 0;
=20
// =D0=BF=D0=BE=D0=B8=D1=81=D0=BA =D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8 "=D0=
=AF =D0=BD=D0=B5 =D1=80=D0=BE=D0=B1=D0=BE=D1=82"
HtmlElement notRobot =3D tab.FindElementByAttribute("div", "class", "recapt=
cha-checkbox-checkmark", "regexp", coincidenceReCaptcha2Index);
=20
// =D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0 =D1=81=D1=83=D1=89=D0=B5=D1=81=D1=
=82=D0=B2=D1=83=D0=B5=D1=82
if (!notRobot.IsVoid)
{
// =D0=BA=D0=BB=D0=B8=D0=BA =D0=BF=D0=BE =D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=
=B5
notRobot.Click();
System.Threading.Thread.Sleep(waitTime); // pause
=20
// =D0=B5=D1=81=D0=BB=D0=B8 =D0=B2=D0=B2=D0=BE=D0=B4 =D0=BA=D0=B0=D0=BF=D1=
=87=D0=B8 =D0=BD=D0=B5 =D1=82=D1=80=D0=B5=D0=B1=D1=83=D0=B5=D1=82=D1=81=D1=
=8F
var check =3D tab.FindElementByAttribute("div", "class", "recaptcha-checkbo=
x-checkmark", "regexp", coincidenceReCaptcha2Index);
if (!check.IsVoid)
{
if (check.OuterHtml.Contains("style=3D\"\""))
{
success =3D true;
timeout =3D false;
break;
}
}
}
=20
// =D1=84=D0=BE=D1=80=D0=BC=D0=B0 =D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82=D0=
=B2=D1=83=D0=B5=D1=82
var loadedForm =3D tab.FindElementByAttribute("div", "class", "primary-cont=
rols", "regexp", 0);
if (!loadedForm.IsVoid)
break;
=20
// =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=D0=B4=D0=B5=D0=BC =D0=B7=D0=B0=D0=B3=D1=
=80=D1=83=D0=B7=D0=BA=D0=B8 =D1=8D=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D0=
=BE=D0=B2
System.Threading.Thread.Sleep(waitTime);
if (k =3D=3D (tryLoadElement - 1)) timeout =3D true;
}
};
=20
// =D0=9F=D0=BE=D0=B8=D1=81=D0=BA =D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=
=8F =D1=80=D0=B5=D0=BA=D0=B0=D0=BF=D1=87=D0=B8 2
Action SearchTask=3D () =3D>=20
{
tab.WaitDownloading();
project.SendInfoToLog("=D0=9F=D0=BE=D0=B8=D1=81=D0=BA =D0=B7=D0=B0=D0=B4=D0=
=B0=D0=BD=D0=B8=D1=8F", needShowMessages);
dynamicCaptcha =3D false;
notOneEnter =3D false;
answer =3D String.Empty;
=20
for (int k =3D 0; k < tryLoadElement; k++)
{
HtmlElement taskHe =3D tab.FindElementByAttribute("div", "class", "rc-image=
select-desc-wrapper", "regexp", 0);
=20
if (!taskHe.IsVoid)
{
task =3D taskHe.GetAttribute("innertext"); // =D0=BF=D0=BE=D0=BB=D1=83=D1=
=87=D0=B0=D0=B5=D0=BC =D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5
string suspecttask =3D task.ToLower();
if (suspecttask.Contains("click verify once there are none left") || suspec=
ttask.Contains("when images will be end") ||
suspecttask.Contains("=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0 =D0=B8=D0=B7=D0=BE=D0=
=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F =D0=B7=D0=B0=D0=BA=D0=BE=D0=
=BD=D1=87=D0=B0=D1=82=D1=81=D1=8F") ||
suspecttask.Contains("=D0=BA=D0=BE=D0=BB=D0=B8 =D0=B7=D0=BE=D0=B1=D1=80=D0=
=B0=D0=B6=D0=B5=D0=BD=D1=8C =D1=83=D0=B6=D0=B5 =D0=BD=D0=B5 =D0=B7=D0=B0=D0=
=BB=D0=B8=D1=88=D0=B8=D1=82=D1=8C=D1=81=D1=8F, =D0=BD=D0=B0=D1=82=D0=B8=D1=
=81=D0=BD=D1=96=D1=82=D1=8C \"=D0=BF=D1=96=D0=B4=D1=82=D0=B2=D0=B5=D1=80=D0=
=B4=D0=B8=D1=82=D0=B8\"") ||
suspecttask.Contains("cliquez sur le bouton de validation") ||
suspecttask.Contains("klicken sie") ||
suspecttask.Contains("fai clic su verifica dopo averle selezionate tutte") =
||
suspecttask.Contains("gdy wybierzesz wszystkie, kliknij weryfikuj"))
dynamicCaptcha =3D true;
=20
if (suspecttask.Contains("if there are none, click skip") ||
suspecttask.Contains("if they do not exist, click \"skip\"") ||
suspecttask.Contains("wenn du keine siehst") ||
suspecttask.Contains("s'il n'y en a aucune, cliquez sur \"ignorer\"") ||
suspecttask.Contains("=D0=B5=D1=81=D0=BB=D0=B8 =D0=B8=D1=85 =D0=BD=D0=B5=D1=
=82, =D0=BD=D0=B0=D0=B6=D0=BC=D0=B8=D1=82=D0=B5 \"=D0=BF=D1=80=D0=BE=D0=BF=
=D1=83=D1=81=D1=82=D0=B8=D1=82=D1=8C\"") || suspecttask.Contains("=D1=8F=D0=
=BA=D1=89=D0=BE =D0=BD=D1=96=D1=87=D0=BE=D0=B3=D0=BE =D0=BD=D0=B5=D0=BC=D0=
=B0=D1=94") ||
suspecttask.Contains("ich nie ma, kliknij") ||
suspecttask.Contains("se non ne vedi, fai clic su salta"))
notOneEnter =3D true;
timeout =3D false;
break;
}
=20
System.Threading.Thread.Sleep(waitTime); // =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=
=D0=B4=D1=91=D0=BC =D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8 =D1=8D=
=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D0=B0
if (k =3D=3D (tryLoadElement - 1)) timeout =3D true;
}
};
=20
// =D0=9F=D0=BE=D0=B8=D1=81=D0=BA =D0=B8=D0=B7=D0=BE=D0=B1=D1=80=D0=B0=D0=
=B6=D0=B5=D0=BD=D0=B8=D1=8F
Action SearchImage=3D () =3D>=20
{
tab.WaitDownloading();
project.SendInfoToLog("=D0=9F=D0=BE=D0=B8=D1=81=D0=BA =D0=B8=D0=B7=D0=BE=D0=
=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F", needShowMessages);
=20
for (int k =3D 0; k < tryLoadElement; k++)
{
HtmlElement image =3D null;
if (dynamicCaptcha) image =3D tab.FindElementByAttribute("table", "class", =
"rc-imageselect-table", "regexp", 0);=20
else image =3D tab.FindElementByAttribute("img", "class", "rc-image-tile", =
"regexp", 0);
=20
// =D0=B5=D1=81=D0=BB=D0=B8 =D0=B5=D1=81=D1=82=D1=8C =D0=B8=D0=B7=D0=BE=D0=
=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F
if (!image.IsVoid)
{
// =D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B0=D0=B5=D0=BC url =D0=B8=D0=B7=D0=BE=
=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F
if (!dynamicCaptcha) src =3D image.GetAttribute("src");
imageString =3D image.DrawToBitmap(!dynamicCaptcha);
timeout =3D false;
break;
}
=20
System.Threading.Thread.Sleep(waitTime); // =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=
=D0=B4=D0=B5=D0=BC =D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8 =D1=8D=
=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2
if (k =3D=3D (tryLoadElement - 1)) timeout =3D true;
}
};
=20
// =D0=A0=D0=B0=D1=81=D0=BF=D0=BE=D0=B7=D0=BD=D0=B0=D0=B2=D0=B0=D0=BD=D0=B8=
=D0=B5
Action Recognize=3D () =3D> {
project.SendInfoToLog("=D0=A0=D0=B0=D1=81=D0=BF=D0=BE=D0=B7=D0=BD=D0=B0=D0=
=B2=D0=B0=D0=BD=D0=B8=D0=B5", needShowMessages);
var answerString =3D ZennoPoster.CaptchaRecognition("CapMonster2.dll", imag=
eString, String.Format("Task=3D{0}&FullAnswer=3D{1}&CapMonsterModul=
e=3DZennoLab.ReCaptcha2", task, fullAnswer));
var split =3D answerString.Split(new [] { "-|-" }, StringSplitOptions.Remov=
eEmptyEntries);
answer =3D split[0];
};
=20
// =D0=92=D0=B2=D0=BE=D0=B4=D0=B8=D0=BC =D0=BE=D1=82=D0=B2=D0=B5=D1=82
Action InputAnswer=3D () =3D>=20
{
if (!String.IsNullOrEmpty(answer) && answer !=3D "sorry")
{
project.SendInfoToLog("=D0=92=D0=B2=D0=BE=D0=B4 =D0=BE=D1=82=D0=B2=
=D0=B5=D1=82=D0=B0 =D0=B8 =D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0 =
=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B8", =
needShowMessages);
int count =3D 0;
=20
string[] answers;
if (answer.Contains(","))=20
answers =3D answer.Split(new [] { "," }, StringSplitOptions.RemoveEmptyEntr=
ies);
else=20
{
answers =3D new string[answer.Length];
for (int i =3D 0; i < answer.Length; i++)
answers[i] =3D answer[i].ToString();
}
=20
foreach (string c in answers)
{
if (fullAnswer)
if (count =3D=3D 2) break;
=20
int index =3D Convert.ToInt32(c) - 1;
HtmlElement he =3D tab.FindElementByAttribute("img", "class", "rc-image-til=
e", "regexp", index);
=20
if (!he.IsVoid)=20
{
he.Click(); //=D0=BA=D0=BB=D0=B8=D0=BA=D0=B0=D0=B5=D0=BC =D0=BD=D0=B0 =D0=
=BA=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BA=D1=83
System.Threading.Thread.Sleep(500);// =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=D0=B4=
=D0=B5=D0=BC =D0=BD=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE
}
if (fullAnswer) count++;
}
=20
// =D0=B8=D1=89=D0=B5=D0=BC =D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D1=83 "=D0=9F=D0=
=BE=D0=B4=D1=82=D0=B2=D0=B5=D1=80=D0=B4=D0=B8=D1=82=D1=8C"
HtmlElement apply =3D tab.FindElementById("recaptcha-verify-button");
if (!apply.IsVoid) apply.Click();
=20
// =D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8=D0=BC =D0=BF=D1=80=D0=B0=D0=
=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D1=8C =D0=BE=D1=82=D0=B2=D0=
=B5=D1=82=D0=B0
CheckOK();
if (success) return;
=20
// =D0=B2=D0=B2=D0=BE=D0=B4=D0=B8=D0=BC =D0=BE=D1=81=D1=82=D0=B0=D0=B2=D1=
=88=D1=83=D1=8E=D1=81=D1=8F =D1=87=D0=B0=D1=81=D1=82=D1=8C =D0=BE=D1=82=D0=
=B2=D0=B5=D1=82=D0=B0
if (fullAnswer)
{
for (int i =3D count; i < answer.Length; i++)
{
// =D1=81=D0=BD=D0=BE=D0=B2=D0=B0 =D0=B8=D1=89=D0=B5=D0=BC =D0=BA=D0=B0=D1=
=80=D1=82=D0=B8=D0=BD=D0=BA=D1=83
var testImage =3D tab.FindElementByAttribute("img", "class", "rc-image-tile=
", "regexp", 0);
if (testImage.IsVoid) break;
// =D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B0=D0=B5=D0=BC url =D0=B8=D0=B7=D0=BE=
=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F
var newSrc =3D testImage.GetAttribute("src");
// =D0=B5=D1=81=D0=BB=D0=B8 =D0=B8=D0=B7=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=
=B5=D0=BD=D0=B8=D0=B5 =D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=D0=BE=D1=
=81=D1=8C, =D1=82=D0=BE =D0=B2=D1=8B=D1=85=D0=BE=D0=B4=D0=B8=D0=BC
if (newSrc !=3D src) break;
else changed =3D true;
// =D0=B8=D0=BD=D0=B0=D1=87=D0=B5 =D0=BF=D1=80=D0=BE=D0=B4=D0=BE=D0=BB=D0=
=B6=D0=B0=D0=B5=D0=BC =D0=B2=D0=B2=D0=BE=D0=B4
int index =3D Convert.ToInt32(answer[i].ToString()) - 1;
var he =3D tab.FindElementByAttribute("img", "class", "rc-image-tile", "reg=
exp", index);
if (!he.IsVoid)=20
{
he.Click();
System.Threading.Thread.Sleep(500); // =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=D0=B4=
=D0=B5=D0=BC =D0=BD=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE
if (!apply.IsVoid) apply.Click();
CheckOK();
if (success) return;
}
}
}
}
else answerIsEmpty =3D true;
};
=20
//=D0=92=D0=B2=D0=BE=D0=B4=D0=B8=D0=BC =D0=BE=D1=82=D0=B2=D0=B5=D1=82
Action InputDynamicAnswer=3D () =3D>=20
{
project.SendInfoToLog("=D0=92=D0=B2=D0=BE=D0=B4 =D0=BE=D1=82=D0=B2=D0=B5=D1=
=82=D0=B0 =D0=B4=D0=B8=D0=BD=D0=B0=D0=BC=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=
=BE=D0=B9 =D0=BA=D0=B0=D0=BF=D1=82=D1=87=D0=B8", needShowMessages);
=20
string[] answers;
if (answer.Contains(","))=20
answers =3D answer.Split(new [] { "," }, StringSplitOptions.RemoveEmptyEntr=
ies);
else=20
{
answers =3D new string[answer.Length];
for (int i =3D 0; i < answer.Length; i++)
answers[i] =3D answer[i].ToString();
}
=20
foreach (string number in answers)
{
int index =3D Convert.ToInt32(number) - 1;
HtmlElement he =3D tab.FindElementByAttribute("img", "class", "rc-image-til=
e", "regexp", index);
if (he.IsVoid) he =3D tab.FindElementByAttribute("div", "class", "rc-image-=
tile-wrapper", "regexp", index);
if (!he.IsVoid)=20
{
//=D0=BA=D0=BB=D0=B8=D0=BA=D0=B0=D0=B5=D0=BC =D0=BD=D0=B0 =D0=BA=D0=B0=D1=
=80=D1=82=D0=B8=D0=BD=D0=BA=D1=83
he.Click();
// =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=D0=B4=D1=91=D0=BC =D0=BD=D0=B5=D0=BC=D0=
=BD=D0=BE=D0=B3=D0=BE
System.Threading.Thread.Sleep(500);
}
}
=20
// =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=D0=B4=D1=91=D0=BC =D0=B5=D1=89=D0=B5 =D0=
=BD=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE
System.Threading.Thread.Sleep(waitTime*2);
};
=20
//=D0=92=D0=B2=D0=BE=D0=B4=D0=B8=D0=BC =D0=BE=D1=82=D0=B2=D0=B5=D1=82
Action InputDynamicAnswer2=3D () =3D>=20
{
project.SendInfoToLog("=D0=92=D0=B2=D0=BE=D0=B4 =D0=BE=D1=82=D0=B2=D0=B5=D1=
=82=D0=B0 =D0=B4=D0=B8=D0=BD=D0=B0=D0=BC=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=
=BE=D0=B9 =D0=BA=D0=B0=D0=BF=D1=82=D1=87=D0=B8", needShowMessages);
=20
string[] answers =3D answer.Split(new [] { "," }, StringSplitOptions.Remove=
EmptyEntries);
foreach (string number in answers)
{
int index =3D Convert.ToInt32(number) - 1;
HtmlElement he =3D tab.FindElementByAttribute("img", "class", "rc-image-til=
e", "regexp", index);
if (!he.IsVoid)=20
{
//=D0=BA=D0=BB=D0=B8=D0=BA=D0=B0=D0=B5=D0=BC =D0=BD=D0=B0 =D0=BA=D0=B0=D1=
=80=D1=82=D0=B8=D0=BD=D0=BA=D1=83
he.Click();
// =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=D0=B4=D1=91=D0=BC =D0=BD=D0=B5=D0=BC=D0=
=BD=D0=BE=D0=B3=D0=BE
System.Threading.Thread.Sleep(500);
}
}
=20
// =D0=BF=D0=BE=D0=B4=D0=BE=D0=B6=D0=B4=D1=91=D0=BC =D0=B5=D1=89=D0=B5 =D0=
=BD=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE
System.Threading.Thread.Sleep(waitTime*2);
};
=20
SearchReCaptcha2();
if (success)
return "ok";
=20
if (timeout) throw new Exception("=D0=92=D1=8B=D1=88=D0=BB=D0=BE =D0=B2=D1=
=80=D0=B5=D0=BC=D1=8F =D0=BE=D0=B6=D0=B8=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F =D0=
=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8 =D1=8D=D0=BB=D0=B5=D0=BC=D0=
=B5=D0=BD=D1=82=D0=B0");
=20
for (int i =3D 0; i < tryRecognize; i++)
{
project.SendInfoToLog(String.Format("=D0=9F=D0=BE=D0=BF=D1=8B=D1=82=D0=BA=
=D0=B0 =E2=84=96:{0}", i+1), needShowMessages);
=20
InputNotBotText();
SearchTask();
if (timeout) break;
=20
// =D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=
=D0=B0=D1=8F =D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0
CheckOK();
if (success) return "ok";
=20
int count =3D 0;
=20
// =D0=B5=D1=81=D0=BB=D0=B8 =D0=BA=D0=B0=D0=BF=D1=87=D0=B0 =D0=B8=D0=B7=D0=
=BC=D0=B5=D0=BD=D1=8F=D0=B5=D0=BC=D0=B0=D1=8F
if (dynamicCaptcha)
{
while (count < dynamicImagesRecognizeAttempts)
{
if (count > 0)
System.Threading.Thread.Sleep(waitTime * 3); // =D0=BF=D0=BE=D0=B4=D0=BE=D0=
=B6=D0=B4=D1=91=D0=BC =D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8 =D0=
=B8=D1=81=D1=87=D0=B5=D0=B7=D0=B0=D1=8E=D1=89=D0=B8=D1=85 =D0=B8=D0=B7=D0=
=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9
=20
SearchImage();
if (timeout) break;
Recognize();
if (!String.IsNullOrEmpty(answer) && answer !=3D "sorry") InputDyna=
micAnswer();
else=20
{
VerifyAnswer();
CheckOK();
if (!success) answerIsEmpty =3D true;
break;
}
count++;
}
}
else
{
if (notOneEnter)
{
while (notOneEnter && !dynamicCaptcha && count < dynamic=
ImagesRecognizeAttempts)
{
SearchImage();
if (timeout) break;
Recognize();
if (!String.IsNullOrEmpty(answer) && answer !=3D "sorry") InputDyna=
micAnswer2();
VerifyAnswer();
timeout =3D false;
if (success) break;
SearchTask();
if (timeout) break;
count++;
}
}
else
{
SearchImage();
if (timeout) break;
Recognize();
InputAnswer();
}
}
if (timeout) break;
=20
if (!needToCheck) return "ok";
=20
if (answerIsEmpty)
{
answerIsEmpty =3D false;
UpdateImage();
continue;
}
=20
if (success) return "ok";
=20
if (i !=3D (tryRecognize - 1)) UpdateImage();
if (timeout) break;
}
=20
if (timeout) throw new Exception("=D0=92=D1=8B=D1=88=D0=BB=D0=BE =D0=B2=D1=
=80=D0=B5=D0=BC=D1=8F =D0=BE=D0=B6=D0=B8=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F =D0=
=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8 =D1=8D=D0=BB=D0=B5=D0=BC=D0=
=B5=D0=BD=D1=82=D0=B0");
else throw new Exception("=D0=9D=D0=B5 =D1=80=D0=B0=D1=81=D0=BF=D0=BE=D0=B7=
=D0=BD=D0=B0=D0=BD=D0=BE. =D0=97=D0=B0=D0=BA=D0=BE=D0=BD=D1=87=D0=B8=D0=BB=
=D0=B8=D1=81=D1=8C =D0=BF=D0=BE=D0=BF=D1=8B=D1=82=D0=BA=D0=B8 =D1=80=D0=B0=
=D1=81=D0=BF=D0=BE=D0=B7=D0=BD=D0=B0=D1=82=D1=8C, =D0=BF=D1=80=D0=B5=D0=B6=
=D0=B4=D0=B5 =D1=87=D0=B5=D0=BC =D0=BE=D1=82=D0=B2=D0=B5=D1=82 =D0=B1=D1=8B=
=D0=BB =D0=B7=D0=B0=D1=81=D1=87=D0=B8=D1=82=D0=B0=D0=BD");