Web / 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 разных работников

    Пример использования (PHP):
    ===============================================================

    <?php
     
    // подключим объект для управления эмулятором, если еще не подключен
    if (!isset($path))
      $path="../../../Templates/xweb_human_emulator.php";
    require($path);
     
    // начало
    echo "<hr><font color=blue>rucaptcha->".basename (__FILE__)."</font><hr>";
     
    // API ключ
    $rucaptcha->api_key="cdbecaf74aaf1aadafbd97189886ab92";
     
    // 1 
    echo "1. Перейдем на полигон : ";
    echo $browser->navigate("https://www.google.com/recaptcha/api2/demo")."<br>";
     
    // 2
    echo("2. Нажмем я не робот : ");
    while (!$div->get_by_attribute("class","recaptcha-checkbox-checkmark",false,0)->is_visibled())sleep(1);
    echo $check=$div->get_by_attribute("class","recaptcha-checkbox-checkmark",false,0)->send_mouse_click(mt_rand(1,4),mt_rand(1,4))."\n";
     
    // 3
    echo "3. Сохраним картинку и вопрос :";
    while (!$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)." ";
    // сохраним текст
    echo $describtion=explode("\n",$div->get_inner_text_by_attribute("class","imageselect-desc",false,1))[0];
     
    // 4 
    // преобразуемв UTF для отправки в сервис рукапчи
    $describtion=iconv("windows-1251","utf-8",$describtion);
    // распознаем капчу - как ту где нужно сделать клики
    $solution=$rucaptcha->recognize_click_captcha("test\\tmp.jpeg",$describtion);
     
    // 5
    echo "5. Кликнем по полученным координатам : \n\n";
    if (strpos($solution,"coordinates:")!=-1)
    {
    	$solution=str_replace("coordinates:","",$solution);
       $solution=str_replace(";",",",$solution);
    	$coords=explode(",",$solution);
       $image->get_by_src("test\\tmp.jpeg","www.google.com/recaptcha/api2/payload",false,1)->focus();   
    	for ($i=0;$i<count($coords);$i+=2)
    	{	
    		$x=str_replace("x=","",$coords[$i])	;
    		$y=str_replace("y=","",$coords[$i+1]);
    		echo "click at (".$x."  ".$y.") : на картинке капчи : ";				
    		echo $image->get_by_src("recaptcha/api2/payload",false,1)->send_mouse_move($x,$y)." ";				
    		usleep(50000);
    		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();
    ?>

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

    ?# Additional paths
    import sys
    sys.path.insert(0, '../../../Templates PY/')
     
    xhe_host = "127.0.0.1:7010"
    from xweb_human_emulator import *
     
    # начало
    echo("<hr><font color=blue>rucaptcha.recognize_click_captcha</font><hr>")
     
    # API ключ
    rucaptcha.api_key="cdbecaf74aaf1aadafbd97189886ab92"
     
    # 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(mt_rand(1,4),mt_rand(1,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)," ")
    # сохраним текст
    echo(describtion=explode("\n",div.get_inner_text_by_attribute("class","imageselect-desc",false,1))[0])
     
    # 4 
    # преобразуемв UTF для отправки в сервис рукапчи
    describtion=iconv("windows-1251","utf-8",describtion)
    # распознаем капчу - как ту где нужно сделать клики
    solution=rucaptcha.recognize_click_captcha("test\\tmp.jpeg",describtion)
     
    # 5
    echo("5. Кликнем по полученным координатам : \n\n")
    if solution.find("coordinates:")!=-1:
        solution=solution.replace("coordinates:","")
        solution=solution.replace(")",",")
        coords=explode(",",solution)
        image.get_by_src("test\\tmp.jpeg","www.google.com/recaptcha/api2/payload",false,1).focus()
        for i in range(0,len(coords),2):
            x=coords[i].replace("x=","",)
            y=coords[i+1].replace("y=","")
            echo("click at ("+str(x)+"  "+str(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()

    Пример использования (C#):
    ===============================================================

     

    Пример использования (JS):
    ===============================================================

    // подключим объект для управления эмулятором, если еще не подключен
    xhe_host="127.0.0.1:7010";
    echo=require("../../../Templates JS/xweb_human_emulator.js");
     
    // начало
    echo("<hr><font color=blue>rucaptcha.recognize_click_captcha</font><hr>");
     
    // API ключ
    rucaptcha.api_key="");
     
    // 1 шаг
    echo("1. Перейдем на полигон : ");
    echo(browser.navigate("http://www.humanemulator.net/poligon/image.html")+"<br>");
     
    // 2 шаг
    echo("2. Распознать каптчу используя сервис rucaptcha.com (как выбор картинок) : ");
    echo(image.screenshot_by_src("tmp/1.jpg","like_image",false)+" ");
    echo(rucaptcha.recognize_click_captcha(debug.get_cur_script_folder()."tmp\\1.jpg","")+"\n");
     
    // 3 шаг
    echo("3. Выведем информацию : ");
    echo(rucaptcha.get_last_capcha_filename()+" ");
    echo(rucaptcha.get_last_capcha_id()+" ");
    echo(rucaptcha.get_last_capcha_result()+"<br>");
     
    // 4 шаг
    echo("4. Зададим парамтеры распозанняи по умолчанию : ");
    echo(rucaptcha.set_default_params();
     
    // конец
    echo("<hr><br>");
     
    // Quit
    app.quit();

    =============================================
    RuCaptcha     Объекты    DOM  System  Web  Window        
    =============================================
    если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум по автоматизации бизнеса
    .