• EN
    РУ

rucaptcha/recognize_geetest

recognize_geetest(pageurl, gt, challenge, api_server="", proxy="", proxytype=""); - данная функция позволяет распознать geetest капчу.
Функция на вход принимает параметры:
  • pageurl - url страницы с капчей.
  • gt - ID капчи.
  • challenge - номер вызова, уникальный идентификатор процесса проверки.
  • api_server - параметры сервера API.
  • proxy - параметры proxy.
  • proxytype - тип proxy.

  • После отработки функция возвращает результат своей работы в робот:
    • Результат распознования
    • Код ошибки




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

    <?php $xhe_host = "127.0.0.1:7010";
     
    // подключим объект для управления эмулятором, если еще не подключен
    if (!isset($path))
      $path="../../../Templates/init.php";
    require($path);
     
    // начало
    echo "<hr><font color=blue>rucaptcha->".basename (__FILE__)."</font><hr>";
     
    // API ключ
    $rucaptcha->api_key="448b2d538fef6c236092492a947af85b";
     
    // 1 
    echo "1. Перейдем на полигон для тестирования geetest капчи: ";
    echo $browser->navigate("https://www.geetest.com/en")."<br>";
    // перейдём на пример капчи
    $anchor->click_by_inner_text("Demo");
    sleep(1);
    $li->set_focus_by_number(10);
     
    // 2 
    echo "2. Распознать geetest капчу используя сервис rucaptcha.com : <br>";
     
    // данные для отправки на сайт
    $api_server="api.geetest.com";
     
    $date = new DateTime();
    echo $t=$date->getTimestamp();
    echo "<br>";
    // получить gt и challenge для отправки на сервис
    echo $res = file_get_contents("https://www.geetest.com/demo/gt/register-enFullpage-official?t=$t");
    echo "<br>";
    // разбеёрм полученные данные из ответа
    $gt = get_string($res, '"gt":"', '",');
    $challenge = get_string($res, '"challenge":"', '",');
    echo "gt=$gt<br>challenge=$challenge<br>";
    echo "<br>";
    // отправляем запрос на сервис
    $result = $rucaptcha->recognize_geetest("https://www.geetest.com/en", $gt, $challenge, $api_server);
     
    // разбираем ответ от сервиса
    $geetest_challenge=get_string($result, 'geetest_challenge":"', '",');
    $geetest_validate=get_string($result, 'geetest_validate":"', '",');
    $geetest_seccode=get_string($result, 'geetest_seccode":"', '"');
     
    // полученный результат вводим в поля 
    $hiddeninput->set_value_by_name("geetest_challenge", $geetest_challenge);
    $hiddeninput->set_value_by_name("geetest_validate", $geetest_validate);
    $hiddeninput->set_value_by_name("geetest_seccode", $geetest_seccode);
     
    // нажимем на кнопку Click to verify
    $span->click_by_inner_text("Click to verify");
     
    // конец
    echo "<hr><br>";
     
    // разобрать строку по префиксам
    function get_string($str1, $pr1, $pr2, &$ind_st = 0)
    {
    	//получаем стартовый индекс
    	$ind1 = strpos($str1, $pr1, $ind_st);
    	if($ind1 === false)
    	{
    		return "";
    	}
    	$ind1_1 = $ind1 + strlen($pr1);
    	//получаем финишный индекс
    	$ind2 = strpos($str1, $pr2, $ind1_1);
    	if ($ind2 === false)
    	{
    		return "";
    	}
    	// получим результат
    	$sres = substr($str1, $ind1 + strlen($pr1), $ind2 - $ind1_1);
    	return trim($sres); 
    }
     
    // Quit
    $app->quit();
    ?>

    Пример использования recognize_geetest (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 System.Net;
     
    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</font><hr>");
     
    			// API ключ
    			rucaptcha.api_key="448b2d538fef6c236092492a947af85b";
     
    			// 1 
    			echo ("1. Перейдем на полигон для тестирования geetest капчи : ");
    			echo (browser.navigate("https://www.geetest.com/en")+"<br>");
     
     
    			// перейдём на пример капчи
    			anchor.click_by_inner_text("Demo");
    			sleep(1);
    			li.set_focus_by_number(10);
     
    			// 2 
    			echo ("2. Распознать geetest капчу используя сервис rucaptcha.com : <br>");
     
    			// данные для отправки на сайт
    			string api_server="api.geetest.com";
     
    			var timeStamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
    			echo (timeStamp + "<br>");
    			byte[] res = null;
    			// получить gt и challenge для отправки на сервис
    			using (var webClient = new WebClient())
    			{
    				res = webClient.DownloadData("https://www.geetest.com/demo/gt/register-enFullpage-official?t="+timeStamp);
    			}
     
    			string sRes = Encoding.UTF8.GetString(res);
    			echo (sRes+ "<br>");
     
                // разбеёрм полученные данные из ответа
    			string gt = get_string(sRes, "\"gt\":\"", "\",");
    			string challenge = get_string(sRes, "\"challenge\":\"", "\",");
    			echo ("gt="+gt+"<br>challenge="+challenge+"<br>");
     
    			// отправляем запрос на сервис
    			string result = rucaptcha.recognize_geetest("https://www.geetest.com/en", gt, challenge, api_server);
                echo ("ответ сервера : "+result+"<br>");
    			// разбираем ответ от сервиса
    			string geetest_challenge=get_string(result, "geetest_challenge\":\"", "\",");
    			string geetest_validate=get_string(result, "geetest_validate\":\"", "\",");
    			string geetest_seccode=get_string(result, "geetest_seccode\":\"", "\"");
     
                echo ("geetest_challenge="+geetest_challenge+"<br>geetest_validate="+geetest_validate+"<br>geetest_seccode="+geetest_seccode+"<br>");
     
    			// полученный результат вводим в поля 
    			hiddeninput.set_value_by_name("geetest_challenge", geetest_challenge);
    			hiddeninput.set_value_by_name("geetest_validate", geetest_validate);
    			hiddeninput.set_value_by_name("geetest_seccode", geetest_seccode);
     
    			// нажимем на кнопку Click to verify
    			span.click_by_inner_text("Click to verify");
     
    			// конец
    			echo("<hr><br>");
     
    			app.quit();            
    	  }
     
    	// разобрать строку по префиксам
    	public static string get_string(string str1, string pr1, string pr2, int ind_st=0)
    	{
    		//получаем стартовый индекс
    		int ind1 = str1.IndexOf(pr1, ind_st);
    		if(ind1 ==-1)
    		{
    			return "";
    		}
     
    		int ind1_1 = ind1 + pr1.Length;
     
    		//получаем финишный индекс
    		int ind2 = str1.IndexOf(pr2, ind1_1);
    		if (ind2 == -1)
    		{
    			return "";
    		}
     
    		ind_st=ind2;
    		// получим результат
    		string sres = str1.Substring (ind1 + pr1.Length, ind2 - ind1_1);
    		return sres.Trim(); 
    	}
    }

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

    # Additional paths
    import sys
    sys.path.insert(0, '../../../Templates PY/')
     
    xhe_host = "127.0.0.1:7011"
    from xweb_human_emulator import *
     
    # разобрать строку по префиксам
    def get_string(str1, pr1, pr2, ind_st = 0):
    	#получаем стартовый индекс
    	ind1 = str1.find(pr1, ind_st)
    	if ind1 == -1:
    	   return ""
     
    	ind1_1 = ind1 + len(pr1)
    	#получаем финишный индекс
    	ind2 = str1.find(pr2, ind1_1)
    	if ind2 == -1:
    		return ""
     
    	# получим результат s = s[ beginning : beginning + LENGTH]
    	sres = str1[ind1 + len(pr1):ind1 + len(pr1)+ind2 - ind1_1]
    	return sres.strip() 
     
    # начало
    echo("<hr><font color=blue>rucaptcha.xxxxxxxxx</font><hr>")
     
    # API ключ
    rucaptcha.api_key="448b2d538fef6c236092492a947af85b"
     
    # 1 
    echo("1. Перейдем на полигон для тестирования geetest капчи: ")
    echo(browser.navigate("https://www.geetest.com/en"),"<br>")
     
     
    # перейдём на пример капчи
    anchor.click_by_inner_text("Demo")
    sleep(1)
    li.set_focus_by_number(10)
     
    # 2 
    echo( "2. Распознать geetest капчу используя сервис rucaptcha.com : <br>")
     
    # данные для отправки на сайт
    api_server="api.geetest.com"
    t=round(time.time())
    echo(str(t)+"<br>")
     
     
    # получить gt и challenge для отправки на сервис
    #res =  requests.get('https:#www.geetest.com/demo/gt/register-enFullpage-official?t='+t)  
    res = '{"success":1,"challenge":"2190803726550c5d316c7289ed5ccb80","gt":"7b8ee24aa22172edf436fbaf851ff96c","new_captcha":true}'#browser.send_get_query("https://www.geetest.com/demo/gt/register-enFullpage-official",'t='+str(t))
    echo ("answer:"+res+"<br>")
     
    # разбеёрм полученные данные из ответа
    gt = get_string(res, '"gt":"', '",')
    challenge = get_string(res, '"challenge":"', '",')
    echo("gt="+gt+"<br>challenge="+challenge+"<br>")
     
    # отправляем запрос на сервис
    result = rucaptcha.recognize_geetest("https://www.geetest.com/en", gt, challenge, api_server)
     
    # разбираем ответ от сервиса
    geetest_challenge=get_string(result, 'geetest_challenge":"', '",')
    geetest_validate=get_string(result, 'geetest_validate":"', '",')
    geetest_seccode=get_string(result, 'geetest_seccode":"', '",')
     
    # полученный результат вводим в поля 
    hiddeninput.set_value_by_name("geetest_challenge", geetest_challenge)
    hiddeninput.set_value_by_name("geetest_validate", geetest_validate)
    hiddeninput.set_value_by_name("geetest_seccode", geetest_seccode)
     
    # нажимем на кнопку Click to verify
    span.click_by_inner_text("Click to verify")
     
    # конец
    echo("<hr><br>")
     
    # Quit
    app.quit()