Основной сайт хуманэмулятор.рф  |  Демо  |  Купить  |  API  |  Wiki



Web / 2captcha



recognize_geetest

recognize_geetest($pageurl,$gt,$challenge,$api_server='',$proxy='',$proxytype=''); - Распознать GeeTest капчу

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

  • $pageurl – Полный URL страницы, на которой вы решаете ReCaptcha V2
  • $gt – Публичный ключ домена
  • $challenge – Меняющийся ключ. Убедитесь, что получаете каждый раз новый ключ для каждой капчи, иначе вы будете платить за каждую капчу с ошибкой. Требуется для версии 3. Не требуется для версии 4
  • $api_server – Опциональный поддомен API. Может потребоваться для некоторых имплементаций.
  • $proxy – Значение прокси, если требуется для аутентификации по IP или пустое значение. Формат: {IP}:{port} или {UserName}:{Password}@{IP}:{port}
  • $proxytype – Тип прокси, если требуется для аутентификации по IP или пустое значение. Варианты значений: HTTP, HTTPS, SOCKS4, SOCKS5.

    После выполнения функции возвращаемое значение будет равно одному из двух :
  • результат – Результат распознавания или false если произошла ошибка

    Пример использования
    <?php
    $xhe_host = getenv("RPABOT_HOST_URL");
    
    // подключим объект для управления эмулятором, если еще не подключен
    if (!isset($path))
      $path="../../../Templates/init.php";
    require($path);
    
    // начало
    echo "\n<font color=blue>twocaptcha->".basename (__FILE__)."</font>\n";
    
    // API ключ
    WEB::$twocaptcha->api_key="";
    
    // 1 
    echo "1. Перейдем на полигон для тестирования geetest капчи: ";
    echo WEB::$browser->navigate("https://www.geetest.com/en")."\n";
    // перейдём на пример капчи
    DOM::$anchor->click_by_inner_text("Demo");
    sleep(1);
    DOM::$li->set_focus_by_number(10);
    
    // 2 
    echo "2. Распознать geetest капчу используя сервис twocaptcha.com : <br>";
    
    // данные для отправки на сайт
    $api_server="api.geetest.com";
    
    $date = new DateTime();
    echo $t=$date->getTimestamp();
    echo "\n";
    // получить gt и challenge для отправки на сервис
    echo $res = file_get_contents("https://www.geetest.com/demo/gt/register-enFullpage-official?t=$t");
    echo "\n";
    // разбеёрм полученные данные из ответа
    $gt = get_string($res, '"gt":"', '",');
    $challenge = get_string($res, '"challenge":"', '",');
    echo "gt=$gt<br>challenge=$challenge<br>";
    echo "\n";
    // отправляем запрос на сервис
    $result = WEB::$twocaptcha->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":"', '",');
    
    // полученный результат вводим в поля 
    DOM::$hiddeninput->set_value_by_name("geetest_challenge", $geetest_challenge);
    DOM::$hiddeninput->set_value_by_name("geetest_validate", $geetest_validate);
    DOM::$hiddeninput->set_value_by_name("geetest_seccode", $geetest_seccode);
    
    // нажимем на кнопку Click to verify
    DOM::$span->click_by_inner_text("Click to verify");
    
    // конец
    echo "\n";
    
    // разобрать строку по префиксам
    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
    WINDOW::$app->quit();
    ?>
    # Additional paths
    import sys
    sys.path.insert(0, '../../../Templates PY/')
    
    xhe_host = "127.0.0.1:7010"
    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>twocaptcha.xxxxxxxxx</font><hr>")
    
    # API ключ
    twocaptcha.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 капчу используя сервис twocaptcha.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 = twocaptcha.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()
    #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 = Environment.GetEnvironmentVariable("RPABOT_HOST_URL");
    			InitXHE();
    
    			// начало
    			echo("<hr><font color=blue>twocaptcha.recognize</font><hr>");
    				
    			// API ключ
    			twocaptcha.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 капчу используя сервис twocaptcha.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 = twocaptcha.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("\n\n");
    
    			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(); 
    	}
    }

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