Author Topic: Бот для размещения обьявлений  (Read 10454 times)

0 Members and 2 Guests are viewing this topic.

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Бот для размещения обьявлений
« on: August 29, 2014, 05:12:28 PM »
Я написал скрипт для подачи обьявлений на одной доскет (без капчи), пока он умеет:

1  менятьсвой айпи через прокси (через тор)
2 создает новую временную почту
3 создает новый аккаунт и подтверждает письмо
4 правит данные аккаунта на совершенно рандомные - что бы избежать бана при реге
5 дает само обьявление, и сохраняет ссылку на него для потомков

еще он оповещает о текущих действиях всплывающими сообщениями и сохраняет скриншоты с ошибками и прочее

пока у меня затруднения:
1 как сделать звуковые оповещения? сделал файлы вав в папке саунды - не хочет воспроизводить
2 может где можно укоротить и оптимизировать?

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

Code: (clickermann) [Select]
begin:
$s=3
WNDSTATE(WNDFIND("Блокнот"), 0)   ///свернуть все окна
WNDSTATE(WNDFIND("Excel"), 0)
WNDSTATE(WNDFIND("tor"), 0)
WNDSTATE(WNDFIND("firefox"), 0)
SETKBLAYOUT (WNDFIND("tor"), 1033)
SETKBLAYOUT (WNDFIND("clickermann"), 1033)

SUB(c)
   WAITMS(100)
   keydown(#ctrl)
   WAITMS(100)
   keypress(#c)
   WAITMS(100)
   keyup(#ctrl)
   WAITMS(100)
END_SUB

SUB(v)
   WAITMS(100)
   keydown(#ctrl)
   WAITMS(100)
   keypress(#v)
   WAITMS(100)
   keyup(#ctrl)
   WAITMS(100)
END_SUB

//newmailbox
WNDSTATE(WNDFIND("tor"), 1)
WAITMS(500)
LCLICK(951,10)  // klik
LCLICK(90,38)    //  menu
WAITMS(500)
LCLICK(126,75)   // new id
wait(3)
//mailnew
HINTPOPUP ("цикл", $s)
LCLICK(500,23)  // 2498329
WAITMS(100)
LCLICK(500,23)  // 2498329
keypress(#f6)
WAITMS(500)
KEYSTRING("my10minutemail.com")
WAITMS(100)
keypress(#enter)
WAITMS(500)
FOR($i, $i < 10)
   GETSCREEN
   if(pxl(373,362)=3355443)
      move(440,500)
      ldown(430,500)
      WAITMS(100)
      move(860,500)
      WAITMS(500)
      lup(900,500)
      c()
      $i=10
   else
      WAIT(1)
      IF($i > 8)
         hintpopup("почты не будет")
         screenshot
         goto(begin)
      END_IF
   end_if
END_CYC
//slandonew
LCLICK(391,15)  // newtab
WAITMS(500)
KEYSTRING("ssl.slando.ua/account/register")
WAITMS(100)
keypress(#enter)
FOR($i, $i < 10)
   GETSCREEN
   IF_PICTURE_IN (200,90, 430,170, "slando.bmp")
      LCLICK(445,278)  // mail
      v()
      LCLICK(445,336)  // pass
      v()
      LCLICK(445,392)  // check
      v()
      LCLICK(443,527)  // box
      WAITMS(500)
      LCLICK(450,617)  // send
      $i = 10
   else
      wait(1)
      if($i > 8)
         hintpopup("сландо не грузит")
         screenshot
         goto(begin)
      end_if
   end_if
END_CYC
//savemail
LCLICK(199,423)  // klik
wait(1)
keypress(#home)
FOR($i, $i < 10)
   getscreen
   if(pxl((999,300)!15198207)
      WNDSTATE(WNDFIND("tor"), 0)
      WNDSTATE(WNDFIND("firefox"), 1)
      keydown(#home)
      v()
      WNDSTATE(WNDFIND("firefox"), 0)
      WNDSTATE(WNDFIND("tor"), 1)
      $i=10
   else
      wait(1)
      if($i > 8)
         hintpopup("айпи забанен")
         screenshot
         goto(begin)
      end_if
   end_if
end_cyc
//letter
LCLICK(250,15)  // tab1
FOR($i, $i < 60)
   keypress(34)
   wait(1)
   getscreen
   IF_PICTURE_IN (540,200, 800,500, "activ.bmp")
      lclick($_return1, $_return2)
      $i = 60
   else
      LCLICK(1201,576)  // mailclick
      wait(1)
      LCLICK(949,597)  // letterclick
      if($i>55)
         hintpopup("письма нет")
         screenshot
         goto(begin)
      end_if
   end_if
END_CYC
//settings
LCLICK(613,15)  //altw
WAITMS(500)
LCLICK(387,14)  // tab2
WAITMS(500)
keystring("slando.ua/myaccount/settings")
WAITMS(100)
keypress(#enter)
WAIT(2)
LCLICK(176,405)  // klik
FOR($i, $i < 10)
   GETSCREEN
   IF_PIXEL_IN(0,0, 422,222, 3080380)//slandologo
      WAIT(3)
      LCLICK(300,310)  // izmenit
      wait(1)
      LCLICK(300,245)  // name
      SETKBLAYOUT (WNDFIND("tor"), 1049)
      $name = RND(1,9)
      SWITCH($name)
      CASE(1)
         keystring("fktrcfylh")
      CASE(2)
         keystring("jktu")
      CASE(3)
         keystring("bhf")
      CASE(4)
         keystring("cthutq")
      CASE(5)
         keystring("ktif")
      CASE(6)
         keystring("ltybc")
      CASE(7)
         keystring("bkmz")
      CASE(8)
         keystring("gfif")
      CASE(9)
         keystring("ctvty")
      default
      END_SWITCH
      SETKBLAYOUT (WNDFIND("tor"), 1033)
      LCLICK(300,320)       // nomer
      $nomer= (RND(1000000,9999999))
      keystring("063")
      keystring($nomer)
      wait(1)
      LCLICK(300,160)  // region
      wait(1)
      SWITCH($s)
      CASE(1)
         LCLICK(300,270)    // область
         WAITMS(500)
         LCLICK(300,225)          // город
         WAITMS(500)
         LCLICK(300,390)          // днепр
      CASE(2)
         LCLICK(300,270)    // область
         WAITMS(500)
         LCLICK(300,225)          // город
         WAITMS(500)
         ldown(541,410)
         wait(1,2)
         ldown(541,410)
         WAITMS(500)
         LCLICK(300,380)  // кривой рог
         WAITMS(500)
         LCLICK(300,380)  // кривой рог
      CASE(3)
         ldown(555,345)
         WAIT(2)
         lup(555,345)
         WAITMS(500)
         lclick(300,210)      // область
         WAITMS(500)
         LCLICK(300,225)          // город
         ldown(540,414)
         wait(1)
         lup(540,414)
         WAITMS(500)
         LCLICK(300,305)  // Харьков
      CASE(4)
         LCLICK(300,320)        // область
         WAITMS(500)
         LCLICK(300,225)           // город
         WAITMS(500)
         LCLICK(537,325)  // scroll
         WAITMS(500)
         LCLICK(285,324)  // житомир
      CASE(5)
         LCLICK(555,235)  // scroll
         WAITMS(500)
         lclick(300,285)      // область
         WAITMS(500)
         LCLICK(300,225)          // город
         Ldown(539,344)  // 9529888
         wait(2)
         lup(539,344)
         LCLICK(295,254)   // КИЕВ
      CASE(6)
         Ldown(557,345)  // scroll
         wait(1)
         lup(557,345)
         WAITMS(500)
         LCLICK(300,220)        // область
         WAITMS(500)
         LCLICK(300,227)          // город
         WAITMS(500)
         LCLICK(300,335)        // николаев
      CASE(7)
         Ldown(557,345)  // scroll
         wait(1,5)
         lup(557,345)
         LCLICK(300,285)  // область
         WAITMS(500)
         LCLICK(300,227)          // город
         WAITMS(500)
         LCLICK(300,310)        // одесса
      CASE(8)
         Ldown(557,345)  // scroll
         wait(1)
         lup(557,345)
         WAITMS(500)
         LCLICK(300,275)        // область
         WAITMS(500)
         LCLICK(300,227)          // город
         WAITMS(500)
         LCLICK(543,334)  // 11504706
         WAITMS(500)
         LCLICK(288,408)         //  полтава
      CASE(9)
         Ldown(557,345)  // scroll
         wait(1)
         lup(557,345)
         LCLICK(300,333)  // область
         WAITMS(500)
         LCLICK(300,227)          // город
         WAITMS(500)
         LCLICK(300,335)      //ровно
      CASE(10)
         Ldown(560,287)  // scroll
         wait(2)
         Lup(560,287)
         LCLICK(300,350)  // область
         WAITMS(500)
         LCLICK(300,340)          // город
         WAITMS(500)
         LCLICK(300,309)        // суммы
      DEFAULT
         LCLICK(300,270)    // область
         WAITMS(500)
         LCLICK(300,225)          // город
         WAITMS(500)
         LCLICK(300,390)          // днепр
      END_SWITCH
      WAITMS(500)
      lclick(300,725)      // save
      WAITMS(100)
      LCLICK(283,658)  // 14185263
      wait(1)
      $i = 10
   else
      wait(1)
      if($i >8)
         hintpopup("не грузит")
         screenshot
         goto(begin)
      end_if
   end_if
end_cyc
//obyava
new:
waitms(500)
LCLICK(862,15)  // altf4
waitms(500)
LCLICK(613,404)  // confirm
waitms(500)
LCLICK(638,12)  // tab3
WAITMS(500)
keystring("slando.ua/post-new-ad")
WAITMS(100)
keypress(#enter)
FOR($i, $i < 10)
   GETSCREEN
   IF_PICTURE_IN (200,90, 430,170, "slando.bmp")
      wait(2)
      LCLICK(500,310)       //rubrika
      wait(1)
      LCLICK(500,310)       //rubrika
      wait(1)
      LCLICK(500,310)       //rubrika
      wait(1)
      LCLICK(300,470)   // usluji
      wait(1)
      LCLICK(550,415)   // vibor
      WNDSTATE(WNDFIND("tor"), 0)
      WNDSTATE(WNDFIND("firefox"), 1)
      WAITMS(500)
      keydown(#right)
      c()
      keydown(#right)
      WAITMS(500)
      WNDSTATE(WNDFIND("firefox"), 0)
      WNDSTATE(WNDFIND("tor"), 1)
      WAITMS(500)
      LCLICK(500,400)    // лицо
      WAITMS(500)
      LCLICK(500,425)    //casnoe
      WAITMS(500)
      LCLICK(467,225)  // zagolovok
      v()
      WNDSTATE(WNDFIND("tor"), 0)
      WNDSTATE(WNDFIND("firefox"), 1)
      c()
      keydown(#down)
      WAITMS(500)
      keydown(#home)
      WNDSTATE(WNDFIND("firefox"), 0)
      WNDSTATE(WNDFIND("tor"), 1)
      WAITMS(500)
      LCLICK(502,670)   //foto
      WAITMS(500)
      keydown(#shift)
      WAITMS(100)
      keystring("C:")
      WAITMS(100)
      keyup(#shift)
      WAITMS(100)
      keystring("\gruz\")
      WAITMS(100)
      v()
      WAITMS(100)
      keystring(".jpg")
      WAITMS(100)
      keypress(#right)
      WAITMS(500)
      KEYPRESS(#enter)
      WAITMS(500)
      execute("notepad.exe", STRCONCAT("C:\gruz\", FROMCLIP(), ".txt"))
      WAITMS(500)
      keydown(#ctrl)
      WAITMS(100)
      KEYPRESS(#a)
      WAITMS(100)
      KEYUP(#ctrl)
      c()
      keydown(#alt)
      WAITMS(100)
      keypress(#f4)
      keyup(#alt)
      WAITMS(100)
      LCLICK(500,500)     // opis
      v()
      LCLICK(200,400)     // klik
      WAITMS(100)
      KEYPRESS(#end)       //////
      WAITMS(500)
      move(933,387)        // move
      WAITMS(100)
      lclick(933,387)      // опублик
      $i = 10
      WAIT(3)
      keypress(#home)
      WAIT(1)
      getscreen
      if_pixel_in(888,203,1077,248, 5422725)
         $m=0
         $s=$s+1
         HINTPOPUP ("это успех")
         goto(begin)
      else
         $m=$m+1
         if ($m>2)
            HINTPOPUP ("начинаем с начала", $m)
            screenshot
            wait(1)
            goto(begin)
         end_if
         HINTPOPUP ("ошибки случаются", $m)
         screenshot
         keypress(#f6)
         goto(new)
      end_if
   else
      wait(1)
      if($s>10)
         halt
      end_if
   end_if
end_cyc
« Last Edit: September 13, 2014, 08:06:49 AM by Луций »

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: Бот для размещения обьявлений
« Reply #1 on: August 30, 2014, 10:28:53 AM »
1 в какой базе и как хранить тексты заголовки и фото так, что бы скрипт быстро копировал их от туда, мои изыскания с экселем ни к чему не привели
кликер умеет писать и читать текстовые файлы построчно. этого тебе будет достаточно я думаю.

Quote
2 как сделать файл отчетности с ссылкой на обьявление созданое, заголовком и временем создания
так же кликер умеет смотреть системное время и работать с буфером обмена. ссылку можешь с браузера копировать

Quote
3 можно ли как то кликер научить распознавать капчу с помощь посторонних прог?
можно. более того данный инструмент был реализован мной еще год назад и лежит тут же на сайте. agclient

держи в курсе. мне интересны именно НЕ игровые скрипты.

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Бот для размещения обьявлений
« Reply #2 on: August 30, 2014, 01:08:11 PM »
чувак, как вытаскивать системное время хотяб, напиши плз пример
с построчной работой тоже не совсем понял, ща буду капчерез искать
« Last Edit: August 30, 2014, 01:18:38 PM by Луций »

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Бот для размещения обьявлений
« Reply #3 on: August 30, 2014, 01:20:08 PM »
Джони срочно нужна новая версия кликера с огромной кнопкой 100х100px посередине для открытия инструкции по командам =)

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Бот для размещения обьявлений
« Reply #4 on: September 01, 2014, 08:27:31 AM »
Quote
... (если еще кто подскажет как избавиться от каракулей вместо русских букв - вообще супер будет)
Каракули получаются когда копируешь скрипт из редактора Clickermann'а. Попробуй сначала сохранить скрипт, потом открыть его в Блокноте, и скопировать уже из него.
Прочитать каракули поможет всеми любимая программа Shtirlitz v4.01, есть так же плагин Shtirlitz для Notepad++.

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Бот для размещения обьявлений
« Reply #5 on: September 10, 2014, 12:18:00 AM »
обновил первый пост, призываю местных 2,5 админа на помощ

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Бот для размещения обьявлений
« Reply #6 on: September 10, 2014, 10:46:35 AM »
2 как сделать нормальные рабочие сабы (у меня ctrl+v пашет а ctrl+c не хочет)
А как ты саб на ctrl+c вызывал? Просто в SUB(с) у тебя "с" русская, предполагаю, что вызывал как положено английскую как и "v". Короче коварняя c/с на одной кнопке иногда подводит, нужно следить, а лучше не давать такие имена. я пишу сразу copy() и панто свитчер если что меня поправит и не даст спутать одну букву.

В стр. 108 лишняя скобка
if(pxl((324,243)=5422725)

В генераторе телефона  в
$nomer= (RND(0,9999999)
нет закрывающей скобки из-за чего он выдаёт номера вида "(654789"
При этом номера не обязательно будут 7-и значные, если это важно нужно переделать для формирования номера с нужным количеством цифр.

По поводу вставки вместо имени мусора из 9 вариантов, не лучше бы выбирать из реальных имён, кому нужно объявление от "jhgdfhj" я его и смотреть не буду.

Когда писал подобные скрипты при работе с браузером, тоже сначала вводил в адресную строку кейстрингом. Но потом понял что кейстринг иногда довольно ненадёжная вещь, особенно если комп начинает тупить не вовремя. Переделал все открытия страниц на вызов браузера через execute
Как пример... для начала открываю одну ненужную страницу, чтобы при закрытии вкладки (последней) не закрывался браузер. Знаю что можно настроить, но по умолчанию у всех так.
Code: (clickermann) [Select]
   $hwnd = WNDFIND("Mozilla Firefox")
   IF($hwnd > 0)
      EXECUTE("firefox.exe", "yandex.ru")      //запуск Мозилы
      WAIT(3)
   END_IF

В дальнейшем при необходимости открываю нужную страницу, она открывается в новой вкладке
Code: (clickermann) [Select]
EXECUTE("firefox.exe", "slando.ua/myaccount/settings")
После обработки закрываю ненужную вкладку вызывая close()
Code: (clickermann) [Select]
SUB(close)
   KEYDOWN (#CTRL)
   WAITMS (50)
   KEYDOWN (#W)
   WAITMS (50)
   KEYUP (#W)
   KEYUP (#CTRL)
   WAITMS(500)
END_SUB

А работа с адресами в блокноте как в строках 409+ через keystring ...
вместо
Code: (clickermann) [Select]
      execute("notepad.exe")
      WAITMS(500)
      keydown(#ctrl)
      WAITMS(100)
      keypress(#o)
      WAITMS(50)
      keyup(#ctrl)
      WAIT(1)
      keydown(#shift)
      WAITMS(100)
      keystring("C:")
      WAITMS(100)
      keyup(#shift)
      WAITMS(100)
      keystring("\gruz\")
      WAITMS(100)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#V)
      WAITMS (50)
      KEYUP (#V)
      WAITMS(100)
      KEYUP (#CTRL)
      WAITMS(100)
      keystring(".txt")
      WAITMS(500)
      KEYPRESS(#enter)

проще вызвать блокнот передав ему в параметре путь к файлу
Code: (clickermann) [Select]
execute("notepad.exe", STRCONCAT("C:\gruz\", FROMCLIP(), ".txt"))или понятнее
Code: (clickermann) [Select]
$file = STRCONCAT("C:\gruz\", FROMCLIP(), ".txt")
execute("notepad.exe", $file)


Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Бот для размещения обьявлений
« Reply #7 on: September 10, 2014, 02:29:34 PM »
jhgdfhj - это реальное имя набранное на рус раскладке =) с сменой раскладки я скрипт так и не подружил, и еще без скобок некоторых у меня все работает как не странно, а вот за нормальный запуск блокнота спасибо ща буду править

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Бот для размещения обьявлений
« Reply #8 on: September 10, 2014, 02:43:20 PM »
jhgdfhj - это реальное имя набранное на рус раскладке =) с сменой раскладки я скрипт так и не подружил
пунтосвичер подсказывает что вы хотели набрать на русской раскладке "орпваро" может я чего недогоняю но мне кажется такого имени нет =)

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Бот для размещения обьявлений
« Reply #9 on: September 10, 2014, 03:58:53 PM »
jhgdfhj - это реальное имя набранное на рус раскладке =) с сменой раскладки я скрипт так и не подружил
пунтосвичер подсказывает что вы хотели набрать на русской раскладке "орпваро" может я чего недогоняю но мне кажется такого имени нет =)

так у меня в скрипте и нет такого, это предыдущий комментатор придумал, но проблема с сменой языка есть, как решить - ума не приложу

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Бот для размещения обьявлений
« Reply #10 on: September 10, 2014, 04:17:30 PM »
Да хоть по нормальному переключить на русский
Code: (clickermann) [Select]
SETKBLAYOUT (WNDFIND("Mozilla Firefox"), 1049)
SETKBLAYOUT (WNDFIND("Clickermann - "), 1049)

Хоть поставить пантосвитчер и в конце добавлять пробел+Backspace


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Бот для размещения обьявлений
« Reply #11 on: September 10, 2014, 04:22:20 PM »
... и еще без скобок некоторых у меня все работает как не странно...
Значит там нет проверки на правильность номера, можно вводить что попало.
Но номер неправильно, вот запусти и посмотри
Code: (clickermann) [Select]
FOR($i, $i<20)
   $nomer= (RND(0,9999999)
   LOGWRITE ($nomer)
END_CYC
HALT
А потомь добавь скобку и убедись. Точнее удали лишнюю.
« Last Edit: September 10, 2014, 04:24:16 PM by Vint »


Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Бот для размещения обьявлений
« Reply #12 on: September 10, 2014, 05:09:21 PM »
    SETKBLAYOUT (WNDFIND("Mozilla Firefox"), 1049)
    SETKBLAYOUT (WNDFIND("Clickermann - "), 1049)

это переключение на англ всегда? а на русский как?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Бот для размещения обьявлений
« Reply #13 on: September 10, 2014, 06:20:36 PM »
    SETKBLAYOUT (WNDFIND("Mozilla Firefox"), 1049)
    SETKBLAYOUT (WNDFIND("Clickermann - "), 1049)

это переключение на англ всегда? а на русский как?

1033 - это английская
1049 - русская

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
Re: Бот для размещения обьявлений
« Reply #14 on: September 11, 2014, 05:03:58 AM »
еще у меня     

$file = STRCONCAT("C:\gruz\", FROMCLIP(), ".txt")
execute("notepad.exe", $file)

не хочет работать (синтаксическая ошибка) , вообще всю ту абракадабру, которую мне предложили заменить этим изображением я писал потому, что кликер вместо "C:\" писал "C;\" и тому подобное, думаю тут та же беда но как исправить я хз, и не совсем понимаю что делает STRCONCAT

при этом первое выражение вот что пишет: c;\gruz\1.txt

$file = STRCONCAT("c:\gruz\", FROMCLIP(), ".txt")
keystring($file)

а это заработало нормально:
execute("notepad.exe", STRCONCAT("C:\gruz\", FROMCLIP(), ".txt"))


« Last Edit: September 11, 2014, 05:17:09 AM by Луций »