не передает капчу через get в Яндекс (500р.)

Omi4Sem

Client
Регистрация
20.11.2019
Сообщения
23
Благодарностей
2
Баллы
3
Здравствуйте!
Задача: написать парсер Яндекс.
Столкнулся с тем, что не получается отправить Капчу через GET запрос. (из Вики справки нашел подтверждение тому, что именно GET используют, да и Fiddler думаю не обманывает меня).
Выявил, что при использовании кубика UrlEncode у меня получаются данные отличающиеся от Fiddler
http://joxi.ru/n2Y0dWyfb1dgVm - то что получается при сборе данных
http://joxi.ru/DmBRJaVsJk1eWm - заметил что ещё отличается

Разницу, которую заметил (У меня при составлении)

в Fiddler
GET /checkcaptcha? key=00AkoAyrvgO3nmlCL2LkliR0kNlAJBKG_0%2F1577587561%2Fc696d0ad0690569436f3d308f3f947bb_a2c8622d9aa5a1c10c0e8f0c7d0c5fe7&retpath=https%3A%2F%2Fyandex.ru%2Fsearch%3Ftext%3DNokian%2520Tyres%2520Hakkapeliitta%2520R3%2520SUV%26lr%3D213_588b7ac2ffec570ccaf34175752f8292&rep=%D0%AF%D0%99%D0%A6%D0%9E%D0%9C+12.249

Различия в:
1. %26lr%3D213_
2. %2F - в фидлере с большой буквы
3. %3A - т.е все что идёт после %[цифра] идёт заглавная буква (не знаю влияет ли это)

То как работает весь процесс через Fiddler
http://joxi.ru/VrweYLKi7GJn42 - гет по передаче данных
http://joxi.ru/EA4bKqJho5GeXm - что отдает в форму

Итог: при отправке GET запросом того, что составил, отдает 403 код. Не понимаю где ошибаюсь.

Прикрепляю шаблон, все по максимум прокомментировал. Помогите разобраться.
Готов вознаградить 500р. при подробном объяснении возникновения ошибки с исправлением шаблона.
 

Вложения

  • Спасибо
Реакции: alex1988

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
1. Снимите галочку с редиректа в запросе.
2. В результате получите переадресацию.
3. Отправляете следующий запрос на страничку с пункта 2.
4. В результате страничка с каптчей.
5. Собираете нужные параметры.
6. Отправляете запрос на получение картинки.

Вот примерно такая логика должна быть.
Дальше уже распознавание и отправка распознанного результата.
Вот 4 нужных запроса.
Код:
1. https://yandex.ru/search/?text=Nokian%20Tyres%20Hakkapeliitta%20R3%20SUV&lr=213

2. https://yandex.ru/showcaptcha?retpath=https%3A//yandex.ru/search%3Ftext%3DNokian%2520Tyres%2520Hakkapeliitta%2520R3%2520SUV%26lr%3D213_588b7ac2ffec570ccaf34175752f8292&t=0/1577600475/4aeb08da4d0bf27fbf0c95652d753e12&s=37ecff107c0311563d5edc81f917a296

3. https://yandex.ru/captchaimg?aHR0cHM6Ly9leHQuY2FwdGNoYS55YW5kZXgubmV0L2ltYWdlP2tleT0wMEFDUkZXQldzeGVNdUl0WDFOOTdDRElvMTZIRGF6aiZzZXJ2aWNlPXdlYg,,_0/1577600475/4aeb08da4d0bf27fbf0c95652d753e12_d6fd48a98df72f2cb5125edeedac0532

4. https://yandex.ru/checkcaptcha?key=00ACRFWBWsxeMuItX1N97CDIo16HDazj_0%2F1577600475%2F4aeb08da4d0bf27fbf0c95652d753e12_fbf57a16d5d7e4d5ef12bff5e732911c&retpath=https%3A%2F%2Fyandex.ru%2Fsearch%3Ftext%3DNokian%2520Tyres%2520Hakkapeliitta%2520R3%2520SUV%26lr%3D213_588b7ac2ffec570ccaf34175752f8292&rep=bacteria+%D0%A4%D0%9E%D0%A0%D0%9C%D0%90%D0%A2%D0%95
 

Вложения

Omi4Sem

Client
Регистрация
20.11.2019
Сообщения
23
Благодарностей
2
Баллы
3
Код:
3. https://yandex.ru/captchaimg?aHR0cHM6Ly9leHQuY2FwdGNoYS55YW5kZXgubmV0L2ltYWdlP2tleT0wMEFDUkZXQldzeGVNdUl0WDFOOTdDRElvMTZIRGF6aiZzZXJ2aWNlPXdlYg,,_0/1577600475/4aeb08da4d0bf27fbf0c95652d753e12_d6fd48a98df72f2cb5125edeedac0532
Верно понимаю, нужно именно запрашивать картинку, а не парсить со страницы(класть в файл и распознавать), так как она там уже есть?
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
Верно понимаю, нужно именно запрашивать картинку, а не парсить со страницы(класть в файл и распознавать), так как она там уже есть?
Хм... Видимо Яндекс выдает разные результаты для разных ЮзерАгентов.
После первого запроса в моем случае вернулся редирект.
Отправил запрос на данную страничку - данные содеражали ссылку на каптчу + ключ + ещё какие-то параметры.
Дальше нужно скачать картинку (для этого отправляется запрос).
Дальше распознаем картинку - получаем результат.
У нас есть параметры которые мы собрали с предыдущих запросов, добавляем к этим параметрам ещё ответ на каптчу - шлём запрос -и если каптча решена корректно - получим корректный результат.
Готовое решение я не собирал :(

Кстати относительно Вашего шаблона - то все кубики с JS нужно заменить на C# - я не уверен что они корректно отрабатывают (скажем так их наличие или отсутствие не влияет вообще никак на работу шаблона, так как они точно не устанавливают никакие параметры в профиль - внутри кубиков шарп код, который не выполняется в JS).
 

Omi4Sem

Client
Регистрация
20.11.2019
Сообщения
23
Благодарностей
2
Баллы
3
Хм... Видимо Яндекс выдает разные результаты для разных ЮзерАгентов.
После первого запроса в моем случае вернулся редирект.
Отправил запрос на данную страничку - данные содеражали ссылку на каптчу + ключ + ещё какие-то параметры.
Дальше нужно скачать картинку (для этого отправляется запрос).
Дальше распознаем картинку - получаем результат.
У нас есть параметры которые мы собрали с предыдущих запросов, добавляем к этим параметрам ещё ответ на каптчу - шлём запрос -и если каптча решена корректно - получим корректный результат.
Готовое решение я не собирал :(

Кстати относительно Вашего шаблона - то все кубики с JS нужно заменить на C# - я не уверен что они корректно отрабатывают (скажем так их наличие или отсутствие не влияет вообще никак на работу шаблона, так как они точно не устанавливают никакие параметры в профиль - внутри кубиков шарп код, который не выполняется в JS).
Используя редирект, я в 1 кубик получал страницу с Капчей, убрав редирект приходится создавать дополнительные.
Сделал как написали, все равно 403 ошибка :(
JS кубиков нету. (кубик кода JS ).
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
Без какого либо изменения кода, отправляю несколько запросов подряд.
Итого - часть запросов выходят по 404, часть с 200.
Этим я хочу сказать, что даже если Вы правильно сформировали параметры, Яндекс может всёравно вернуть 404 или 403.

Интересно, кто-то с подобным явлением при работе с Яндексом встречался (когда часть запросов просто теряется)?
без изменения.jpg
 

alex1988

Client
Регистрация
13.07.2014
Сообщения
358
Благодарностей
141
Баллы
43
Та же проблема, не могу перевести шаблоный проект с парсинга Яндекс на пост-гет
Пробывал на другом софте - тоже самое
Игрался неделю и забил пока что(
 

Omi4Sem

Client
Регистрация
20.11.2019
Сообщения
23
Благодарностей
2
Баллы
3
У меня 1 раз проскочило на 200, я радовался бешено) Но потом, чет все сплошняком 403 (понятно, что часть из них может конечно быть из-за не верной Капчи).

А как думаете, важно учитывать заглавные буквы в GET запросе ? http://joxi.ru/ZrJje16Iw5g3dr (Попробовал заменить все данные расхождения, а именно поменять на заглавные через Поиск/Замена - не помогло, опять 403 постоянно отдает).
 
Последнее редактирование:

Omi4Sem

Client
Регистрация
20.11.2019
Сообщения
23
Благодарностей
2
Баллы
3
Без какого либо изменения кода, отправляю несколько запросов подряд.
Итого - часть запросов выходят по 404, часть с 200.
Этим я хочу сказать, что даже если Вы правильно сформировали параметры, Яндекс может всёравно вернуть 404 или 403.

Интересно, кто-то с подобным явлением при работе с Яндексом встречался (когда часть запросов просто теряется)?
Посмотреть вложение 47502
У Яндекса есть свойство, накладывать на определенный промежуток времени Капчу (на IP ) возможно был среди всех именно этот случай. Это крайне рандомно происходит.
 

BAZAg

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

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
Короче говоря, Зеннопостер искажает запрос.
Беру ссылку, даже без куков, которая возвращается с https://yandex.ru/search/?text=888&lr=213
Код:
https://yandex.ru/showcaptcha?cc=1&retpath=https%3A//yandex.ru/search%3Ftext%3D888%26lr%3D213_54766e071f9c9cf3b88ec8fc834588e9&t=0/1577624132/3f6e698286c4e74e801f9984cfb75168&s=4185ca3091bd11d2f85204ff9a18feb0
Не произвожу никаких манипуляций - отправляю просто запрос - и вуаля - без проблем получаю контент (в данном случае каптчу)
Код:
HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);
               webrequest.Proxy = new WebProxy("***.1**.140.113", 7**1);
               webrequest.Proxy.Credentials = new NetworkCredential("rp1**04*9", "m**E*v**vi");
HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();
StreamReader streamr = new StreamReader(webresponse.GetResponseStream(), Encoding.Default);
string WebPageStr = streamr.ReadToEnd();
streamr.Close();
webresponse.Close();
return WebPageStr;
При отправке запроса встроенными функциями Зеннопостера - всегда то 404 то 403.
Не зря люди тут https://zennolab.com/discussion/threads/zaputalsja-na-kapche-jandeksa.24365/ и здесь https://zennolab.com/discussion/threads/poluchenie-stranicy-kapchi-jandeksa-v-get-zaprose.27487/#post-193289 писали о подобной проблеме. Я думал, что когда устанавливаешь галочку Использовать Оригинальный URL - то искажение не происходит - как видим, эта галочка влияет только на домен, но не на параметры (из-за чего у нас и проблема с запросом).
 
  • Спасибо
Реакции: alex1988

Omi4Sem

Client
Регистрация
20.11.2019
Сообщения
23
Благодарностей
2
Баллы
3
Короче говоря, Зеннопостер искажает запрос.
Беру ссылку, даже без куков, которая возвращается с https://yandex.ru/search/?text=888&lr=213

При отправке запроса встроенными функциями Зеннопостера - всегда то 404 то 403.
Не зря люди тут https://zennolab.com/discussion/threads/zaputalsja-na-kapche-jandeksa.24365/ и здесь https://zennolab.com/discussion/threads/poluchenie-stranicy-kapchi-jandeksa-v-get-zaprose.27487/#post-193289 писали о подобной проблеме. Я думал, что когда устанавливаешь галочку Использовать Оригинальный URL - то искажение не происходит - как видим, эта галочка влияет только на домен, но не на параметры (из-за чего у нас и проблема с запросом).
Не совсем понятно, каким образом (на каком этапе) искажает? Вам что-то удалось найти(причину)?
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
Не совсем понятно, каким образом (на каком этапе) искажает? Вам что-то удалось найти(причину)?
пример каптча.jpg
За оригинальные параметры должна отвечать галочка в кубике ГЕТ, но как видим в результате тестов - она явно не влияет на параметры.
каптча 2.jpg
 
  • Спасибо
Реакции: alex1988 и Omi4Sem

alex1988

Client
Регистрация
13.07.2014
Сообщения
358
Благодарностей
141
Баллы
43
Получилось у кого то победить Яндекс ?
 

санчил

Client
Регистрация
15.04.2016
Сообщения
319
Благодарностей
55
Баллы
28
пробуйте так
byte[] captcha_byte;

// получаем каптчу
Uri url_captcha = new Uri(project.Variables["url_captcha"].Value);

HttpWebRequest captchaRequest = (HttpWebRequest)WebRequest.Create(url_captcha); //создаём запрос на скачивание капчи
captchaRequest.UserAgent = project.Profile.UserAgent; //Подставляем юзерагент с профиля

WebResponse captchaResponse = captchaRequest.GetResponse();
Stream responseStream = captchaResponse.GetResponseStream();

using (BinaryReader br = new BinaryReader(responseStream))
{
captcha_byte = br.ReadBytes(500000);
br.Close();
}
responseStream.Close();
captchaResponse.Close();

MemoryStream captcha_Stream = new System.IO.MemoryStream(captcha_byte);
Image image_captcha = System.Drawing.Image.FromStream(captcha_Stream);
//Bitmap bitmap_captcha = new Bitmap(image_captcha);

string base64 = Convert.ToBase64String(captcha_byte);

var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1)
{
return tmp[0];
}
return result;
 

_IroN__RaT_

Новичок
Регистрация
13.11.2020
Сообщения
10
Благодарностей
0
Баллы
1
Решил данный вопрос, кому интересно, посмотрите подробнее ссылки redirect, там один маленький слэш портил всю ситуацию, https://yandex.com/search/?Ir..... и https://yandex.com/search?Ir, когда идет в парамметре redirect должен стоять второй, а в последуйщих переходах на ссылки - первый, мелочь, а из-за этого 403 ошибка вылетала
 
Регистрация
18.05.2017
Сообщения
71
Благодарностей
5
Баллы
8
подскажите пожалуйста как мне распознать яндекс капчу через get\post запроси и куда отправить ответ?
у меня есть следующие данные

type
captcha

captcha.img-url

captcha.key 00ANpyeg4DfF5ZcS3ApVqdvr1JPiVaZY_0/1613473945/b727718a59897bbeb5392a37f81904dd_c74f15cad10ce9a9024171333244289a

captcha.captcha-page
 

_IroN__RaT_

Новичок
Регистрация
13.11.2020
Сообщения
10
Благодарностей
0
Баллы
1
Прочитай что я написал выше, сложи пазл и будет тебе счастье
 
Регистрация
18.05.2017
Сообщения
71
Благодарностей
5
Баллы
8
Прочитай что я написал выше, сложи пазл и будет тебе счастье
Это я там понимаю когда я уже отправляю результат капчи,
а тут я не могу даже отправить данные на распознование капчи отправить (
 

_IroN__RaT_

Новичок
Регистрация
13.11.2020
Сообщения
10
Благодарностей
0
Баллы
1
Через апишку антикапчи можешь, в nuget подгружаешь дальше там просто, разберёшься, либо же запросами на прямую в апи, ток файл при передачи над будет конвертировать в base 64
 

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