Основной сайт хуманэмулятор.рф | Демо | Купить | API | Wiki
Web / 2captcha
recognize_geetest
recognize_geetest($pageurl,$gt,$challenge,$api_server='',$proxy='',$proxytype=''); - Распознать GeeTest капчуФункция на вход принимает параметры:
После выполнения функции возвращаемое значение будет равно одному из двух :
Пример использования
<?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
=============================================
если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум
.