Нет необходимости в частном API, чтобы делать подобные вещи.
Например, вы используете индикатор прогресса.Используя асинхронный NSURLConnection, вы можете получить размер ожидаемого размера контента, который вы хотите загрузить:
-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response
{
[response expectedContentLength];
}
Затем вы просто сравните с количеством загруженных данных.Настройка пользовательских агентов может быть выполнена с помощью инфраструктуры CFNetwork.