Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Использование экранирующего символа .
CODE:/*
{
"playerstats": {
"steamID": "76561198050187807",
"gameName": "ValveTestApp260",
"stats": [
{
"name": "total_kills",
"value": 35179
},
{
"name": "total_deaths",
"value": 30241
},
{
"name": "total_time_played",
"value": 2444377
}
]
}
}
*/
string Json="{^r^n"+
"^"playerstats^": {^r^n"+
"^"steamID^": ^"76561198050187807^",^r^n"+
"^"gameName^": ^"ValveTestApp260^",^r^n"+
"^"stats^": [^r^n"+
"{^r^n"+
"^"name^": ^"total_kills^",^r^n"+
"^"value^": 35179^r^n"+
"},^r^n"+
"{^r^n"+
"^"name^": ^"total_deaths^",^r^n"+
"^"value^": 30241^r^n"+
"},^r^n"+
"{^r^n"+
"^"name^": ^"total_time_played^",^r^n"+
"^"value^": 2444377^r^n"+
"}^r^n"+
"]^r^n"+
"}^r^n"+
"}";
messagebox (Json);
parserjson(Rez_Json, Json);
int n=0;
while (Rez_Json.playerstats.stats[n].name!="ERROR_SEARCH_JSON")
{
messagebox (Rez_Json.playerstats.stats[n].name+" = "+Rez_Json.playerstats.stats[n].value);
n++;
}
Еще
CODE:char BYTE[100000];//Массив байт для загрузки файла с капчей JPG. Потом его используем для JSON запроса
//Загружаем файл с капчей JPG и сразу форматируем его в base64
//первой выполнится функция read_file, вернет размер его и в #file[0] будет уже указатель на массив байт файла
//Затем выполнится функция base64code
string file64=base64code (#BYTE[0], read_file("C:\tab.jpg"));//Перед этим скриним часть экрана с капчей и сохраняем ее в C:\tab.jpg функцией savescreen
string json;//Строка для JSON запроса
//Формируем JSON запрос согласно документации anti-captcha.com
/*
{
"clientKey":"dce6bcbb1a728ea8d563de6d169a2057",
"task":
{
"type":"ImageToTextTask",
"body":"BASE64_BODY_HERE!",
"phrase":false,
"case":false,
"numeric":0,
"math":false,
"minLength":0,
"maxLength":0
}
}
*/
json="{^"clientKey^":^"" + "dce6bcbb1a728ea8d563de6d169a2057^"," +
"^"task^":" +
"{^"type^":^"ImageToTextTask^"," +
"^"body^":^"" + file64 + "^"," +
"^"phrase^":false," +
"^"case^":false," +
"^"numeric^":0," +
"^"math^":false," +
"^"minLength^":0," +
"^"maxLength^":0}}";
int aW=size(json);//Узнаем размер JSON запроса
strcpy(#BYTE[0], json);//Записываем JSON запрос в массив байт
messagebox(json);
string Header="Content-Type: application/x-www-form-urlencoded";//Формируем какой то заголовок
char REZ[100000];//Массив для приема ответа
sendgetweb(#REZ[0], "My bot", "POST", "https:/^/api.anti-captcha.com", "createTask", Header, #BYTE[0], aW);//Отправляем на anti-captcha.com и получаем ответ
//messagebox (format(#REZ[0]));
//Ответ такого формата
/*
{
"errorId":0,
"taskId":7654321
}
*/
parserjson(Rez_Json, format(#REZ[0]));//Парсим ответ
if (Rez_Json.errorId=="0")//Если нет ошибки
{
string id=Rez_Json.taskId;//Сохраняем полученный ID
//messagebox (id);
pause(3000);//Пауза
loop(50)
{
pause(2000);//Пауза в цикле между запросами решения
//Формируем запрос на ответ о решение капчи куда записываем наш clientKey и полученный taskId
/*
{
"clientKey":"dce6bcbb1a728ea8d563de6d169a2057",
"taskId": 7654321
}
*/
json="{^"clientKey^":^"" + "dce6bcbb1a728ea8d563de6d169a2057^"," +
"^"taskId^": 7654321}";
aW=size(json);//Узнаем размер JSON запроса
strcpy(#BYTE[0], json);//Записываем JSON запрос в массив байт
messagebox(json);
sendgetweb(#REZ[0], "My bot", "POST", "https:/^/api.anti-captcha.com", "getTaskResult", Header, #BYTE[0], aW);//Отправляем на anti-captcha.com и получаем ответ
//messagebox (format(#REZ[0]));
//Ответ такого формата
/*
{
"errorId":0,
"status":"ready",
"solution":
{
"text":"deditur",
"url":"http:\/\/61.39.233.233\/1\/147220556452507.jpg"
},
"cost":"0.000700",
"ip":"46.98.54.221",
"createTime":1472205564,
"endTime":1472205570,
"solveCount":"0"
}
*/
parserjson(Rez_Json, format(#REZ[0]));//Парсим ответ
if (Rez_Json.errorId!="0")//Если есть ошибка
{
messagebox("errorId "+Rez_Json.errorId);
break;//Выходим из цикла
}
if (Rez_Json.status=="ready")//Если капча решена
{
messagebox (Rez_Json.solution.text);//Выводим решение
messagebox (Rez_Json.solution.url);
break;//Выходим из цикла
}
}
}
else
{
messagebox (Rez_Json.errorCode);//Если не верный clientKey
}
function read_file(string pyt)
{
int size_file=0;
if (fopen (pyt, "rb")!=0)
{
size_file=freadb(#BYTE[0], 10000);
fclose();
size_file--;
}
return size_file;
} |