Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Скрипт для подключению к сервису разгадывания капчи. Готовый к использованию.
Kibor
Отправлено: 05 Октября, 2014 - 19:44:02
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Правильное подключение к сервису - Пример использования парсера для работы с сервисом 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];
}
 
 Top
Гость
Отправлено: 21 Ноября, 2014 - 10:48:01
Post Id



УДАЛЁН









По поводу этого скрипта, хотелось бы уточнить, в каком масиве хранится наша, уже разгаданная капча, и как её записать? Не совсем это понимаю.
 
 Top
Kibor
Отправлено: 21 Ноября, 2014 - 13:15:00
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




в otvet
 Kibor пишет:
messagebox (otvet);//выводит или капчу или ошибку
 
 Top
Гость
Отправлено: 22 Ноября, 2014 - 11:27:06
Post Id



УДАЛЁН









 Kibor пишет:
в otvet
 Kibor пишет:
messagebox (otvet);//выводит или капчу или ошибку

Подскажите, а как можно с этой переменной "otvet" вытянуть саму капчу? Т.е. как записать её в строку ввода капчи?
 
 Top
Kibor
Отправлено: 22 Ноября, 2014 - 11:35:29
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




key(otvet);
исправил...
 
 Top
Гость
Отправлено: 22 Ноября, 2014 - 12:28:02
Post Id



УДАЛЁН









 Kibor пишет:
key(formatsn(otvet));



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

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



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Kibor пишет:
key(otvet);
исправил...

я не так написал... исправил
 
 Top
Гость
Отправлено: 22 Ноября, 2014 - 12:43:54
Post Id



УДАЛЁН









 Kibor пишет:
key(otvet);
исправил...

спасибо, все заработало. Можно удалить мои сообщения в этой тебе ? =) Буду благодарен
 
 Top
Kibor
Отправлено: 22 Ноября, 2014 - 12:47:29
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 trey_tao пишет:
Можно удалить мои сообщения

зачем? что бы опять мне отвечать на такой ж вопрос?) это форум. пусть уже знают кому надо.
 
 Top
Гость
Отправлено: 24 Ноября, 2014 - 15:37:14
Post Id



УДАЛЁН









Подскажите пожалуйста, почему флеш плеер браузера Chrome, вылетает когда работает скрипт? Капчу отправляю, получаю ответ, ответ вводится в строку, а после вылетает флеш и просит обновить страничку? После перезагрузки странички, проблема повторяется
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0)
« Готовые скрипты »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by