• EN
    RU

rucaptcha/recognize_click_captcha

recognize_click_captcha($filename,$textinstructions); - распознать капчу где надо кликать куда либо (кликовая капча). Подробнее можно узнать здесь
Для ее работы используются следующие поля объекта :
  • $this->api_key - API ключ

    Функция на вход принимает параметры:

  • $filename – путь к картинке капчи
  • $textinstructions – Текст того, что нужно выбрать на картинке в кодировке UTF-8. Данный параметр не обязателен, если по картинке понятно куда нужно кликнуть - можно не присылать

  • После отработки функция возвращает результат своей работы в робот :
  • Результат распознования – строка капчи в виде OK|coordinate:x=39,y=59;x=252,y=72 ,где - x и y координаты щелчов капчи или код-строка с ответом об ошибке:
  • ERROR_KEY_DOES_NOT_EXIST - вы использовали неверный captcha ключ в запросе
  • ERROR_WRONG_ID_FORMAT - некорректный идентификатор капчи, принимаются только цифры
  • ERROR_CAPTCHA_UNSOLVABLE - капчу не смогли разгадать 5 разных работников




  • Пример использования recognize_click_captcha (Python):

    # Additional paths
    import sys
    sys.path.insert(0, '../../../Templates PY/')
     
    xhe_host = "127.0.0.1:7013"
    from xweb_human_emulator import *
     
    # начало
    echo("<hr><font color=blue>rucaptcha.xxxxxxxxx</font><hr>")
     
    # API ключ
    rucaptcha.api_key="448b2d538fef6c236092492a947af85b"
     
    # 1 
    echo("1. Перейдем на полигон : ")
    echo(browser.navigate("https://www.google.com/recaptcha/api2/demo"),"<br>")
     
    # 2
    echo("2. Нажмем я не робот : ")
    while not div.get_by_attribute("class","recaptcha-checkbox-checkmark",false,0).is_visibled():
        sleep(1)
    check=div.get_by_attribute("class","recaptcha-checkbox-checkmark",false,0).send_mouse_click(4,4)
    echo(check,"\n")
     
    # 3
    echo("3. Сохраним картинку и вопрос :")
    while not image.get_by_src("www.google.com/recaptcha/api2/payload",false,1).is_visibled():
    	sleep(1)
     
    sleep(3)
    echo(image.screenshot_by_src("test\\tmp.jpeg","www.google.com/recaptcha/api2/payload",false,1)," ")
    # сохраним текст
    desc=div.get_inner_text_by_attribute("class","imageselect-desc",false,1)
    desc = desc.split("\n")
    description=desc[0]+" "+desc[1];
    echo(description,"<br>")
     
    # распознаем капчу - как ту где нужно сделать клики
    solution=rucaptcha.recognize_click_captcha("test\\tmp.jpeg",description)
     
    # 5 coordinates:x=186,y=64;x=313,y=72;x=316,y=198
    echo("5. Кликнем по полученным координатам : \n\n")
    if solution.find("coordinates:")!=-1:
     
    	solution=solution.replace("coordinates:","")
    	solution=solution.replace(";",",")
    	coords=solution.split(",")
    	img = image.get_by_src("www.google.com/recaptcha/api2/payload",false,1)
    	img .focus()
    	for i in range(0,len(coords),2):
    		x=coords[i].replace("x=","",)
    		y=coords[i+1].replace("y=","")
    		echo("click at ("+x+"  "+y+") : на картинке капчи : ")
    		echo(image.get_by_src("recaptcha/api2/payload",false,1).send_mouse_move(x,y)," ")
    		sleep(0.05)
    		echo(image.get_by_src("recaptcha/api2/payload",false,1).send_mouse_click(x,y),"\n")
    	#usleep(mt_rand(300000,1000000)))
    	echo("\n")
     
    # конец
    echo("<hr><br>")
     
    # Quit
    app.quit()