API сервиса Xtool.ru

В АПИ 2.0 теперь доступно гораздо больше различных параметров и их детализация (Тиц, PR, Alexa, Linkpad, Liveinternet, Majesticseo, заспамленность, возраст, раскрученность в Яндексе и Гугле, АГС и тд).

Исходящие запросы: имеют структурированный вид; отправляются на сервер в формате json; метод отправки запроса POST; тип запроса PUT.

Входящие запросы: так же имеют полноценный структурированный вид; приходят в формате json.


Общая концепция апи запросов к апи серверу:
  • Формирование массива данных запроса к серверу
  • Отправка данных запроса на сервер http://api.xtool.ru и получение ответа
  • Обработка ответов сервера


1) Варианты формирования массива данных запроса:
  • Получение информации о балансе пользователя

    Массив данных запроса имеет вид (пример на php):
    
    	$data = [
    		'type'		=> 'balance',				// Тип запроса
    		'login'		=> 'UserEMail@site.ru',			// Логин пользователя
    		'pass'		=> hash('sha512', 'UserPassword')	// Пароль пользователя
    	];
    
    
  • Получение информации о балансе пользователя для владельцев ПО

    Массив данных запроса имеет вид (пример на php):
    
    	$data = [
    		'type'		=> 'balance',				// Тип запроса
    		'referrer'	=> ИдРеферера,				// ИД владельца ПО
    		'login'		=> 'UserEMail@site.ru',			// Логин пользователя
    		'pass'		=> hash('sha512', 'UserPassword')	// Пароль пользователя
    	];
    
    
  • Типовой запрос трастовости страницы

    Массив данных запроса имеет вид (пример на php):
    
    	$data = [
    		'type'		=> 'trust',				// Тип запроса
    		'login'		=> 'UserEMail@site.ru',			// Логин пользователя
    		'pass'		=> hash('sha512', 'UserPassword'),	// Пароль пользователя
    		'url'		=> 'http://xtool.ru/'			// Урл для расчета траста
    	];
    
    
  • Типовой запрос трастовости страницы для владельцев ПО

    Массив данных запроса имеет вид (пример на php):
    
    	$data = [
    		'type'		=> 'trust',				// Тип запроса
    		'referrer'	=> ИдРеферера,				// ИД владельца ПО
    		'login'		=> 'UserEMail@site.ru',			// Логин пользователя
    		'pass'		=> hash('sha512', 'UserPassword'),	// Пароль пользователя
    		'url'		=> 'http://xtool.ru/'			// Урл для расчета траста
    	];
    
    
  • Дополнительные настройки в запросы трастовости страницы

    Для всех видов запросов трастовости можно применить дополнительный параметр remove
    Данный параметр: является не обязательным; имеет тип массив; в значениях указываются поля, которые не должны отображаться в результате.

    Например, массив данных запроса имеет вид (пример на php):
    
    	$data = [
    		'type'		=> 'trust',				// Тип запроса
    		'referrer'	=> ИдРеферера,				// ИД владельца ПО
    		'login'		=> 'UserEMail@site.ru',			// Логин пользователя
    		'pass'		=> hash('sha512', 'UserPassword'),	// Пароль пользователя
    		'url'		=> 'http://xtool.ru/',			// Урл для расчета траста
    		'remove'	=> ['xt_history', 'page:title']		// Дополнительный параметр
    	];
    
    

    В данном примере результирующий ответ от сервера будет сформирован без значения xt_history и без вложенного в ячейку page значения title

  • Запрос на установку капчи

    Массив данных запроса имеет вид (пример на php):
    
    	$path		= 'captcha.jpg';				// Полный путь к картинке
    	$captcha_data	= file_get_contents($path);			// Получаем данные картинки
    	
    	$data = [
    		'type'		=> 'captcha-set',			// Тип запроса
    		'login'		=> 'UserEMail@site.ru',			// Логин пользователя
    		'pass'		=> hash('sha512', 'UserPassword'),	// Пароль пользователя
    		'captcha_data'	=> base64_encode($captcha_data)		// Данные картинки в base64
    	];
    
    
  • Запрос на установку капчи с дополнительным параметром

    Массив данных запроса имеет вид (пример на php):
    
    	$data = [
    		'type'		=> 'captcha-set',			// Тип запроса
    		'login'		=> 'UserEMail@site.ru',			// Логин пользователя
    		'pass'		=> hash('sha512', 'UserPassword'),	// Пароль пользователя
    		'captcha_data'	=> base64_encode($captcha_data),	// Данные картинки в base64
    		'language'	=> 0					// Дополнительный параметр
    	];
    
    
  • Запрос на получение результата распознования капчи

    Массив данных запроса имеет вид (пример на php):
    
    	$data = [
    		'type'		=> 'captcha-get',			// Тип запроса
    		'captcha_id'	=> $captcha_id				// ИД полученный запросом
    	 								captcha-set
    	];
    	
    	Данный запрос необходимо выполнять в цикле с задержкой 1-5 секунд
    
    
  • Описание полей для указанных видов запросов:

    ПолеТип поляОписание
    typeСтрокаТип запроса баланса или траста.
    referrerЧислоИД в системе xtool.ru владельца Программного Обеспечения.
    loginСтрокаЛогин пользователя в системе xtool.ru, для которого делается запрос.
    passСтрокаПароль пользователя в системе xtool.ru, для которого делается запрос в зашифрованном sha512 виде.
    urlСтрокаТолько для запроса траста. Урл хоста или страницы для которого будет произведена попытка получения трастовости.
    Можно указывать как с http / https, c www / без www не имеет значения.
    removeМассивТолько для запроса траста. Массив полей, которые необходимо убрать из результирующего ответа сервера.
    Поля имеют тип строка и указываются через запятую.
    captcha_dataСтрокаТолько для установки капчи. Данные картинки в base64.
    languageЧислоТолько для установки капчи. 0 - автоматически, 1 - только кириллические буквы, 2 - только латинские буквы.
    captcha_idСтрокаИД полученный в результате запроса captcha-set.



2) Отправка данных запроса на сервер http://api.xtool.ru и получение ответа (пример на php):


	$json = json_encode($data, JSON_FORCE_OBJECT);	// Переводим массив данных запроса в json строку
	
	$ch = curl_init('http://api.xtool.ru');		// Открываем curl запрос к апи сервиса
	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');	// Параметры curl
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);	// Параметры curl
	curl_setopt($ch, CURLOPT_POST, true);		// Параметры curl
	curl_setopt($ch, CURLOPT_POSTFIELDS, $json);	// Параметры curl
	
	$response = curl_exec($ch);			// Получаем кодированный json ответ
	
	curl_close($ch);				// Закрываем curl запрос
	
	$response = json_decode($response, true);	// Преобразуем строку json в результирующий массив
							$response



3) Обработка ответов от сервера
  • Пример результирующего массива при запросе баланса:
    
    	$response = [
    		[balance]	=> 1000		// Текущий баланс оплаченных баллов пользователя
    		[ErrorCode]	=> 200		// Код ошибки
    	];
    
    
  • Пример результирующего массива при запросе траста:
    
    	$response = [
    		[trust]	=> [
    			[dateup]		=> 2015-10-28
    			[date_check]		=> 2015-10-28 17:11:41
    			[xt]			=> 7
    			[xt_change]		=> -1
    			[xt_history]		=> 8;2015-10-19#8;2015-10-09#8;2015-09-27#9;2015-09-18
    			[spammed]		=> 0
    			[nepot]			=> 0
    			[recommended_delay]	=> 0.1
    			[stability]		=> 0
    			[color]			=> 0
    			[links_market]		=> 0
    			[page]	=> [
    				[http]				=> http
    				[www]				=>
    				[title]				=> Траст сайта, seo проверка сайта,
    								анализ тиц и pr
    				[text_size]			=> 2817
    				[links_internal]		=> 33
    				[links_outbound]		=> 5
    				[links_outbound_cluster]	=>
    			]
    			[yandex]	=> [
    				[tic]				=> 230
    				[tic_glue]			=>
    				[ags]				=> 0
    				[catalog]			=>
    				[catalog_type]			=> 0
    				[date_modification]		=>
    				[date_modification_max]		=> 2015-10-18
    				[index_pages_number]		=> 267619
    				[pages_speed_change]		=> 33.33
    				[progress_total]		=> 5542
    				[progress_low]			=> 1982
    				[progress_mid]			=> 3560
    				[progress_high]			=> 0
    				[sanctions]			=> 0
    			]
    			[google]	=> [
    				[pr]				=> 4
    				[progress_total]		=> 619
    				[progress_low]			=> 619
    				[progress_mid]			=> 0
    				[progress_high]			=> 0
    			]
    			[whois]	=> [
    				[date_create]			=> 2009-01-27
    			]
    			[linkpad]	=> [
    				[date_indexing]			=> 2015-09-20
    				[index_pages_number]		=> 224
    				[domain_in]			=> 1889
    				[domain_out]			=> 38
    				[links_in]			=> 432404
    				[links_in_main]			=> 505
    				[links_out]			=> 192
    				[links_out_main]		=> 2
    				[anchors_in]			=> 3955
    				[anchors_out]			=> 36
    				[links_in_lvl_2]		=> 28153
    				[links_in_lvl_2_domain]		=> 1008
    				[links_in_lvl_3]		=> 213265
    				[links_in_lvl_3_domain]		=> 1010
    				[links_in_lvl_4]		=> 190481
    				[links_in_lvl_4_domain]		=> 658
    				[links_out_lvl_2]		=> 59
    				[links_out_lvl_3]		=> 116
    				[links_out_lvl_4]		=> 116
    			]
    			[majesticseo]	=> [
    				[index_pages_number]		=> 23680
    				[links_in]			=> 672080
    				[domain_in]			=> 1943
    				[domain_in_ip]			=> 88860
    				[citation_flow]			=> 42
    				[trust_flow]			=> 50
    				[subnets]			=> 1510
    			]
    			[liveinternet]	=> [
    				[visits_in_day]			=> 3594
    				[views_in_day]			=> 26127
    			]
    			[alexa]	=> [
    				[rank]				=> 3594
    				[links_in]			=>
    			]
    			[user]	=> [
    				[login]				=> UserEMail@site.ru
    				[balance]			=> 999.85
    				[cost]				=> 0.15
    			]
    		]
    		[ErrorCode]	=> 200		// Код ошибки
    	];
    	
    	
    	Описание полей ячейки [trust]:
    	
    	[trust]	=> [
    		[dateup]		// Дата последнего апдейта Поисковых Систем
    		[date_check]		// Дата обновления траста для запрашиваемого УРЛа
    		[xt]			// Текущее значение траста
    		[xt_change]		// Изменение траста xt по сравнению с предыдущей проверкой
    		[xt_history]		// История значений траста
    		[spammed]		// Заспамленность страницы
    		[nepot]			// Вероятность Непота (%)
    		[recommended_delay]	// Рекомендуемая задержка при обращении к сервису xtool.ru
    		[stability]		// Стабильность сервиса 0 - зеленый, 1 - белый, 2 - красный
    		[color]			// Цветовой индикатор санкций, 0 - норма
    		[links_market]		// Показатель бирживой деятельности
    		[page]	=> [
    			[http]				// Протокол http или https
    			[www]				// Зеркало www или без www
    			[title]				// Заголовок страницы
    			[text_size]			// Размер текста на странице (теги, скрипты и пр.
    							не учитывается)
    			[links_internal]		// Количество внутренних ссылок исходящих со
    							страницы
    			[links_outbound]		// Количество внешних ссылок исходящих со
    							страницы
    			[links_outbound_cluster]	// Максимальное скопление внешних ссылок на
    							странице (расположенных рядом)
    		]
    		[yandex]	=> [
    			[tic]				// Тиц сайта
    			[tic_glue]			// Склейка тиц, норма - пустое значение
    			[ags]				// Показывает наличие фильтра АГС, 0 - норма,
    							варианты - 1, 30 ...
    			[catalog]			// Данные о Яндекс каталоге
    			[catalog_type]			// Тип каталога, 0 - нет в ЯК, 1 - есть,
    							2 - скрытый ЯК
    			[date_modification]		// Дата последнего обновления страницы согласно
    							Яндексу
    			[date_modification_max]		// Максимальная дата последних изменений страниц
    							сайта согласно Яндексу
    			[index_pages_number]		// Количество страниц в индексе Яндекса
    			[pages_speed_change]		// Скорость изменений страниц сайта согласно
    							Яндексу (страниц в день)
    			[progress_total]		// Раскрученность в Яндексе общая
    			[progress_low]			// Раскрученность в Яндексе по НЧ запросам
    			[progress_mid]			// Раскрученность в Яндексе по СЧ запросам
    			[progress_high]			// Раскрученность в Яндексе по ВЧ запросам
    			[sanctions]			// Санкции яндекса: 0 - нет; 1 - агс;
    							2 - некачественные исходящие ссылки, непот,
    							3 - входящие ссылки, зона риска, 4 - минусинск
    		]
    		[google]	=> [
    			[pr]				// Pr сайта
    			[progress_total]		// Раскрученность в Google общая
    			[progress_low]			// Раскрученность в Google по НЧ запросам
    			[progress_mid]			// Раскрученность в Google по СЧ запросам
    			[progress_high]			// Раскрученность в Google по ВЧ запросам
    		]
    		[whois]	=> [
    			[date_create]			// Дата регистрации домена согласно WHOIS
    		]
    		[linkpad]	=> [
    			[date_indexing]			// Дата индексации
    			[index_pages_number]		// Количество страниц сайта известное сервису
    			[domain_in]			// Входящих доменов на сайт
    			[domain_out]			// Исходящих доменов с сайта
    			[links_in]			// Входящих ссылок на сайт
    			[links_in_main]			// Входящих ссылок на главную страницу сайта
    			[links_out]			// Количество ссылок с сайта
    			[links_out_main]		// Количество ссылок с главной страницы сайта
    			[anchors_in]			// Количество входящих анкоров
    			[anchors_out]			// Количество исходящих анкоров
    			[links_in_lvl_2]		// Количество ссылок на сайт со 2го уровня
    			[links_in_lvl_2_domain]		// Количество ссылок на сайт со 2го уровня
    							(уникальных доменов)
    			[links_in_lvl_3]		// Количество ссылок на сайт со 3го уровня
    			[links_in_lvl_3_domain]		// Количество ссылок на сайт со 3го уровня
    							(уникальных доменов)
    			[links_in_lvl_4]		// Количество ссылок на сайт со 4го уровня
    			[links_in_lvl_4_domain]		// Количество ссылок на сайт со 4го уровня
    							(уникальных доменов)
    			[links_out_lvl_2]		// Количество ссылок с сайта 2го уровня
    			[links_out_lvl_3]		// Количество ссылок с сайта 3го уровня
    			[links_out_lvl_4]		// Количество ссылок с сайта 4го уровня
    		]
    		[majesticseo]	=> [
    			[index_pages_number]		// Количество страниц сайта известное сервису
    			[links_in]			// Входящих ссылок
    			[domain_in]			// Входящих доменов
    			[domain_in_ip]			// Количество уникальных IP входящих доменов
    			[citation_flow]			// Метрика количества ссылок
    			[trust_flow]			// Метрика качества ссылок
    			[subnets]			// Количество подсетей
    		]
    		[liveinternet]	=> [
    			[visits_in_day]			// Посещений в день (среднемесячное)
    			[views_in_day]			// Просмотров в день (среднемесячное)
    		]
    		[alexa]	=> [
    			[rank]				// Ранг
    			[links_in]			// Входящих ссылок
    		]
    		[user]	=> [
    			[login]				// Логин пользователя
    			[balance]			// Баланс пользователя
    			[cost]				// Стоимость запроса
    		]
    	]
    
    
  • Пример результирующего массива при запросе captcha-set на установку капчи:
    
    	$response = [
    		[balance]	=> 9999.95		// Обновленный баланс пользователя
    		[cost]		=> 0.05			// Стоимость запроса
    		[captcha_id]	=> 1111111111		// ИД установленного запроса капчи
    		[ErrorCode]	=> 200			// Код ошибки
    	];
    
    
  • Пример результирующего массива при запросе captcha-get на получение результата распознования капчи:
    
    	$response = [
    		[captcha_id]		=> 1111111111	// ИД установленного запроса капчи
    		[captcha_response]	=> ТекстНаКапче	// Результата распознования капчи
    		[ErrorCode]		=> 200		// Код ошибки
    	];
    
    
  • Пример результирующего массива при ошибке:
    
    	$response = [
    		[Error]	=> Описание ошибки		// Текстовое описание ошибки
    		[ErrorCode]	=> 400			// Код ошибки
    	];
    
    
  • Описание кодов ошибок ErrorCode:

    Код ошибкиОписание
    307Капча еще не распознана, повторите запрос через 1-5 секунд
    400Сервер временно не доступен по техническим причинам
    401Ошибка идентификации пользователя
    402Ошибка получения баланса пользователя или недостаточно средств на балансе пользователя
    404В запросе УРЛ задан не верно или прочие ошибочные действия пользователя
    500Внутренние ошибки сервера