Здравствуйте!
Проблема в данном случае не с каптчей, а в том, что API сервиса отклоняет запросы, отправленные через ZennoPoster.
Что-то подобное происходило у меня при работе с другими API, тогда в ответ я получал 403 или 503 ошибку.
Значит чтобы долго не выдумывать проблема в отклонении проверки сертификата или в работе сервиса на HTTP/2 набросал решение с использованием CURL.
О работе с Curl писали в конкурсной статье:
https://zennolab.com/discussion/threads/curl-otlichnaja-alternativa-dlja-vypolnenija-zaprosov-get-post.33699/
Так как архив в статье мог устареть, то переходим на официальный сайт на страничку:
https://curl.se/windows/
Скачиваем файл: curl for 64-bit
В нем несколько файлов, нам нужны 2:
Посмотреть вложение 115189
Их ложим рядом с шаблоном.
Сам запрос выполнять можно примерно так:
string url = "";
string json="";
string api="";
string tempFilePath = Path.GetTempFileName();
File.WriteAllText(tempFilePath, json);
string[] data = {
string.Format("-X POST {0}", url),
string.Format("-H \"Content-Type: application/json\""),
string.Format("-H \"apikey: {0}\"", api),
string.Format("-d @{0}", tempFilePath),
"-k"
};
var setting = new System.Diagnostics.ProcessStartInfo {
CreateNoWindow = true,
FileName = Path.Combine(project.Directory, "curl.exe"),
Arguments = string.Join(" ", data),
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
};
using (var process = new System.Diagnostics.Process { StartInfo = setting }) {
process.Start();
string output = process.StandardOutput.ReadToEnd().Trim();
string error = process.StandardError.ReadToEnd().Trim();
process.WaitForExit();
if (process.ExitCode != 0) {
throw new Exception("ERROR curl. Exit Code: "+ process.ExitCode.ToString()+ ". Error: "+error.ToString());
}
return output;
}
}
В коде важно, что параметр -d шлет данные с временного файла, так как иначе ошибка при отправке, ведь размер base64 большой, Curl возмущается.
И параметр "-k" - который позволяет отказаться от проверки сертификата.
Ну, а сам Curl при необходимости пошлет запрос в HTTP/2 и не нужно переживать что проблема из-за этого.
Собственно после внесения данных изменений запрос до сайта доходит корректно.