Сниппет для решения Recaptcha 2 через rucaptcha.com (post/get)

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Решил выложить свой сниппет для решения Рекапчи через запросы, так как сейчас уже все кому не лень его предлагают, вот только в открытом доступе не хотят выкладывать.

Код:
Type type_rucaptcha = AppDomain.CurrentDomain.GetAssemblies().First(x => x.FullName.IndexOf("Rucaptcha", StringComparison.OrdinalIgnoreCase) != -1).GetType("ZennoLab.RuCaptcha.RuCaptchaConfigurator");
string rucaptcha_key = type_rucaptcha.GetMethod("get_SecretKey").Invoke(Activator.CreateInstance(type_rucaptcha), null).ToString();
string site_key = Regex.Match(instance.ActiveTab.DomText, @"(?<=api2/anchor\?k=).*?(?=&amp)").Value;
if (site_key == string.Empty)
    throw new Exception("google key не найден, задайте его вручную");
string domen = new Uri(instance.ActiveTab.URL).GetLeftPart(UriPartial.Authority);

System.Net.HttpWebRequest post_rucaptcha = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://rucaptcha.com/in.php");
post_rucaptcha.Proxy = null;
post_rucaptcha.AllowAutoRedirect = false;
post_rucaptcha.ContentType = @"multipart/form-data; boundary=--8d373f8bt2f4cf3";
post_rucaptcha.Method = "POST";
post_rucaptcha.ServicePoint.Expect100Continue = false;
post_rucaptcha.Timeout = 30000;

string content = string.Format(@"----8d373f8bt2f4cf3
Content-Disposition: form-data; name=""method""

userrecaptcha
----8d373f8bt2f4cf3
Content-Disposition: form-data; name=""soft_id""

1313
----8d373f8bt2f4cf3
Content-Disposition: form-data; name=""key""

" + rucaptcha_key + @"
----8d373f8bt2f4cf3
Content-Disposition: form-data; name=""googlekey""

" + site_key + @"
----8d373f8bt2f4cf3
Content-Disposition: form-data; name=""proxy""


----8d373f8bt2f4cf3
Content-Disposition: form-data; name=""pageurl""

" + domen + @"
----8d373f8bt2f4cf3--");

using (Stream reqStream = post_rucaptcha.GetRequestStream())
using (StreamWriter sw = new StreamWriter(reqStream))
    sw.Write(content);

string url_get;
using (System.Net.WebResponse resp = post_rucaptcha.GetResponse())
using (Stream respStream = resp.GetResponseStream())
using (StreamReader sr = new StreamReader(respStream))
{
    string resp_answer = sr.ReadToEnd();
    if (!resp_answer.Contains("OK|"))
        throw new Exception(resp_answer);
    url_get = "http://rucaptcha.com/res.php?key=" + rucaptcha_key + @"&action=get&id=" + resp_answer.Split('|')[1];   
}
Thread.Sleep(10000);

for (int z = 0; ;z++)
{
    System.Net.HttpWebRequest get_rucaptcha = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url_get);
    get_rucaptcha.Method = "GET";
    get_rucaptcha.Timeout = 30000;
    get_rucaptcha.Proxy = null;
    get_rucaptcha.AllowAutoRedirect = false;
    post_rucaptcha.ServicePoint.Expect100Continue = false;

  
    string response;
    using (System.Net.WebResponse resp = get_rucaptcha.GetResponse())
    using (Stream respStream = resp.GetResponseStream())
    using (StreamReader sr = new StreamReader(respStream))
       response = sr.ReadToEnd();

    if (response.Contains("OK|"))
    {
        instance.ActiveTab.FindElementById("g-recaptcha-response").SetValue(response.Split('|')[1], "None", false);
        break;
    }
    else if ((response != "CAPCHA_NOT_READY" && response != string.Empty) || z > 20)
        throw new Exception("не удалось решить рекапчу, ответ от сервиса: " + response);
    else
        Thread.Sleep(10000);
}
 
Последнее редактирование:

deopl

Client
Регистрация
06.12.2011
Сообщения
656
Благодарностей
125
Баллы
43
Это через сайткей или клик картинок?
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 649
Благодарностей
1 317
Баллы
113

Alexin

Client
Регистрация
02.07.2017
Сообщения
7
Благодарностей
0
Баллы
3
Всё время получаю ошибку
11:14:57 Выполнение действия CSharp OwnCode ERROR_WRONG_USER_KEY

Хотя другие шаблоны работают с рукапчей нормально...
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Всё время получаю ошибку
11:14:57 Выполнение действия CSharp OwnCode ERROR_WRONG_USER_KEY

Хотя другие шаблоны работают с рукапчей нормально...
Попробуй задать ключ вручную за место строки №2:
Код:
string rucaptcha_key = "твой ключ";
 

ffeniks

Client
Регистрация
03.06.2016
Сообщения
308
Благодарностей
410
Баллы
63
string rucaptcha_key = "твой ключ";
сделал, так не получилось, та же ошибка идёт в логе - Выполнение действия CSharp OwnCode ERROR_WRONG_USER_KEY

и второй вопрос, я правильно понимаю что этим способом можно решить рекапчу2 без нажатия кнопки (т.е. автосабмит) ?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 856
Баллы
113
сделал, так не получилось, та же ошибка идёт в логе - Выполнение действия CSharp OwnCode ERROR_WRONG_USER_KEY
Эта ошибка означает, что не верно передается API-ключ от рукапчи. Он прописан в настройках зеннопостера?

и второй вопрос, я правильно понимаю что этим способом можно решить рекапчу2 без нажатия кнопки (т.е. автосабмит) ?
Нет.
 

ffeniks

Client
Регистрация
03.06.2016
Сообщения
308
Благодарностей
410
Баллы
63

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 856
Баллы
113

ffeniks

Client
Регистрация
03.06.2016
Сообщения
308
Благодарностей
410
Баллы
63
И баланс на рукапче правильный отображается в настройках зенки?
да, при этом другой сниппет работает корректно. (который решает рекапчу на c# с кнопкой отправить)
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Достаточно взять сниффер и посмотреть как отправляются данные, а потом от этого плясать. Странно, что у тебя проблемы, так как этот сниппет у всех, кому я давал его ранее работал.
 

ffeniks

Client
Регистрация
03.06.2016
Сообщения
308
Благодарностей
410
Баллы
63
Достаточно взять сниффер и посмотреть как отправляются данные, а потом от этого плясать. Странно, что у тебя проблемы, так как этот сниппет у всех, кому я давал его ранее работал.
Да я уже дважды пробовал отснифить, но так как не умею толку не вышло )
 

Deadman

Client
Регистрация
24.09.2011
Сообщения
75
Благодарностей
3
Баллы
8
а версия зенки как-то влияет? а то у меня чёт тоже CSharp OwnCode ERROR_WRONG_USER_KEY хотя баланс и всё такое показывает
 

mamyl9i

Client
Регистрация
20.05.2015
Сообщения
78
Благодарностей
5
Баллы
8
CSharp OwnCode ERROR_WRONG_USER_KEY аналогичная ситуация. версия 5.9.8.1
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113

mamyl9i

Client
Регистрация
20.05.2015
Сообщения
78
Благодарностей
5
Баллы
8
Прописывал как вы говорите и ключ менял в рукапче уже сам ключ. Все равно эта ошибка. Незнаю,что происходит такое с сервисом или с зенкой
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Отсниффай и закинь в личку отправляемый текст, посмотрю
 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
808
Благодарностей
227
Баллы
43
Как я понимаю там нужно get запросы отправлять, а в сниппете первым отправляется post запрос
 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
808
Благодарностей
227
Баллы
43
В общем исправил код. Держите рабочий
Код:
Type type_rucaptcha = AppDomain.CurrentDomain.GetAssemblies().First(x => x.FullName.IndexOf("Rucaptcha", StringComparison.OrdinalIgnoreCase) != -1).GetType("ZennoLab.RuCaptcha.RuCaptchaConfigurator");
string rucaptcha_key = type_rucaptcha.GetMethod("get_SecretKey").Invoke(Activator.CreateInstance(type_rucaptcha), null).ToString();
string site_key = Regex.Match(instance.ActiveTab.DomText, @"(?<=api2/anchor\?k=).*?(?=&amp)").Value;
if (site_key == string.Empty)
    throw new Exception("google key не найден, задайте его вручную");
string domen = new Uri(instance.ActiveTab.URL).GetLeftPart(UriPartial.Authority);

System.Net.HttpWebRequest post_rucaptcha = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://rucaptcha.com/in.php?key=" + rucaptcha_key + @"&method=userrecaptcha&googlekey=" + site_key + @"&pageurl=" + domen);
post_rucaptcha.Proxy = null;
post_rucaptcha.AllowAutoRedirect = false;
post_rucaptcha.Method = "GET";
post_rucaptcha.ServicePoint.Expect100Continue = false;
post_rucaptcha.Timeout = 30000;

string url_get;
using (System.Net.WebResponse resp = post_rucaptcha.GetResponse())
using (Stream respStream = resp.GetResponseStream())
using (StreamReader sr = new StreamReader(respStream))
{
    string resp_answer = sr.ReadToEnd();
    if (!resp_answer.Contains("OK|"))
        throw new Exception(resp_answer);
    url_get = "http://rucaptcha.com/res.php?key=" + rucaptcha_key + @"&action=get&id=" + resp_answer.Split('|')[1];
}
Thread.Sleep(10000);
for (int z = 0; ;z++)
{
    System.Net.HttpWebRequest get_rucaptcha_2 = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url_get);
    get_rucaptcha_2.Method = "GET";
    get_rucaptcha_2.Timeout = 30000;
    get_rucaptcha_2.Proxy = null;
    get_rucaptcha_2.AllowAutoRedirect = false;
    post_rucaptcha.ServicePoint.Expect100Continue = false;
    string response;
    using (System.Net.WebResponse resp = get_rucaptcha_2.GetResponse())
    using (Stream respStream = resp.GetResponseStream())
    using (StreamReader sr = new StreamReader(respStream))
       response = sr.ReadToEnd();
    if (response.Contains("OK|"))
    {
        instance.ActiveTab.FindElementById("g-recaptcha-response").SetValue(response.Split('|')[1], "None", false);
        break;
    }
    else if ((response != "CAPCHA_NOT_READY" && response != string.Empty) || z > 20)
        throw new Exception("не удалось решить рекапчу, ответ от сервиса: " + response);
    else
        Thread.Sleep(10000);
}
 
  • Спасибо
Реакции: Сибиряк и spy107

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
В общем исправил код. Держите рабочий
Код:
Type type_rucaptcha = AppDomain.CurrentDomain.GetAssemblies().First(x => x.FullName.IndexOf("Rucaptcha", StringComparison.OrdinalIgnoreCase) != -1).GetType("ZennoLab.RuCaptcha.RuCaptchaConfigurator");
string rucaptcha_key = type_rucaptcha.GetMethod("get_SecretKey").Invoke(Activator.CreateInstance(type_rucaptcha), null).ToString();
string site_key = Regex.Match(instance.ActiveTab.DomText, @"(?<=api2/anchor\?k=).*?(?=&amp)").Value;
if (site_key == string.Empty)
    throw new Exception("google key не найден, задайте его вручную");
string domen = new Uri(instance.ActiveTab.URL).GetLeftPart(UriPartial.Authority);

System.Net.HttpWebRequest post_rucaptcha = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://rucaptcha.com/in.php?key=" + rucaptcha_key + @"&method=userrecaptcha&googlekey=" + site_key + @"&pageurl=" + domen);
post_rucaptcha.Proxy = null;
post_rucaptcha.AllowAutoRedirect = false;
post_rucaptcha.Method = "GET";
post_rucaptcha.ServicePoint.Expect100Continue = false;
post_rucaptcha.Timeout = 30000;

string url_get;
using (System.Net.WebResponse resp = post_rucaptcha.GetResponse())
using (Stream respStream = resp.GetResponseStream())
using (StreamReader sr = new StreamReader(respStream))
{
    string resp_answer = sr.ReadToEnd();
    if (!resp_answer.Contains("OK|"))
        throw new Exception(resp_answer);
    url_get = "http://rucaptcha.com/res.php?key=" + rucaptcha_key + @"&action=get&id=" + resp_answer.Split('|')[1];
}
Thread.Sleep(10000);
for (int z = 0; ;z++)
{
    System.Net.HttpWebRequest get_rucaptcha_2 = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url_get);
    get_rucaptcha_2.Method = "GET";
    get_rucaptcha_2.Timeout = 30000;
    get_rucaptcha_2.Proxy = null;
    get_rucaptcha_2.AllowAutoRedirect = false;
    post_rucaptcha.ServicePoint.Expect100Continue = false;
    string response;
    using (System.Net.WebResponse resp = get_rucaptcha_2.GetResponse())
    using (Stream respStream = resp.GetResponseStream())
    using (StreamReader sr = new StreamReader(respStream))
       response = sr.ReadToEnd();
    if (response.Contains("OK|"))
    {
        instance.ActiveTab.FindElementById("g-recaptcha-response").SetValue(response.Split('|')[1], "None", false);
        break;
    }
    else if ((response != "CAPCHA_NOT_READY" && response != string.Empty) || z > 20)
        throw new Exception("не удалось решить рекапчу, ответ от сервиса: " + response);
    else
        Thread.Sleep(10000);
}
Ну можно и GET запросом слать, разницы никакой нету, но мне всегда больше нравился вариант с POST запросом.
 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
808
Благодарностей
227
Баллы
43
Код:
Content-Disposition: form-data; name=""soft_id""
1313
Это я как понял вы указываете свой id что б получать процент?

Попробую сегодня данный сниппет под anti-captcha переделать. Плюс ко всему есть соображения как сделать autosubmit на рекапче 2.0 Если все получится удачно, сюда выложу на пользование
 
Последнее редактирование:

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Код:
Content-Disposition: form-data; name=""soft_id""
1313
Это я как понял вы указываете свой id что б получать процент?

Попробую сегодня данный сниппет под anti-captcha переделать. Плюс ко всему есть соображения как сделать autosubmit на рекапче 2.0 Если все получится удачно, сюда выложу на пользование
Да, всё верно. Если мешает, можете убрать
 

xEngine33

Пользователь
Регистрация
25.03.2016
Сообщения
68
Благодарностей
14
Баллы
8
Ребят, подскажите как вместо инстанса, это значение вывести в переменную либо в результат C#, нужно для GET / POST. ТС спасибо большое за сниппет. :-)
 

xEngine33

Пользователь
Регистрация
25.03.2016
Сообщения
68
Благодарностей
14
Баллы
8
Вот значение:
Код:
instance.ActiveTab.FindElementById("g-recaptcha-response").SetValue(response.Split('|')[1], "None", false);
 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
808
Благодарностей
227
Баллы
43

spy107

Client
Регистрация
19.08.2012
Сообщения
182
Благодарностей
13
Баллы
18
Спасибо огромное, второй код от ezotonal работает у меня!
 

spy107

Client
Регистрация
19.08.2012
Сообщения
182
Благодарностей
13
Баллы
18
Спасибо огромное, второй код от ezotonal работает у меня!
Попробую сегодня данный сниппет под anti-captcha переделать. Плюс ко всему есть соображения как сделать autosubmit на рекапче 2.0 Если все получится удачно, сюда выложу на пользование
К anti-captcha не получилось прикрутить? :ah:
 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
808
Благодарностей
227
Баллы
43
Спасибо огромное, второй код от ezotonal работает у меня!

К anti-captcha не получилось прикрутить? :ah:
Времени пока не могу найти...постараюсь в скором времени выложить
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
371
Баллы
63
Ребят подскажите как этот код прикрутить к проекту?
 
Последнее редактирование:

ezotonal

Client
Регистрация
13.01.2014
Сообщения
808
Благодарностей
227
Баллы
43
  • Спасибо
Реакции: Сибиряк

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)