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

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

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

> Описание: Скрипт разгадывания капчи reCAPTCHA
Kibor
Отправлено: 11 Апреля, 2016 - 13:28:06
Post Id



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


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




Релизация блока решения текстовой капчи в визуальном редакторе(для просмотра ссылки Вам необходимо авторизоваться) Релизация блока решения клик капчи (RECAPCHA и тд) в визуальном редакторе(для просмотра ссылки Вам необходимо авторизоваться)

Скрипт интеграции с сервисом rucaptcha.com НЕ АКТУАЛЕН. Устарел для сервиса.. Надо использовать код который генерирует Визуальный редактор(для просмотра ссылки Вам необходимо авторизоваться) Предназначен для решения каптч reCAPTCHA в которых предлагается выбрать изображения по вопросу.
Отправляет для решения такие каптчи. Надо сделать скрин части экрана с каптчей таким образом.


Для решения текстовых каптч использовать этот скрипт Скрипт для подключению к сервису разгадывания капчи. Готовый к использованию.

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


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

//Это использование
/*
capcha(
Указатель на string в который запишется отгаданная капча
путь к файлу .jpg с капчей на компьютере
свой ключ в системе rucaptcha.com
время в сек. между запросами готового результата
время в сек сколько ждать результата
)
Возвращает 1 если разгадана. 0 если не разгадана
*/
ot=capcha(#otvet, "C:\1.jpg", "key", 2, 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)
{
/*

messagebox (otvet);
return;



*/
t=t*1000;
wtt=wtt*1000;
int wtt1=gettime();
ss: if (opensocket ("anti-captcha.com", 80)==1)//Если открыли сокет
{
//otvet="122976708";

strcpy(#s[0], "GET /res.php?key="+k+"&action=get&id="+otvet+" HTTP/1.1"+formatic(13)+formatic(10)+"Host: anti-captcha.com");//Формируем 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);

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: anti-captcha.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;
}
hh:;

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], 240000);
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
Plc
Отправлено: 21 Апреля, 2016 - 08:42:04
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2016  
Репутация: 0




Очень нужная вещь, только Обясните как он работает, что возращает данный скрипт? Так как в данной системе капч нужно выбирать изображение определенного типа?
 
 Top
Kibor
Отправлено: 21 Апреля, 2016 - 12:02:50
Post Id



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


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




строку типа 135
номера клеток.
только надо обновлять каптчи если они не имеют 9 клеток или те которые надо нажимать много раз с обновлением той клетки на которой нажатие было.
 
 Top
Plc
Отправлено: 21 Апреля, 2016 - 13:41:46
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2016  
Репутация: 0




 Kibor пишет:
строку типа 135
номера клеток.
только надо обновлять каптчи если они не имеют 9 клеток или те которые надо нажимать много раз с обновлением той клетки на которой нажатие было.


Вообще отлично, осталось только придумать как разбить эту картинку на блоки, что бы правильно нажимать...Будем думать, спасибо.
 
 Top
Kibor
Отправлено: 21 Апреля, 2016 - 13:51:50
Post Id



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


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




очень очень просто)
решение в проверке нескольких пикселей по координатам.
 
 Top
Plc
Отправлено: 21 Апреля, 2016 - 14:27:50
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2016  
Репутация: 0




 Kibor пишет:
очень очень просто)
решение в проверке нескольких пикселей по координатам.

Ну можно сохранить 9 картинок, маленьких, либо 9 пачек пикселей, и им присвоивать имеена переменных. Хорошая и удобная идея, спасибо.
 
 Top
Kibor
Отправлено: 21 Апреля, 2016 - 15:19:32
Post Id



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


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




так проверить что 9 рисунков
проверить на наличие белых пикселей.


так же узнать координаты картинок при необходимости клика.

все оч просто......
 
 Top
Scorp1978
Отправлено: 11 Мая, 2016 - 11:37:53
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 52
Дата рег-ции: Февр. 2016  
Репутация: 0




то что надо!!!, а можно дописать функцию которая возвращает количество картинок накапче(по отправленой в нее картинке) и функцию которая возвращает координаты по отправленному в нее номеру картинки. Вообще бы здоровы было. И как бы законченный сборник функций был бы )))).
Заранее благодарен.
ПС чёта я совсем обленился)
 
 Top
Kibor
Отправлено: 11 Мая, 2016 - 12:31:31
Post Id



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


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




)
ага
 Scorp1978 пишет:
чёта я совсем обленился)
 
 Top
samuilus
Отправлено: 25 Февраля, 2017 - 18:50:07
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2014  
Репутация: 0




Привет всем! Ребята, подскажите пожалуйста, как можно с картинки считать слова в переменные именно, в той последовательности, в которой они написаны ?

Делаю так:
1. сохраняю в граф редакторе отдельно картинку "кошка", "собака", "машина"
2. подгружаю их в буфер
3. При создании условий кибор их все определит, но мне нужно записать в переменные именно их последовательность, потому как порядок слов на картинке генерируется случайным образом.
Тоесть; если картинка гненерированна так: собака, кошка, машина - то соответственно и переменные должны иметь значения следующие:
PHP:

int var1 = loadimage(#img1[0][0],"C:\Bot\dog.bmp");
int var2 = loadimage(#img2[0][0],"C:\Bot\cat.bmp");
int var3 = loadimage(#img3[0][0],"C:\Bot\car.bmp");


соответственно если картинка сгенерированна так : машина, собака, кошка - то соответственно должно получиться так:

PHP:

int var1 = loadimage(#img1[0][0],"C:\Bot\car.bmp");
int var2 = loadimage(#img2[0][0],"C:\Bot\dog.bmp");
int var3 = loadimage(#img3[0][0],"C:\Bot\cat.bmp");


Подскажите пожалуйста как такое реализовать?
Спасибо !

P.S. Нужно для того что, после того как определен порядок картинок, через условия проверять другие картинки на странице сайта, и соответственно правильно по ним кликать.

[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

(Отредактировано автором: 25 Февраля, 2017 - 18:53:54)

 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Готовые скрипты »


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




Powered by