Кибор » Кибор - Интегрированная среда разработки ботов » Готовые скрипты » Разгадывание Капчи

Страниц (4): [1] 2 3 4 »
 

1. Kibor - 05 Октября, 2014 - 11:44:02 - перейти к сообщению
Правильное подключение к сервису - Пример использования парсера для работы с сервисом anti-captcha.com для решения капчи

Релизация блока решения текстовой капчи в визуальном редакторе(для просмотра ссылки Вам необходимо авторизоваться) Релизация блока решения клик капчи (RECAPCHA и тд) в визуальном редакторе(для просмотра ссылки Вам необходимо авторизоваться)
Ниже устаревший скрипт.
Так как периодически спрашивают как в Кибор разгадывать капчу, а сами писать скрипт не хотят) написал скрипт для подключения и работой с сервисом anti-captcha.com
Этот сервис для разгадывания капч. Работает таким образом..

Вы загружаете туда свой рисунок капчи со своего компьютера. Вам дают id по которому Вы можете забрать результат когда он будет готов. Там ее разгадывают и когда ответ готов Вы получаете текст капчи.

Этот скрипт предназначен для загрузки файла с капчей со своего компьютера к ним ним сервер, получение ID и просмотра ссылки с этим ID до тех пор пока капча не будет решена или не выйдет время или не будет ошибки. В этом случае функция вернет 0 и вместо капчи будет описание ошибки.

Ссылки по теме
Работа в интернете.
Получение скриншотов, сохранение скриншотов и изображений в памяти программмы

При решение каптч предлагающих выбрать кикие то изображения по вопросу использовать этот скрипт Скрипт разгадывания капчи reCAPTCHA ( выбрать изображения чего либо )

Скрипт:



 Цитата:
//Это вверху скрипта
char s[10000], p[1000], file[10000];
int size_file=0, sizf, t_content_length, ot;
string otvet;//сюда капча пишется


/*
//так делать скрин капчи и сохранить на комп как JPG
int Image_0[500][500];
screen(#Image_0[0][0], 2, 2, 100, 100, -1);
saveimage (JPG, #Image_0[0][0], "C:\12345.jpg");
*/

//Это использование
/*
capcha(
Указатель на string в который запишется отгаданная капча
путь к файлу .jpg с капчей на компьютере
свой ключ в системе antigate.com
время в сек. между запросами готового результата
время в сек сколько ждать результата
)
Возвращает 1 если разгадана. 0 если не разгадана
*/
ot=capcha(#otvet, "C:\12345.jpg", "tyt_vvesti_svoi_kluch_v_sisteme_antigate", 5, 120);
//если ot равно 1 - значит разгадана. капча в otvet
//если 0 - значит ошибка. Код и описание ошибки в otvet
messagebox (otvet);//выводит или капчу или ошибку



//Это вниз скрипта
function capcha(string #otvet, string pyt, string k, int t, int wtt)
{
if (capchasave(#otvet, k, pyt)==1)
{
t=t*1000;
wtt=wtt*1000;
int wtt1=gettime();
ss: if (opensocket ("anti-captcha.com", 80)==1)//Если открыли сокет
{
//otvet="122976708";

strcpy(#s[0], "GET http:/"+"/anti-captcha.com/res.php?key="+k+"&action=get&id="+otvet+" HTTP/1.0");//Формируем GET запрос
sizf=size(#s[0]);//Узнаем номер в массиве конца строки с GET запросом
//Записываем \r\n\r\n - конец заголовка
s[sizf]=formatic(13);s[sizf+1]=formatic(10);s[sizf+2]=formatic(13);s[sizf+3]=formatic(10);s[sizf+4]=formatic(0);
//messagebox (format(#s[0]));//Воспроизводим

if (sendhtml(#s[0], sizf+4)>0)//Если отправили запрос
{
for (int ns=0; ns<999; ns++)p[ns]=formatic(0);
recvhtml(#p[0], 999);//читаем ответ
//messagebox (format(#p[0]));//Воспроизводим
if (format(#p[0])=="")
{
if (gettime()-wtt1>wtt)
{
otvet="ERROR. Время ожидания прошло. Ваш ID "+formatic(13)+formatic(10)+otvet;
closesocket ();//Закрываем
return 0;
}
pause(t);
closesocket ();//Закрываем
goto ss;
}
/////////////

//if (p[9]=='2' && p[10]=='0' && && p[11]=='0' && && p[13]=='O' && && p[14]=='K')//1
//{
for (int n=0; n<990; n++)//2
{
if (p[n]==formatic(13)&&p[n+1]==formatic(10)&&p[n+2]==formatic(13)&&p[n+3]==formatic(10))//3
{
for (int n1=n+4; n1<990; n1++)//4
{
if (p[n1]=='O'&&p[n1+1]=='K'&&p[n1+2]=='|')//5
{
otvet="";
for (int n2=n1+3; n2<990; n2++)//6
{
if (p[n2]==formatic(13))//7
{
closesocket ();//Закрываем
return 1;
}//7
otvet=otvet+p[n2];
}//6
//otvet="Ошибка нахождения спец символов после заголовка. Ваша капча "+formatic(13)+formatic(10)+otvet;
closesocket ();//Закрываем
return 1;
}//5

if (p[n1]=='C'&&p[n1+1]=='A'&&p[n1+2]=='P'&&p[n1+3]=='C'&&p[n1+4]=='H'&&p[n1+5]=='A'&&p[n1+6]=='_'&&p[n1+7]=='N'&&p[n1+8]=='O'
&&p[n1+9]=='T'&&p[n1+10]=='_'&&p[n1+11]=='R'&&p[n1+12]=='E'&&p[n1+13]=='A'&&p[n1+14]=='D'&&p[n1+15]=='Y')
{
if (gettime()-wtt1>wtt)
{
otvet="ERROR. Время ожидания прошло. Ваш ID "+formatic(13)+formatic(10)+otvet;
closesocket ();//Закрываем
return 0;
}
pause(t);
closesocket ();//Закрываем
goto ss;
}

}//4

for (n1=n+4; n1<990; n1++)//8
{
if (p[n1]=='E'&&p[n1+1]=='R'&&p[n1+2]=='R'&&p[n1+3]=='O'&&p[n1+4]=='R')//9
{
otvet="";
for (n2=n1; n2<990; n2++)//10
{
if (p[n2]==formatic(13))//11
{
closesocket ();//Закрываем
return 0;
}//11
otvet=otvet+p[n2];
}//10
}//9
}//8
return 0;
}//3
}//2
closesocket ();//Закрываем
otvet="ERROR. Ошибка нахождения спец символов после заголовка Ваш ID "+formatic(13)+formatic(10)+otvet;
return 0;
//}//1
//closesocket ();//Закрываем
//otvet="ERROR. Ошибка подключения к сервесу. Не вернул OK 200 Ваш ID "+formatic(13)+formatic(10)+otvet;
//return 0;
}
if (gettime()-wtt1>wtt)
{
closesocket ();//Закрываем
otvet="ERROR. Время ожидания прошло. Не удалось отправить запрос Ваш ID "+formatic(13)+formatic(10)+otvet;
return 0;
}
pause(t);
closesocket ();//Закрываем
goto ss;
}

if (gettime()-wtt1>wtt)
{
otvet="ERROR. Время ожидания прошло. Не удалось открыть сокет. Ваш ID "+formatic(13)+formatic(10)+otvet;
return 0;
}
pause(t);
goto ss;
}
else return 0;
}

function capchasave(string #otvet, string id, string pyt)
{
otvet="";

if (opensocket ("anti-captcha.com", 80)==1)//Если открыли сокет
{
read_file(pyt);

strcpy(#s[0], "POST /in.php HTTP/1.1");//Формируем POST запрос
savegetpost(#s[0], 1);

strcpy(#s[0], format(#s[0])+"Host: antigate.com");//Формируем POST запрос
savegetpost(#s[0], 1);



strcpy(#s[0],format(#s[0])+"Content-Type: multipart/form-data;");//Формируем POST запрос
savegetpost(#s[0], 0);
strcpy(#s[0], format(#s[0])+" boundary=kibor-post");//Формируем POST запрос
savegetpost(#s[0], 1);

strcpy(#s[0], format(#s[0])+"Content-Length: 0000000000" );//Формируем POST запрос
savegetpost(#s[0], 2);
t_content_length=sizf;

strcpy(#s[0], format(#s[0])+"--kibor-post" );//Формируем POST запрос
savegetpost(#s[0], 1);

strcpy(#s[0], format(#s[0])+"Content-Disposition: form-data; name="+formatic(34)+"method"+formatic(34));//Формируем POST запрос
savegetpost(#s[0], 2);

strcpy(#s[0], format(#s[0])+"post" );//Формируем POST запрос
savegetpost(#s[0], 1);

strcpy(#s[0], format(#s[0])+"--kibor-post" );//Формируем POST запрос
savegetpost(#s[0], 1);

strcpy(#s[0], format(#s[0])+"Content-Disposition: form-data; name="+formatic(34)+"key"+formatic(34));//Формируем POST запрос
savegetpost(#s[0], 2);

strcpy(#s[0],format(#s[0])+id);//Формируем POST запрос
savegetpost(#s[0], 1);

strcpy(#s[0], format(#s[0])+"--kibor-post" );//Формируем POST запрос
savegetpost(#s[0], 1);

strcpy(#s[0], format(#s[0])+"Content-Disposition: form-data; name=");//Формируем POST запрос
strcpy(#s[0], format(#s[0])+formatic(34)+"file"+formatic(34)+"; filename="+formatic(34)+"12345.jpg"+formatic(34) );//Формируем POST запрос
savegetpost(#s[0], 1);

strcpy(#s[0], format(#s[0])+"Content-Type: image/jpeg");//Формируем POST запрос
savegetpost(#s[0], 2);

sizf=size(#s[0]);//Узнаем номер в массиве конца строки с POST запросом
for (int n=0; n < size_file; n++)s[sizf+n]=file[n];

sizf=sizf+size_file;
s[sizf]=formatic(13);s[sizf+1]=formatic(10);s[sizf+2]=formatic(0);
sizf=sizf+2;

s[sizf]='-'; sizf++; s[sizf]='-'; sizf++; s[sizf]='k'; sizf++; s[sizf]='i'; sizf++; s[sizf]='b'; sizf++;
s[sizf]='o'; sizf++; s[sizf]='r'; sizf++; s[sizf]='-'; sizf++; s[sizf]='p'; sizf++; s[sizf]='o'; sizf++;
s[sizf]='s'; sizf++; s[sizf]='t'; sizf++; s[sizf]='-'; sizf++; s[sizf]='-'; sizf++;
s[sizf]=formatic(13);s[sizf+1]=formatic(10);s[sizf+2]=formatic(0);
sizf=sizf+2;

save_content_length();

//messagebox (format(#s[0]));//Воспроизводим что отправляем
/*

if (fopen ("C:\543215.txt", "wb")!=0)
{
//записать в файл что отправляем
fwriteb(#s[0], sizf);//Запись по указателю на масив char
fclose();
}
*/
if (sendhtml(#s[0], sizf)>0)//Если отправили запрос
{
recvhtml(#p[0], 999);//читаем ответ
//messagebox (format(#p[0]));//Воспроизводим ответ

//if (p[9]=='2' && p[10]=='0' && && p[11]=='0' && && p[13]=='O' && && p[14]=='K')
//{
for (n=0; n<990; n++)
{
if (p[n]==formatic(13)&&p[n+1]==formatic(10)&&p[n+2]==formatic(13)&&p[n+3]==formatic(10))
{
for (int n1=n+4; n1<990; n1++)
{
if (p[n1]=='O'&&p[n1+1]=='K'&&p[n1+2]=='|')
{
for (int n2=n1+3; n2<990; n2++)
{
if (p[n2]==formatic(13))
{
closesocket ();//Закрываем
return 1;
}
otvet=otvet+p[n2];
}
closesocket ();//Закрываем
otvet="ERROR. Ошибка нахождения спец символов после заголовка. Ваш ID "+formatic(13)+formatic(10)+otvet;
return 0;
}
}

for (n1=n+4; n1<990; n1++)
{
if (p[n1]=='E'&&p[n1+1]=='R'&&p[n1+2]=='R'&&p[n1+3]=='O'&&p[n1+4]=='R')
{
for (n2=n1; n2<990; n2++)
{
if (p[n2]==formatic(13))
{
closesocket ();//Закрываем
return 0;
}
otvet=otvet+p[n2];
}
}
}
closesocket ();//Закрываем
otvet="ERROR. Ошибка нахождения спец символов после ошибки. Ошибка "+formatic(13)+formatic(10)+otvet;
return 0;
}
}
closesocket ();//Закрываем
otvet="ERROR. Ошибка нахождения спец символов после заголовка.";
return 0;
//}
//closesocket ();//Закрываем
//otvet="ERROR. Ошибка подключения к сервесу. Не вернул OK 200";
//return 0;


}
closesocket ();//Закрываем
otvet="ERROR. Не удалось отправить запрос";
return 0;
}
otvet="ERROR. Не удалось открыть сокет.";
return 0;
}


function savegetpost(char #s, int p)
{

sizf=size(#s[0]);//Узнаем номер в массиве конца строки с POST запросом
//Записываем \r\n или \r\n\r\n
for (int n=0; n < p; n++){s[sizf]=formatic(13);s[sizf+1]=formatic(10);sizf=sizf+2;}
s[sizf]=formatic(0);
}

function read_file(string pyt)
{
if (fopen (pyt, "rb")!=0)
{
size_file=freadb(#file[0], 9999);
fclose();
}
}

function save_content_length()
{
char c_cont_l[12];
strcpy(#c_cont_l[0], format(sizf-t_content_length));
int siz_cont_l=size(#c_cont_l[0]);
int r_cont_l=10-siz_cont_l;
for (int n=0; n < siz_cont_l; n++)s[t_content_length-14+r_cont_l+n]=c_cont_l[n];
}
2. Гость - 21 Ноября, 2014 - 02:48:01 - перейти к сообщению
По поводу этого скрипта, хотелось бы уточнить, в каком масиве хранится наша, уже разгаданная капча, и как её записать? Не совсем это понимаю.
3. Kibor - 21 Ноября, 2014 - 05:15:00 - перейти к сообщению
в otvet
 Kibor пишет:
messagebox (otvet);//выводит или капчу или ошибку
4. Гость - 22 Ноября, 2014 - 03:27:06 - перейти к сообщению
 Kibor пишет:
в otvet
 Kibor пишет:
messagebox (otvet);//выводит или капчу или ошибку

Подскажите, а как можно с этой переменной "otvet" вытянуть саму капчу? Т.е. как записать её в строку ввода капчи?
5. Kibor - 22 Ноября, 2014 - 03:35:29 - перейти к сообщению
key(otvet);
исправил...
6. Гость - 22 Ноября, 2014 - 04:28:02 - перейти к сообщению
 Kibor пишет:
key(formatsn(otvet));



mouse(LEFT,647, 444);// жмет на область куда нужно вводить капчу
sleep(1000);
key(formatsn(otvet));// сама капча

Мышку жмет на поле куда вводить капчу, а вот капчу почему то не хочет вводить. Капчу сервер возращает нормально.
Проверял messagebox (otvet);
7. Kibor - 22 Ноября, 2014 - 04:40:29 - перейти к сообщению
 Kibor пишет:
key(otvet);
исправил...

я не так написал... исправил
8. Гость - 22 Ноября, 2014 - 04:43:54 - перейти к сообщению
 Kibor пишет:
key(otvet);
исправил...

спасибо, все заработало. Можно удалить мои сообщения в этой тебе ? =) Буду благодарен
9. Kibor - 22 Ноября, 2014 - 04:47:29 - перейти к сообщению
 trey_tao пишет:
Можно удалить мои сообщения

зачем? что бы опять мне отвечать на такой ж вопрос?) это форум. пусть уже знают кому надо.
10. Гость - 24 Ноября, 2014 - 07:37:14 - перейти к сообщению
Подскажите пожалуйста, почему флеш плеер браузера Chrome, вылетает когда работает скрипт? Капчу отправляю, получаю ответ, ответ вводится в строку, а после вылетает флеш и просит обновить страничку? После перезагрузки странички, проблема повторяется

Powered by ExBB FM 1.0 Final