Распознавание капч с помощью сервиса ruCaptcha.com
Re: Распознавание капч с помощью сервиса ruCaptcha.com
пример распознавания на с#
ReCaptcha V2
geetest капча
ReCaptcha V2
Код: Выделить всё
#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</font><hr>");
// API ключ
rucaptcha.api_key="448b2d538fef6c236092492a947af85b";
// Пример : ReCaptcha V2
echo ("1. Перейдем на полигон ReCaptcha V2: ");
echo (browser.navigate("https://www.google.com/recaptcha/api2/demo")+"<br>");
sleep(1);
echo ("2. Получение токена от сервиса распознования: ");
string result = rucaptcha.recognize_recaptcha_v2(webpage.get_url(),"6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-");
echo (result+"<br>");
echo ("3. Используем полученный токен для обхода капчи: ");
// установим токен в скрытое поле g-recaptcha-response
textarea.set_value_by_name("g-recaptcha-response", result);
// нажимаем на кнопку Submit
button.click_by_id("recaptcha-demo-submit");
echo ("<br>");
// пауза 5 сек
sleep(5);
// Пример: Invisible ReCaptcha V2
echo ("1. Перейдем на полигон Invisible ReCaptcha V2: ");
echo (browser.navigate("https://www.google.com/recaptcha/api2/demo?invisible=true")+"<br>");
sleep(1);
echo ("2. Получить текущий урл страницы для отправки на сервер: ");
string url_loc = webpage.get_url()+"<br>";
echo(url_loc+"<br>");
echo ("3. Получение токена от сервиса распознования: ");
result = rucaptcha.recognize_recaptcha_v2(url_loc,"6LfP0CITAAAAAHq9FOgCo7v_fb0-pmmH9VW3ziFs",true);
echo (result+"<br>");
echo ("3. Используем полученный токен для обхода капчи: ");
// установим токен в скрытое поле g-recaptcha-response
textarea.set_inner_html_by_name("g-recaptcha-response", result);
// вызов коллбек-функции
browser.run_java_script("onSuccess();","");
// нажимаем на кнопку Submit
btn.click_by_id("recaptcha-demo-submit");
// конец
echo("<hr><br>");
app.quit();
}
}
geetest капча
Код: Выделить всё
#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();
}
}
Re: Распознавание капч с помощью сервиса ruCaptcha.com
Пример распознавания на питоне
ReCaptcha V2
geetest капча
ReCaptcha V2
Код: Выделить всё
# 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
# Пример : ReCaptcha V2
echo ("1. Перейдем на полигон ReCaptcha V2: ")
echo (browser.navigate("https://www.google.com/recaptcha/api2/demo"),"<br>")
sleep(1)
echo ("2. Получение токена от сервиса распознования: ")
result = rucaptcha.recognize_recaptcha_v2(webpage.get_url(),"6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-")
echo (result,"<br>")
echo ("3. Используем полученный токен для обхода капчи: ")
# установим токен в скрытое поле g-recaptcha-response
textarea.set_value_by_name("g-recaptcha-response", result)
# нажимаем на кнопку Submit
button.click_by_id("recaptcha-demo-submit")
echo ("<br>")
# пауза 5 сек
sleep(5)
# Пример: Invisible ReCaptcha V2
echo ("1. Перейдем на полигон Invisible ReCaptcha V2: ")
echo (browser.navigate("https://www.google.com/recaptcha/api2/demo?invisible=true"),"<br>")
sleep(1)
echo ("2. Получить текущий урл страницы для отправки на сервер: ")
url_loc = webpage.get_url()
echo (url_loc,"<br>")
echo ("3. Получение токена от сервиса распознования: ")
result = rucaptcha.recognize_recaptcha_v2(webpage.get_url(),"6LfP0CITAAAAAHq9FOgCo7v_fb0-pmmH9VW3ziFs",1)
echo (result,"<br>")
echo ("3. Используем полученный токен для обхода капчи: ")
# установим токен в скрытое поле g-recaptcha-response
textarea.set_inner_html_by_name("g-recaptcha-response", result)
# вызов коллбек-функции
browser.run_java_script('onSuccess()')
# нажимаем на кнопку Submit
btn.click_by_id("recaptcha-demo-submit")
# конец
echo("<hr><br>")
# Quit
app.quit()
Код: Выделить всё
# 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()
Re: Распознавание капч с помощью сервиса ruCaptcha.com
Было бы здорово иметь супер-функцию от рукапчи, примерно такого плана:
1) Скрипт уловил наличие капчи на странице (например в гугле или яндексе это видно просто по урлу);
2) Запускаем супер-функцию: chornyj_plashch($timelimit) она будет выполняться пока не избавит нас от капчи или пока время не выйдет;
3) Она там ищет всё что нужно чтобы понять что за капча, решает её, жмёт на картинки, вставляет слова куда нужно и т.п., жмёт на кнопку, а по готовности (или когда временной лимит уже вышел) переходит на следующую строчку и выдаёт нам что-то типа "готово, дорогой, тебе это обошлось с 0,13 копейки".
Даже пусть сначала делает через токен по более дорогому тарифу "Лёгкий но дорогой", главное чтобы актуальность этого поддерживалось вместе с хуман-эмулятором. Так рукапча будет постоянно востребована и нам меньше гиморов.
1) Скрипт уловил наличие капчи на странице (например в гугле или яндексе это видно просто по урлу);
2) Запускаем супер-функцию: chornyj_plashch($timelimit) она будет выполняться пока не избавит нас от капчи или пока время не выйдет;
3) Она там ищет всё что нужно чтобы понять что за капча, решает её, жмёт на картинки, вставляет слова куда нужно и т.п., жмёт на кнопку, а по готовности (или когда временной лимит уже вышел) переходит на следующую строчку и выдаёт нам что-то типа "готово, дорогой, тебе это обошлось с 0,13 копейки".
Даже пусть сначала делает через токен по более дорогому тарифу "Лёгкий но дорогой", главное чтобы актуальность этого поддерживалось вместе с хуман-эмулятором. Так рукапча будет постоянно востребована и нам меньше гиморов.
Re: Распознавание капч с помощью сервиса ruCaptcha.com
Это нужна не функция, а режим, в котором при переходе на страницы хуман должен их анализировать на предмет наличия капч их типа и т.д. и на основе этого выполнять соответственный алгоритм. Причём ключ для сервиса надо тогда поместить в настройки, что бы можно было его оттуда в любой момент взять. Подумаем над этим.dimerm писал(а): ↑19 июн 2020, 20:46Было бы здорово иметь супер-функцию от рукапчи, примерно такого плана:
1) Скрипт уловил наличие капчи на странице (например в гугле или яндексе это видно просто по урлу);
2) Запускаем супер-функцию: chornyj_plashch($timelimit) она будет выполняться пока не избавит нас от капчи или пока время не выйдет;
3) Она там ищет всё что нужно чтобы понять что за капча, решает её, жмёт на картинки, вставляет слова куда нужно и т.п., жмёт на кнопку, а по готовности (или когда временной лимит уже вышел) переходит на следующую строчку и выдаёт нам что-то типа "готово, дорогой, тебе это обошлось с 0,13 копейки".
Даже пусть сначала делает через токен по более дорогому тарифу "Лёгкий но дорогой", главное чтобы актуальность этого поддерживалось вместе с хуман-эмулятором. Так рукапча будет постоянно востребована и нам меньше гиморов.
Re: Распознавание капч с помощью сервиса ruCaptcha.com
Всё-таки будет реализована эта функция или нет и когда?Это нужна не функция, а режим, в котором при переходе на страницы хуман должен их анализировать на предмет наличия капч их типа и т.д. и на основе этого выполнять соответственный алгоритм. Причём ключ для сервиса надо тогда поместить в настройки, что бы можно было его оттуда в любой момент взять. Подумаем над этим.
Re: Распознавание капч с помощью сервиса ruCaptcha.com
Похоже ничего не будет сделано!
Re: Распознавание капч с помощью сервиса ruCaptcha.com
Все в порядке очереди реализуется. В ближайший месяц точно нет - лето - отпуска - нам отдыхать тоже надо )
А дальше серьезно будет проработана анонимность и другие уже запрошенные моменты. Вопрос про капчу добавлен в туду и будет сделан в порядке очереди, сроки сейчас называть не могу.
PS: как вариант - если чтобы быстрее было - можете представить на прототип функции на PHP - мы переведем во встроенный код и отладим.
PS2: как вариант можно реализовать это плагином.
А дальше серьезно будет проработана анонимность и другие уже запрошенные моменты. Вопрос про капчу добавлен в туду и будет сделан в порядке очереди, сроки сейчас называть не могу.
PS: как вариант - если чтобы быстрее было - можете представить на прототип функции на PHP - мы переведем во встроенный код и отладим.
PS2: как вариант можно реализовать это плагином.