示例#1
0
文件: uploader.py 项目: ffx-n/vk_api
def sendd_comment(num,access_token):
    global image_link
    response = requests.post(f'https://api.vk.com/method/wall.post?owner_id={owner_ids[num]}&from_group=0&message={messages[random.randint(0,len(messages)-1)]}&access_token={access_token}&v={version}')
    text = response.json()
    try:
        if len(text['response']) > 0:
            print(f'Отправил комментарий в группе - {owner_ids[num]}')
    except:
        print('Разгадываю капчу')
    balance = check_balance(RUCAPTCHA_KEY)
    if float(balance)>0:
        try:
            sid = text['error']['captcha_sid']
            image_link = text['error']['captcha_img']
            user_answer = ImageCaptcha.ImageCaptcha(rucaptcha_key=RUCAPTCHA_KEY).captcha_handler(captcha_link=image_link)
            if not user_answer['error']:
                # решение капчи
                key = user_answer['captchaSolve']
            elif user_answer['error']:
                # Тело ошибки, если есть
                print(user_answer['errorBody']['text'])
                print(user_answer['errorBody']['id'])
            response_second = requests.post(f'https://api.vk.com/method/wall.post?owner_id={owner_ids[num]}&from_group=0&message={messages[random.randint(0, len(messages) - 1)]}&captcha_sid={sid}&captcha_key={key}&access_token={access_token}&v={version}')
            otvet = response_second.json()
            if len(otvet['response'])>0:
                print(f'Отправил комментарий в группе - {owner_ids[num]}')
            #print(response_second.json())
        except:
            print('error! Возможно, группа не запрашивает капчу, либо закончились деньги')
            print(f'Отправил комментарий в группе - {owner_ids[num]}')
    else:
        print('Работа остановлена, т.к баланс ниже указанного')
示例#2
0
    def login(self) -> requests.Session:
        try:
            login_response = self._send_login_request()
            self._check_for_captcha(login_response)
        except CaptchaRequired as e:
            image_link = 'https://store.steampowered.com/login/rendercaptcha/?gid={}'.format(
                e.captcha_gid)
            user_answer = ImageCaptcha.ImageCaptcha(
                rucaptcha_key=self.rucaptcha_key).captcha_handler(
                    captcha_link=image_link, **self.rucaptcha_kwargs)

            if user_answer['error']:
                raise RuCaptchaError(user_answer['error'])

            login_response = self._send_login_request({
                'captcha_text':
                user_answer['captchaSolve'],
                'captchagid':
                e.captcha_gid
            })

        self._check_for_captcha(login_response)

        login_response = self._enter_steam_guard_if_necessary(login_response)
        self._assert_valid_credentials(login_response)
        self._perform_redirects(login_response.json())
        self.set_sessionid_cookies()
        return self.session
示例#3
0
async def aiocontext():
    with ImageCaptcha.aioImageCaptcha(rucaptcha_key=RUCAPTCHA_KEY,
                                      img_path='test_files',
                                      img_clearing=True,
                                      save_format='const',
                                      debug_dump=1) as img_captcha:
        result = await img_captcha.captcha_handler(captcha_link=image_link)
        print(result)
示例#4
0
    def _solve_captcha(self, rw, content, new_hook):
        """
        Проходим капчу и возвращаем страницу с результатом
        :param rw: драйвер
        :param content: контент страницы
        :param new_hook: ссылка
        :return: None или контент страницы после решения капчи
        """
        count = 0
        # тридцать попыток решить капчу
        while count < 30:
            key = content.xpath('//input[@name="key"]/@value')[0]
            try:
                img_url = content.xpath(
                    '//div[@class="captcha__image"]/img/@src')[0]
            except IndexError:
                return None

            rw.get(img_url)
            imgs = fromstring(rw.page_source)
            img_url = imgs.xpath('//img/@src')[0]
            rw.get(img_url)
            logger.info(
                f'Пытаемся получить итоговую картинку капчи и скачать ее {img_url}'
            )

            headers = {
                "User-Agent":
                "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"
            }
            s = requests.session()
            s.headers.update(headers)
            for cookie in rw.get_cookies():
                c = {cookie['name']: cookie['value']}
                s.cookies.update(c)

            r = s.get(img_url, allow_redirects=True)
            open('captcha' + '.jpeg', 'wb').write(r.content)

            answer = ImageCaptcha.ImageCaptcha(
                rucaptcha_key=RUCAPTCHA_KEY, sleep_time=15,
                save_format='temp').captcha_handler(
                    captcha_file='captcha.jpeg')
            if answer is None:
                answer = ''
            answer = answer.get('captchaSolve')
            new_hook[0] = new_hook[0].replace(':', '%3A').replace(
                '?', '%3F').replace('=', '%3D').replace('&', '%26')
            url = f'https://{self.origin}/checkcaptcha?key={key}&retpath={new_hook[0]}&rep={answer}'

            rw.get(url)
            content = fromstring(rw.page_source)
            if content is not None:  # бывает когда content == None
                new_hook = content.xpath('//input[@name="retpath"]/@value')
                logger.info(f'new_hook 1: {new_hook}')
                if len(new_hook) == 0:
                    return content
            count += 1
示例#5
0
文件: miner.py 项目: sew0ns/MinerIVI
def captcha_handler(captcha):
    print(colorama.Fore.MAGENTA + '[' + datetime.strftime(datetime.now(), "%H:%M:%S") + '] ' + 'Решение капчи... Пожалуйста, подождите...' + colorama.Fore.RESET)
    image_link = captcha.get_url()
    user_answer = ImageCaptcha.ImageCaptcha(rucaptcha_key=ru_key).captcha_handler(captcha_link=image_link)
    if not user_answer['error']:
        key = user_answer['captchaSolve']
    elif user_answer['error']:
        print(user_answer['errorBody']['text'])
        print(user_answer['errorBody']['id'])
    return captcha.try_again(key)
示例#6
0
def captcha_solve(captcha_link):
    from python_rucaptcha import ImageCaptcha,RuCaptchaControl
    answer = RuCaptchaControl.RuCaptchaControl(
        rucaptcha_key=RUCAPTCHA_KEY
    ).additional_methods(action="getbalance")
    print("Checking Rucaptcha balance: ", answer['serverAnswer'])
    image_link = captcha_link
    user_answer = ImageCaptcha.ImageCaptcha(rucaptcha_key=RUCAPTCHA_KEY).captcha_handler(captcha_link=image_link)

    if not user_answer['error']:
        # решение капчи
        # print(user_answer['captchaSolve'])
        # print(user_answer['taskId'])
        return user_answer['captchaSolve']
    elif user_answer['error']:
        # Тело ошибки, если есть
        print(user_answer['errorBody']['text'])
        print(user_answer['errorBody']['id'])
        return None
示例#7
0
    def __decide(self):
        user_answer_full = ImageCaptcha.ImageCaptcha(
            rucaptcha_key=self.__Token,
            service_type='rucaptcha',
            save_format="temp",
            phrase=0,
            regsense=0,
            numeric=0,
            calc=0,
            min_len=0,
            max_len=0,
            language=0,
            textinstructions="",
            pingback="",
        ).captcha_handler(captcha_link=self.__Image, verify=True, proxies={})

        if not user_answer_full["error"]:
            # решение капчи
            self.__Task_id = user_answer_full["taskId"]
            return user_answer_full["captchaSolve"]
        elif user_answer_full["error"]:
            # Тело ошибки, если есть
            print(user_answer_full["errorBody"]["text"])
            print(user_answer_full["errorBody"]["id"])
示例#8
0
# Введите ключ от рукапчи из своего аккаунта
RUCAPTCHA_KEY = "2597d7cb1f9435a3b531ac283ce987d5"
# Для получения ссылки на обычную капчу нужно послать GET запрос с соответствующим парметром
image_link = requests.get(
    "http://85.255.8.26/api/", params={"captcha_type": "get_common_captcha"}
).json()["captcha_src"]

"""
contextmanager пример
"""

# синхронный пример contextmanager
with ImageCaptcha.ImageCaptcha(
    rucaptcha_key=RUCAPTCHA_KEY,
    img_path="test_files",
    img_clearing=True,
    save_format="const",
    debug_dump=1,
) as img_captcha:
    result = img_captcha.captcha_handler(captcha_link=image_link)
    print(result)

# асинхронный пример contextmanager
async def aiocontext():
    with ImageCaptcha.aioImageCaptcha(
        rucaptcha_key=RUCAPTCHA_KEY,
        img_path="test_files",
        img_clearing=True,
        save_format="const",
        debug_dump=1,
    ) as img_captcha:
# Для получения ссылки на обычную капчу нужно послать GET запрос с соответствующим парметром
image_link = requests.get("http://85.255.8.26/api/",
                          params={
                              "captcha_type": "get_common_captcha"
                          }).json()["captcha_src"]
"""
Синхронный метод
"""
"""
Тут нужно воспользоваться бибилотекой, отослать на решение ссылку на капчу и получить ответ
далее его записать в user_answer
Первый пример демонстрирует сохранеие файла изображения как обычного файла в папу
"""
user_answer_const = ImageCaptcha.ImageCaptcha(
    rucaptcha_key=RUCAPTCHA_KEY,
    img_path='test_filels',
    img_clearing=False,
    save_format='const').captcha_handler(captcha_link=image_link)
"""
Второй пример демонстрирует сохранения файла как временного (temporary) - это стандартный вариант сохранения. 
Было выяснено, что он не работает с некоторыми видами капч - если возникают проблемы, то стоит использовать первый 
вариант
"""
user_answer_temp = ImageCaptcha.ImageCaptcha(
    rucaptcha_key=RUCAPTCHA_KEY,
    save_format='temp').captcha_handler(captcha_link=image_link)
"""
Пример работы с передачей файла капчи уже закодированного в base64
An example of working with captcha file already encoded in base64
"""
# закодировано: 976979
1. Получить ссылку на изображение капчи(сртрока 15 в примере)
2. Передать эту ссылку в модуль ImageCaptcha(строка 20 в примере)
"""
# Введите ключ от рукапчи из своего аккаунта
RUCAPTCHA_KEY = ''
# Для получения ссылки на обычную капчу нужно послать GET запрос с соответствующим парметром
image_link = requests.get("http://85.255.8.26/api/",
						  params = {"captcha_type": "get_common_captcha"}).json()["captcha_src"]
"""
Тут нужно воспользоваться бибилотекой, отослать на решение ссылку на капчу и получить ответ
далее его записать в user_answer


Первый пример демонстрирует сохранеие файла изображения как обычного файла в папу
"""
user_answer_const = ImageCaptcha.ImageCaptcha(rucaptcha_key = RUCAPTCHA_KEY,
											  save_format = 'const').captcha_handler(captcha_link = image_link)

"""
Второй пример демонстрирует сохранения файла как временного (temporary) - это стандартный вариант сохранения. 
Было выяснено, что он не работает с некоторыми видами капч - если возникают проблемы, то стоит использовать первый 
вариант
"""
user_answer_temp = ImageCaptcha.ImageCaptcha(rucaptcha_key = RUCAPTCHA_KEY,
											 save_format = 'temp').captcha_handler(captcha_link = image_link)

'''
user_answer_... - это JSON строка с соответствующими полями

captchaSolve - решение капчи,
taskId - находится Id задачи на решение капчи,
errorId - 0 - если всё хорошо, 1 - если есть ошибка,
示例#11
0
		spl = el.split(" ")
		login = spl[0]
		password = spl[1]
		apivk = req.url_check(login, password)
		if('access_token' in apivk):
			save.write(apivk['access_token'] + '\r\n')
			valid += 1
		else:
			print('Error: ' + apivk['error'])
			if(apivk['error'] == 'need_captcha'):
				idstr = req.save_image(apivk['captcha_img'])
				# Ссылка на изображения для расшифровки
				captcha_file = "temp/" + idstr + ".jpg"

				# Возвращается строка-расшифровка капчи
				user_answer = ImageCaptcha.ImageCaptcha(rucaptcha_key=RUCAPTCHA_KEY).captcha_handler(captcha_file=captcha_file)
				if user_answer['errorId'] == 0:
					# решение капчи
					# print(user_answer['captchaSolve'])
					# user_answer['taskId']
					apivk1 = req.url_check(login, password, idstr, user_answer['captchaSolve'])
					if('access_token' in apivk1):
						save.write(apivk1['access_token'] + '\r\n')
						valid += 1
					else:
						if(apivk1['error'] == 'need_captcha'):
							err += 1
				elif user_answer['errorId'] == 1:
					# Тело ошибки, если есть
					print(user_answer['taskId'])
					print(user_answer['errorBody'])
示例#12
0
def get_tables_massive(words):
    n = 0
    while n < 10:
        try:
            n = +1
            login = '******'
            password = '******'
            options = webdriver.ChromeOptions()
            options.add_argument("--headless")  # Runs Chrome in headless mode.
            #options.add_argument('--no-sandbox') # # Bypass OS security model
            #options.add_argument('start-maximized')
            options.add_argument('disable-infobars')
            options.add_argument("--disable-extensions")
            browser = webdriver.Chrome(
                r'/home/egorholin/wordstat/chromedriver.exe', options=options)
            url = "https://wordstat.yandex.ru/#!/history?period=weekly"
            browser.get(url)
            elem = browser.find_element_by_xpath(
                '//a[@href="' +
                'https://passport.yandex.ru/passport?mode=auth&msg=&retpath=https%3A%2F%2Fwordstat.yandex.ru%2F'
                + '"]')
            elem.click()
            elem = browser.find_element_by_id('b-domik_popup-username')
            elem.send_keys(login)
            sleep(random.randint(5, 10) / 10)
            elem = browser.find_element_by_id('b-domik_popup-password')
            elem.send_keys(password)
            sleep(random.randint(5, 10) / 10)
            button = browser.find_element_by_css_selector(
                'span.b-form-button_valign_middle:nth-child(1)')
            sleep(random.randint(5, 10) / 10)
            button.click()
            sleep(random.randint(5, 10) / 10)
            captcha = browser.find_element_by_css_selector(
                'td[class="b-popupa__image-td"]')
            sleep(random.randint(5, 10) / 10)
            soup = BeautifulSoup(captcha.get_attribute('innerHTML'),
                                 'html.parser')
            print(captcha.get_attribute('innerHTML'))
            captcha_link = 'https:' + soup.img['src']
            print(captcha_link)
            user_answer_temp = ImageCaptcha.ImageCaptcha(
                rucaptcha_key='0854df904af0d822315b96b6b0d210ef',
                save_format="temp").captcha_handler(captcha_link=captcha_link)
            answer = str(user_answer_temp['captchaSolve'])
            sleep(random.randint(5, 10) / 10)
            elem = browser.find_elements_by_css_selector(
                'input[class="b-form-input__input"]')[1]
            elem.send_keys(answer)
            sleep(random.randint(5, 10) / 5)
            button2 = browser.find_elements_by_css_selector(
                'input[class="b-form-button__input"]')[1]
            sleep(random.randint(5, 10) / 5)
            button2.click()
            sleep(random.randint(5, 10) / 5)
            sleep(random.randint(5, 10) / 10)
            #             elem=browser.find_elements_by_css_selector('input[class="b-form-input__input"]')[0]
            #             sleep(random.randint(5, 10)/10)
            #             elem.send_keys('test')
            #             sleep(random.randint(5, 10)/10)
            #             button3=browser.find_elements_by_css_selector('input[class="b-form-button__input"]')[0]
            #             button3.click()
            #             browser.find_elements_by_css_selector('input[class="b-form-input__input"]')[0].clear()
            print(' captcha has been solved ')
            for word in words:
                k = 0
                while k < 5:
                    try:

                        sleep(random.randint(5, 10) / 10)
                        elem = browser.find_elements_by_css_selector(
                            'input[class="b-form-input__input"]')[0]
                        sleep(random.randint(5, 10) / 10)
                        elem.send_keys(word)
                        sleep(random.randint(5, 10) / 10)
                        button3 = browser.find_elements_by_css_selector(
                            'input[class="b-form-button__input"]')[0]
                        button3.click()
                        sleep(random.randint(5, 10) / 15)
                        sleep(random.randint(5, 10) / 6)
                        element = WebDriverWait(browser, 30).until_not(
                            EC.element_to_be_clickable((
                                By.CSS_SELECTOR,
                                'div.b-spin.b-spin_size_45.b-spin_theme_grey-45.b-spin_progress_yes.i-bem.b-spin_js_inited'
                            )))
                        sleep(random.randint(5, 10) / 6)
                        content = browser.page_source
                        soup = BeautifulSoup(content, 'html.parser')
                        dates1 = []
                        numbers1 = []
                        for text in soup.find_all("tr", class_=["even",
                                                                "odd"]):
                            dates1.append(text.find("td").text)
                            numbers1.append(
                                text.find("td",
                                          class_="b-history__value-td").text)
                        for n in range(len(numbers1)):
                            numbers1[n] = int(numbers1[n])
                        browser.find_elements_by_css_selector(
                            'input[class="b-form-input__input"]')[0].clear()
                        data = pd.DataFrame()
                        data['dates'] = dates1
                        data[['First',
                              'Last']] = data.dates.str.split("-",
                                                              n=1,
                                                              expand=True)
                        data['First'] = pd.to_datetime(data['First'],
                                                       dayfirst=True)
                        data['Last'] = pd.to_datetime(data['Last'],
                                                      dayfirst=True)
                        data = data.drop(columns='dates')
                        data['numbers'] = numbers1
                        data['brand'] = word
                        products[word] = data
                        print('{} is parsed '.format(word))
                        print(data['numbers'][0])
                        break
                    except Exception as e:
                        print(e)
                        continue

            break
        except Exception as e:
            print(e)
            browser.quit()
            continue
    browser.quit()
    return products