@GamiD Вот функция, там всего один простой запрос, думаю разберешься
func getSolution(key, token string) (string, error) { url := fmt.Sprintf("https://www.google.com/recaptcha/api2/reload?k=%s", key) payload := fmt.Sprintf("reason=q&c=%s&size=invisible", token) resp, err := http.Post(url, "application/x-www-form-urlencoded", strings.NewReader(payload)) if err != nil { return "", err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return "", fmt.Errorf("Failed to retrieve solution: %v", resp.Status) } // Read the response body body, err := io.ReadAll(resp.Body) if err != nil { return "", err } re := regexp.MustCompile(`"rresp","(.*?)",`) match := re.FindStringSubmatch(string(body)) if len(match) < 2 { return "", fmt.Errorf("Failed to extract 'rresp' value from the response body") } solution := match[1] return solution, nil }Recaptcha 3. Асинхронное решение
-
Столкнулся с проблемой, что рекапча-3 решается неверно (асинхронно, несвоевременно) при этом скрипт продолжает работу с сайтом, не дождавшись решения. Страница интерактивная, то есть как таковая базовая отправка форм не происходит и страница не загружается целиком, идет многостраничная регистрация на одной веб-странице.
График событий примерно такой:
Запускаю в режиме отладки в редакторе. В скрипте:
- Перед загрузкой страницы задаю "Решать рекапчу3".
- На определенном этапе вижу предупреждение, что на сайте орудует рекапча-3.
- Смотрю в сниффер встроенный, пошел запрос задание.
- Запросы решений... 1, 2, 3 ... В это же время скрипт заполняет форму и жмет кнопку, не дождавшись решения.
- От сайта Получаю ответ, с которым уже можно выбрасывать поток.
- Скрипт (по снифферу) получает решение рекапчи-3.
Пробую перехватывать интернал_клиента чтобы знать на каком этапе решение рекапчи, чтобы дождаться решение - мне отдает пустые значения http_client_url(), и до и во время и после...
Прошу пнуть, как мне получить эти данные чтобы синхронизировать рекапчу и действия бота?
-
Что значит асинхронно? Там же пока действие не завершится дальше скрипт работать не будет.
-
@Webmaster добавь действие - ждать выполнения асинхронной функции...
-
@Webmaster said in Recaptcha 3. Асинхронное решение:
На браузере последнее время много на этом моменте летит в треш. Изучаю варианты, чтобы очистить совесть, нужно пробовать.
Как уже писал сервисы не дадут вам нормальный score, это будет score бота. Если у сайта повышенные требования к нему, то это не сработает.