Проблема при парсинге сайта на Kotlin для приложения под андроид

Код парсера:

fun getAllManga(url: String) {

        val doc: Document = Jsoup
            .connect(url)
            .get()
        val mangaList: Elements = doc
            .select("div[class=tile col-sm-6 ]")
        val mangaSaleList: Elements = doc
            .select("div[class=tile col-sm-6 for-sale]")
        val mangaPages = doc
            .select("span[class=pagination]")
            .select("a[class=nextLink]")
            .attr("href")

        for (i in 0 until mangaSaleList.size) {
            val nameManga = mangaSaleList
                .eq(i)
                .select("div[class=desc]")
                .select("h3")
                .select("a")
                .text()
            val urlImage = mangaSaleList
                .eq(i)
                .select("div[class=img]")
                .select("a")
                .select("img")
                .attr("data-original")

            val manga = Manga(
                name = nameManga,
                imgUrl = urlImage
            )
            mMangaViewModel.addAllManga(manga)
        }

        for (i in 0 until mangaList.size) {
            val nameManga = mangaList
                .eq(i)
                .select("div[class=desc]")
                .select("h3")
                .select("a")
                .text()
            val urlImage = mangaList
                .eq(i)
                .select("div[class=img]")
                .select("a")
                .select("img")
                .attr("data-original")

            val manga = Manga(
                name = nameManga,
                imgUrl = urlImage
            )
            mMangaViewModel.addAllManga(manga)
        }

        if (mangaPages.isNotEmpty()) {
            getAllManga("$BASE_URL$mangaPages")
        }

    }

    fun getNewManga(url: String) {

        val doc: Document = Jsoup
            .connect(url)
            .get()
        val mangaList: Elements = doc
            .select("table[class=table table-hover newChapters ]")
            .select("tbody")
            .select("tr")
        val mangaPages = doc
            .select("table[class=table table-hover newChapters ]")
            .select("tfoot")
            .select("span[class=pagination]")
            .select("a[class=nextLink]")
            .attr("href")

        for (i in 0 until mangaList.size) {

            val check = mangaList
                .eq(i)
                .select("sup")

            if (check.isNotEmpty()) {

                val nameManga = mangaList
                    .eq(i)
                    .select("a")
                    .text()

                val urlImage = mangaList
                    .eq(i)
                    .select("span")
                    .attr("rel")

                val manga = NewManga(
                    name = nameManga,
                    imgUrl = urlImage
                )
                mMangaViewModel.addNewManga(manga)
            } else {

                val nameUrl = mangaList
                    .eq(i)
                    .select("a")
                    .attr("href")
                val page: Document = Jsoup
                    .connect("$BASE_URL$nameUrl")
                    .get()
                val nameManga = page
                    .getElementById("mangaBox")
                    .select("h1")
                    .select("a")
                    .text()
                val urlImage = mangaList
                    .eq(i)
                    .select("span")
                    .attr("rel")

                val manga = NewManga(
                    name = nameManga,
                    imgUrl = urlImage
                )
                mMangaViewModel.addNewManga(manga)
            }
        }

        if (mangaPages.isNotEmpty()) {
            getNewManga("$BASE_URL$mangaPages")
        }

    }

Парсер работает минуту-две а после приложение вылетает с ошибкой 429 - слишком много запросов. Пробовал слипать, но слип в 5 секунд это уже долго да и все равно даже со слипом выдает 429. Заголовки тоже пробовал передавать, смотрел через браузер какие передают, такие и передавал, юзер агент в том числе. Прокси не вариант, так как бесплатные либо не работают либо очень медленные, а в платных не вижу смысла, так как приложение будет бесплатным. Есть какие-нибудь советы как избавиться от 429?


Ответы (0 шт):