Наш основной сайт



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 $xhe_host = "127.0.0.1:7010";
     
    // подключим объект для управления эмулятором, если еще не подключен
    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="";
     
    // 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("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";
    }
     
    $btn->click_by_id("recaptcha-verify-button", "1");
     
     
    // конец
    echo "<hr><br>";
     
    // Quit
    $app->quit();
    ?>

    Пример использования (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()

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

    #region using
     
    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    using System.Linq;
    using System.IO;
    using System.Text;
    using System.Threading;
     
    using XHE;
    using XHE.XHE_DOM;
    using XHE.XHE_System;
    using XHE.XHE_Window;
    using XHE.XHE_Web;
     
    #endregion
     
     class Program:XHEScript
     {
    	  static void Main(string[] args)
    	  {
    			// init XHE
    			server="127.0.0.1:7010";
    			InitXHE();
     
    			// начало
    			echo("<hr><font color=blue>rucaptcha.recognize_click_captcha</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 (!div.get_by_attribute("class","recaptcha-checkbox-checkmark",0,"0").is_visibled()){sleep(1);}
     
    			bool check=div.get_by_attribute("class","recaptcha-checkbox-checkmark",0,"0").send_mouse_click(4,4);
    			echo (check.ToString()+"\n");   
     
    			// 3
    			echo ("3. Сохраним картинку и вопрос :");
    			while (!image.get_by_src("www.google.com/recaptcha/api2/payload",0,"1").is_visibled()) {sleep(1);}
                sleep(3);
    			image.screenshot_by_src("test\\tmp.jpeg","www.google.com/recaptcha/api2/payload",0,"1");
    			// сохраним текст
                string sText = div.get_inner_text_by_attribute("class","imageselect-desc",0,"1");
    			string description=sText.Split('\n')[0];
                echo(description+"\n");
     
    			// 4 
    			// преобразуемв UTF для отправки в сервис рукапчи
    			//description=iconv("windows-1251","utf-8",description);
    			// распознаем капчу - как ту где нужно сделать клики
    			string solution=rucaptcha.recognize_click_captcha("test\\tmp.jpeg",description);
     
    			// 5
    			echo ("5. Кликнем по полученным координатам : \n\n");
    			if (solution.IndexOf("coordinates:")!=-1)
    			{
    				solution=solution.Replace("coordinates:","");
    				solution=solution.Replace(";",",");
    				string[] coords=solution.Split(',');
    				image.get_by_src("www.google.com/recaptcha/api2/payload",0,"1").focus();   
    				for (int i=0;i<coords.Length;i+=2)
    				{	
    					string x=coords[i].Replace("x=","");
    					string y=coords[i+1].Replace("y=","");
    					echo ("click at ("+x+"  "+y+") : на картинке капчи : ");				
    					echo (image.get_by_src("recaptcha/api2/payload",0,"1").send_mouse_move(Convert.ToInt32(x),Convert.ToInt32(y))+" ");				
    					sleep(5);
    					echo (image.get_by_src("recaptcha/api2/payload",0,"1").send_mouse_click(Convert.ToInt32(x),Convert.ToInt32(y))+"\n");
    					sleep(3);
    				}
    				echo("\n");
    			}
     
     
    			btn.click_by_id("recaptcha-verify-button", 1);
    			// конец
    			echo("<hr><br>");
     
    			app.quit();            
    	  }
    }

    Пример использования (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  Vision  Web  Window        
    =============================================
    если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум
    .