def check_timer(self, browser): try: split_title = reg_exp.split(r'm', browser.title, maxsplit=1) browser.close() time_clock = int(split_title[0]) + 1 fckng_wrd_dmn_it = '' if (time_clock % 10) == 1: fckng_wrd_dmn_it = ' минуту' elif time_clock < 5: fckng_wrd_dmn_it = ' минуты' else: fckng_wrd_dmn_it = ' минут' print("[+]Кажется, мне стоит попробовать еще раз через " + str(time_clock) + fckng_wrd_dmn_it) time_to_wait = time_clock * 60 return time_to_wait except Exception as err: error_hook.fatal_err("Я до сих пор не могу найти кнопку [ROLL!]. Кажется, что-то пошло не так!", err) return None
def init_mulco(): try: info_wb = openpyxl.load_workbook(filename=r'data\crane_stats.xlsx') info_sheet = info_wb['INFO'] except Exception as err: error_hook.fatal_err( "Не могу получить доступ к crane_stats.xlsx/INFO. " "Убедитесь в наличии файла 'crane_stats.xlsx' в папке 'data' и повторите попытку." "\n Файл должен быть закрыт!", err) return None if not info_sheet.cell(row=10, column=10).value: error_hook.warn_err( "В ячейке 'J10' не указан пароль. Работа с сайтом multicoinfaucet.com невозможна" ) return None else: mulco_pass = str(info_sheet.cell(row=10, column=10).value) mulco_user = MulCo(mulco_login, mulco_pass) return mulco_user
def captcha_grabber(self, browser): from PIL import Image try: refresh = browser.find_element_by_id("adcopy-link-refresh") refresh.click() except Exception as err: error_hook.fatal_err("Не удалось обновить капчу", err) error_hook.screen_grab(browser) return None time.sleep(5) try: element = browser.find_element_by_id("adcopy-puzzle-image-image") if not element: element = browser.find_element_by_id("adcopy-puzzle-image") el_locate = element.location el_size = element.size except Exception as err: error_hook.fatal_err("Не удалось найти капчу", err) return None try: browser.save_screenshot("data/captcha_shots/" + self.captcha_image) captcha_to_solve = Image.open("data/captcha_shots/" + self.captcha_image) left = el_locate['x'] top = el_locate['y'] right = left + el_size['width'] bottom = top + el_size['height'] captcha_to_solve = captcha_to_solve.crop((left, top, right, bottom)) captcha_to_solve.save("data/captcha_shots/" + self.captcha_image) except Exception as err: error_hook.fatal_err("Не удалось подготовить капчу к отправке", err) return RuCaptcha.captcha_grabber(self, browser) print("[+]Сохранил капчу с именем " + str(self.captcha_image)) return 1
def init_doge(): try: info_wb = openpyxl.load_workbook(filename=r'data\crane_stats.xlsx') info_sheet = info_wb['INFO'] except Exception as err: error_hook.fatal_err( "Не могу получить доступ к crane_stats.xlsx/INFO. " "Убедитесь в наличии файла 'crane_stats.xlsx' в папке 'data' и повторите попытку." "\n Файл должен быть закрыт!", err) return None dogeco_cap_img = 'dgccap.png' if not info_sheet.cell(row=10, column=2).value: error_hook.warn_err( "В ячейке 'B10' не указан пароль. Работа с сайтом fredoge.co.in невозможна" ) return None else: dogeco_pass = str(info_sheet.cell(row=10, column=2).value) if not info_sheet.cell(row=19, column=9).value: error_hook.warn_err( "В ячейке 'i19' не указан ключ каптчи. Работа с сайтом fredoge.co.in невозможна" ) return None else: dogeco_cap_api = str(info_sheet.cell(row=19, column=9).value) if not info_sheet.cell(row=20, column=9).value: error_hook.warn_err( "В ячейке 'i20' не указан профиль. Работа с сайтом fredoge.co.in невозможна" ) return None else: profile_dgc = FirefoxProfile( str(info_sheet.cell(row=20, column=9).value)) dogeco_user = FreeDOGECO(dogeco_mail, dogeco_pass, profile_dgc, dogeco_cap_img, dogeco_cap_api) return dogeco_user
def captcha_solver(self, image, api, browser): self.captcha_image = image self.captcha_api = api if not RuCaptcha.captcha_grabber(self, browser): return None url = 'http://rucaptcha.com/in.php' files_attrib = {"file": open("data/captcha_shots/" + self.captcha_image, "rb")} api_attrib = {"key": self.captcha_api} try: answer = requests.post(url, files=files_attrib, data=api_attrib) except Exception as err: error_hook.fatal_err("Не удалось отправить капчу", err) return RuCaptcha.captcha_solver(self, self.captcha_image, self.captcha_api, browser) print("[+]Отправил капчу на RuCaptcha \n[+]Ответили: " + answer.text) result_busy = reg_exp.match('ERROR_NO_SLOT_AVAILABLE', answer.text) result_ok = reg_exp.match('OK|', answer.text) if result_busy: print('[.]Все слоты заняты, нужно подождать...') time.sleep(5) return RuCaptcha.captcha_solver(self, self.captcha_image, self.captcha_api, browser) elif result_ok: try: captcha_id = answer.text.split("|")[1] except Exception as err: error_hook.fatal_err("Не удалось обработать ответ: " + answer.text, err) time.sleep(5) return RuCaptcha.captcha_solver(self, self.captcha_image, self.captcha_api, browser) else: error_hook.warn_err("Проблемы с RuCaptcha.") time.sleep(5) return RuCaptcha.captcha_solver(self, self.captcha_image, self.captcha_api, browser) url2 = 'http://rucaptcha.com/res.php?key=' request_url = url2 + str(self.captcha_api) + '&action=get&id=' + captcha_id try: print("[+]Делаю запрос на " + request_url) solved = requests.get(request_url) except Exception as err: error_hook.fatal_err("Не удалось получить ответ от RuCaptcha", err) return RuCaptcha.captcha_solver(self, self.captcha_image, self.captcha_api, browser) captcha_answ = RuCaptcha.cap_check(self, solved, request_url) if not captcha_answ: RuCaptcha.captcha_solver(self, self.captcha_image, self.captcha_api, browser) else: return captcha_answ
str(info_sheet.cell(row=20, column=9).value)) dogeco_user = FreeDOGECO(dogeco_mail, dogeco_pass, profile_dgc, dogeco_cap_img, dogeco_cap_api) return dogeco_user # ________________________________________________________________________________________________________________ try: fdgc_sheet = openpyxl.load_workbook(filename=r'data\crane_stats.xlsx') fdgc_wb = fdgc_sheet['INFO'] fdgc_wb['D5'] = '' fdgc_wb['L5'] = '' except Exception as err: error_hook.fatal_err( "Не могу записать время начала пула. " "Убедитесь в наличии файла 'crane_stats.xlsx' в папке 'data' и повторите попытку." "\n Файл должен быть закрыт!", err) raise SystemExit(404) while 1: a = time.strftime("%H:%M:%S", time.localtime()) print("\n\n_____[+]|" + str(a) + "|Начинаю работу с сайтом freedoge.co.in_____") dogeco_user = init_doge() dgc_cooldown = 3600 if dogeco_user: dgc_cooldown = FreeDOGECO.roller(dogeco_user) a = time.strftime("[%H:%M:%S]", time.localtime()) if not dgc_cooldown: a = time.strftime("%H:%M:%S", time.localtime()) error_hook.fatal_err(
def roller(self, browser): start_mulco = datetime.now() try: balance = browser.find_element_by_xpath( '//*[@id="balance_global"]') balance = balance.text except: error_hook.warn_err("Не удалось узнать баланс") error_hook.screen_grab(browser) else: print("[+]Ваш текущий баланс = " + balance + " BTC") self.permanent_balance = float(balance) try: fdgc_wb = openpyxl.load_workbook( filename=r'data\crane_stats.xlsx') fdgc_sheet = fdgc_wb['INFO'] fdgc_sheet.cell(row=4, column=12).value = "%.8f" % float(balance) fdgc_wb.save(r'data\crane_stats.xlsx') except Exception as err: error_hook.fatal_err( "Не могу получить доступ к crane_stats.xlsx/INFO", err) try: time_to_wait = browser.find_element_by_xpath( '/html/body/section' '/div/div/div/div/div' '/div/div[12]/center/span[2]/b') except Exception: print('[.]Ожидание не требуется - приступаю к работе') else: try: minute = re.split(' ', time_to_wait.text) print("[.]Нужно подождать " + minute[5] + " min") secs_to_wait = int(minute[5]) * 60 browser.close() return secs_to_wait except Exception as err: browser.close() error_hook.fatal_err("", err) return None for i in range(1, 100): time.sleep(1) try: guess = browser.find_element_by_xpath( '//*[@id="visualCaptcha-img-0"]') print("[.]Пытаюсь угадать капчу...") guess.click() except Exception as err: error_hook.warn_err("Не удалось найти картинку капчи") try: resp = browser.find_element_by_xpath( '//*[@id="responseMessage"]') print("[+]Пул окончен") print("[%]\n" + resp.text + "\n[%]") break except: error_hook.fatal_err("Не удалось сделать пул", err) error_hook.screen_grab(browser) browser.close() return None try: button = browser.find_element_by_xpath( '/html/body/section' '/div/div/div/div/div/div' '/div[12]/center/form/div/input') button.click() time.sleep(2) resp = browser.find_element_by_xpath( '//*[@id="responseMessage"]') trouble_cap = re.match( 'CAPTCHA failed: No CAPTCHA data recieved ' 'in POST..Please retry', resp.text) if trouble_cap: print("[.]Обновляю POST-запрос...") browser.get(browser.current_url) except Exception as err: error_hook.warn_err("Не могу найти кнопку ROLL") else: print("[.]Не угадал, попробую еще раз") continue try: balance = browser.find_element_by_xpath( '//*[@id="balance_global"]') balance = balance.text except: error_hook.warn_err("Не удалось узнать баланс") error_hook.screen_grab(browser) else: print("[+]Ваш текущий баланс = " + balance + " BTC") income = float(balance) - float(self.permanent_balance) try: fdgc_wb = openpyxl.load_workbook( filename=r'data\crane_stats.xlsx') fdgc_sheet = fdgc_wb['INFO'] fdgc_sheet.cell(row=4, column=12).value = "%.8f" % float(balance) fdgc_wb.save(r'data\crane_stats.xlsx') except Exception as err: error_hook.fatal_err( "Не могу получить доступ к crane_stats.xlsx/INFO", err) print("[+]Ваша прибыль +%.8f" % float(income) + " BTC") self.permanent_balance = float(balance) try: fdgc_wb = openpyxl.load_workbook( filename=r'data\crane_stats.xlsx') fdgc_sheet = fdgc_wb['INFO'] fdgc_sheet.cell(row=5, column=12).value = "%.8f" % float(income) if float(fdgc_sheet.cell(row=5, column=12).value) > float( fdgc_sheet.cell(row=6, column=12).value): fdgc_sheet.cell(row=6, column=12).value = "%.8f" % float(income) fdgc_wb.save(r'data\crane_stats.xlsx') except Exception as err: error_hook.fatal_err( "Не могу получить доступ к crane_stats.xlsx/INFO", err) browser.close() end_mulco = datetime.now() total_mulco = end_mulco - start_mulco total_mulco = int(total_mulco.total_seconds()) print("[+]Цикл занял " + str(total_mulco) + " sec") return 3600
def start(self): a = time.strftime("%H:%M:%S", time.localtime()) try: fdgc_wb = openpyxl.load_workbook(filename=r'data\crane_stats.xlsx') fdgc_sheet = fdgc_wb['INFO'] fdgc_sheet['L15'] = str(a) fdgc_wb.save(r'data\crane_stats.xlsx') except Exception as err: error_hook.fatal_err( "Не могу получить доступ к файлу 'crane_stats.xlsx'. " "Убедитесь в наличии файла 'crane_stats.xlsx' в папке 'data' и повторите попытку." "\n Файл должен быть закрыт!", err) try: browser = webdriver.Firefox() browser.get("https://multicoinfaucet.com") except Exception as err: error_hook.fatal_err("Не могу зайти на сайт", err) return None time.sleep(2) try: login_but = browser.find_element_by_xpath( '/html/body/section[1]/div/div[3]/a[1]') login_but.click() except Exception as err: error_hook.fatal_err("Не могу найти объект", err) return None time.sleep(2) for i in range(1, 100): try: login_inp = browser.find_element_by_xpath( '//*[@id="username"]') login_inp.send_keys(self.mail) pass_inp = browser.find_element_by_xpath('//*[@id="password"]') pass_inp.send_keys(self.passw) except Exception as err: error_hook.fatal_err("Не могу найти объект", err) return None try: guess = browser.find_element_by_xpath( '//*[@id="visualCaptcha-img-0"]') print("[.]Пытаюсь угадать капчу...") guess.click() except Exception as err: error_hook.fatal_err("Не удалось найти картинку капчи", err) error_hook.screen_grab(browser) try: login_but = browser.find_element_by_xpath( '/html/body/div[2]' '/section/div/div/div' '/form/input[5]') login_but.click() time.sleep(2) goto_btc = browser.find_element_by_xpath( '/html/body/section[1]/div/div[1]/a') goto_btc.click() break except: print("[.]Не угадал, попробую еще раз") continue try: goto_roll = browser.find_element_by_xpath( '/html/body/div[3]/div/div[2]/div[1]/div/div/a') goto_roll.click() except Exception as err: error_hook.fatal_err("Не могу найти объект", err) return None time.sleep(2) print('[+]Я зашел на сайт') return MulCo.roller(self, browser)
def roller(self): a = time.strftime("%H:%M:%S", time.localtime()) try: fdgc_wb = openpyxl.load_workbook(filename=r'data\crane_stats.xlsx') fdgc_sheet = fdgc_wb['INFO'] fdgc_sheet['D15'] = str(a) fdgc_wb.save(r'data\crane_stats.xlsx') except Exception as err: error_hook.fatal_err( "Не могу записать время начала пула. " "Убедитесь в наличии файла 'crane_stats.xlsx' в папке 'data' и повторите попытку." "\n Файл должен быть закрыт!", err) try: browser = webdriver.Firefox(firefox_profile=self.profile) browser.get("https://freedoge.co.in/?op=home") except Exception as err: error_hook.fatal_err("Не могу зайти на сайт", err) return None start_rollFDCO = datetime.now() time.sleep(3) bal_1 = 0.0 bal_2 = 0.0 try: balance = browser.find_element_by_xpath("//*[@id='balance']") bal_1 = float(balance.text) print("[+]Текущий баланс " + str(bal_1) + " DOGE") try: fdgc_wb = openpyxl.load_workbook(filename=r'data\crane_stats.xlsx') fdgc_sheet = fdgc_wb['INFO'] fdgc_sheet.cell(row=4, column=4).value = "%.8f" % bal_1 fdgc_wb.save(r'data\crane_stats.xlsx') except Exception as err: error_hook.fatal_err("Не могу получить доступ к crane_stats.xlsx/INFO", err) except Exception: error_hook.warn_err("Не удалось узнать баланс") time.sleep(5) try: element = browser.find_element_by_xpath('//*[@id="free_play_captcha_types"]') all_options = element.find_elements_by_tag_name("option") print("[+]Выбор из: ") for option in all_options: print("\t - %s" % option.get_attribute("value")) if option.get_attribute("value") == self.captcha_to_use: print("[+]Выбрал " + self.captcha_to_use) option.click() except Exception: error_hook.warn_err("Не удалось выбрать капчу") return FreeDOGECO.check_timer(self, browser) time.sleep(8) solved_cap = RuCaptcha.captcha_solver(self.CAP, self.cap_img, self.cap_api, browser) if not solved_cap: error_hook.warn_err("Не удалось решить капчу") browser.close() return None try: captcha_point = browser.find_element_by_id("adcopy_response") captcha_point.clear() captcha_point.send_keys(str(solved_cap)) except Exception as err: error_hook.fatal_err("Не удалось ввести капчу",err) browser.close() return FreeDOGECO.roller(self) try: # rollbutton = browser.find_element_by_xpath("/html/body/div[3]/div[1]/div[1]/div[2]/p[2]/input[1]") rollbutton = browser.find_element_by_xpath('//*[@id="free_play_form_button"]') browser.execute_script("return arguments[0].scrollIntoView();", rollbutton) rollbutton.click() except Exception: error_hook.warn_err("Не могу найти кнопку [ROLL!].Попробую еще раз...") return FreeDOGECO.check_timer(self, browser) print("[+]Я заролил!") time.sleep(2) try: closebutton = browser.find_element_by_xpath("/html/body/div[11]/a[1]") closebutton.click() except Exception: error_hook.warn_err("Не удалось закрыть всплывающее окно") try: browser.refresh() balance = browser.find_element_by_xpath("//*[@id='balance']") bal_2 = float(balance.text) print("[+]Баланс = " + str(bal_2) + " DOGE") try: fdgc_wb = openpyxl.load_workbook(filename=r'data\crane_stats.xlsx') fdgc_sheet = fdgc_wb['INFO'] fdgc_sheet.cell(row=4, column=4).value = "%.8f" % float(bal_2) fdgc_wb.save(r'data\crane_stats.xlsx') except Exception as err: error_hook.fatal_err("Не могу получить доступ к crane_stats.xlsx/INFO", err) winnings = float(bal_2) - float(bal_1) print("[+]Прибыль = +" + ("%.2f" % winnings) + " DOGE") try: fdgc_wb = openpyxl.load_workbook(filename=r'data\crane_stats.xlsx') fdgc_sheet = fdgc_wb['INFO'] fdgc_sheet.cell(row=5, column=4).value = "%.8f" % float(winnings) if float(fdgc_sheet.cell(row=5, column=4).value) > float(fdgc_sheet.cell(row=6, column=4).value): fdgc_sheet.cell(row=6, column=4).value = "%.8f" % float(winnings) fdgc_wb.save(r'data\crane_stats.xlsx') except Exception as err: error_hook.fatal_err("Не могу получить доступ к crane_stats.xlsx/INFO", err) except Exception: error_hook.warn_err("Не удалось узнать баланс") end_rollFDCO = datetime.now() - start_rollFDCO browser.close() print("[%]Время, затраченное на ролл: " + str(end_rollFDCO)) print("[.]Ожидаю следующего ролла...\n\n") return 3600