Как на xNet.Leaf / ZennoPoster.HTTP.Request отправить POST на anti-captcha

EKO

Client
Регистрация
10.07.2019
Сообщения
69
Благодарностей
9
Баллы
8
Подскажите, что я делаю не так, не получается отправить запрос на сервис anti-captcha, выдает ошибку авторизации на сервисе из-за не правильного ключа "ERROR_KEY_DOES_NOT_EXIST", при выполнение через стандартный кубик, все работает и приходит нужный ответ.

C#:
RequestParams requestParams = new RequestParams();
requestParams["clientKey"] = "Мой ключ 100% правильный";
requestParams["taskId"] = p.Var("claimCaptcha");

p.Variables["resultCaptcha"].Value = request
    .Post("https://api.anti-captcha.com/reportIncorrectImageCaptcha",requestParams)
    .ToString();
Все выполняю на xNet.Leaf предварительно перед запросом устанавливается прокси, юа, куки.

C#:
#region Setting: proxy
HttpRequest request = new HttpRequest();
request.KeepAlive = false;
Proxy proxy = new ProxyHandler(i,p,ref fm).Separation(i.GetProxy());
ProxyType proxyType = proxy.protocol == "http" ? ProxyType.HTTP : ProxyType.Socks5;
request.Proxy = ProxyClient.Parse(proxyType,$"{proxy.ip}:{proxy.port}:{proxy.login}:{proxy.password}");

#endregion
#region Setting: useragent
request.UserAgentRandomize();
request.IgnoreProtocolErrors = true;
request.EnableEncodingContent = true;
request[HttpHeader.AcceptLanguage] = "ru-RU,ru;q=0.7,en-US;q=0.5,en;q=0.2";
request[HttpHeader.Accept] =
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";

#endregion

request.Cookies = new CookieStorage();
request.CharacterSet = Encoding.UTF8;

=> Post
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 689
Баллы
113

EKO

Client
Регистрация
10.07.2019
Сообщения
69
Благодарностей
9
Баллы
8
а какой смысл делать запрос на сервис с прокси ? или это передаваемый параметр ?
Я не задавался данным вопросом, по привычке сделал как обычно. Нет это не параметр.
 

EKO

Client
Регистрация
10.07.2019
Сообщения
69
Благодарностей
9
Баллы
8
Аналогичная ситуация на методе Zenno, приходит ответ "ERROR_KEY_DOES_NOT_EXIST"
C#:
p.Variables["resultCaptcha"].Value = ZennoPoster.HTTP.Request(
    ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.POST,
    $"https://api.anti-captcha.com/reportIncorrectImageCaptcha",
    $"clientKey=Здесь 100% верный ключ&taskId={p.Var("claimCaptcha")}",
    respType:ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
Вот API anti-captcha:
C#:
curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY",
    "taskId":12345
}' https://api.anti-captcha.com/reportIncorrectImageCaptcha
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 689
Баллы
113

EKO

Client
Регистрация
10.07.2019
Сообщения
69
Благодарностей
9
Баллы
8
лучше сам запрос заскринь. что именно в трафике монитора ушло ? в параметрах.
Вы правы, нужно полное соответствие параметров в данных запросах, вот так все работает (полное дублирование скобок, кавычек, селекторов):
C#:
p.Variables["resultCaptcha"].Value = ZennoPoster.HTTP.Request(
    ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.POST,
    $"https://api.anti-captcha.com/reportIncorrectImageCaptcha",
    @"{""clientKey"":""Здесь 100% верный ключ"",""taskId"":""300956119""}",
    respType:ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
547
Баллы
93
В запросе необходимо отправлять JSON, для этого, необходимо указать "application/json" в самом запросе. Сформировать JSON можно через StringContent, либо другим удобным способом.

C#:
var stringContent = new StringContent("{ json }");

var httpResponse = request.Post("https://api.anti-captcha.com/reportIncorrectImageCaptcha", stringContent, "application/json").ToString();
Больше информации по работе с Leaf.xNet можно найти в моей статье.

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

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