Google - swalker-888/google-indexing-api-bulk - скрипт для сбора ссылок в urls.txt и запуск - 2026 - updated

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2026
Перейти к:навигация, поиск





index.js:

const fs = require('fs');
const axios = require('axios');
const { google } = require('googleapis');
const key = require('./service_account.json');

const jwtClient = new google.auth.JWT(
    key.client_email,
    null,
    key.private_key,
    ['https://www.googleapis.com/auth/indexing']
);

async function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function main() {
    await jwtClient.authorize();

    const accessToken = jwtClient.credentials.access_token;

    const urls = fs.readFileSync('urls.txt', 'utf8')
        .split(/\r?\n/)
        .map(x => x.trim())
        .filter(Boolean);

    console.log(`Loaded ${urls.length} URLs\n`);

    let ok = 0;
    let fail = 0;

    const started = Date.now();

    for (let i = 0; i < urls.length; i++) {
        const url = encodeURI(urls[i]);

        console.log("==================================================");
        console.log(`[${i + 1}/${urls.length}] ${url}`);

        const t0 = Date.now();

        try {
            const res = await axios.post(
                'https://indexing.googleapis.com/v3/urlNotifications:publish',
                {
                    url,
                    type: 'URL_UPDATED'
                },
                {
                    headers: {
                        Authorization: `Bearer ${accessToken}`,
                        'Content-Type': 'application/json'
                    },
                    timeout: 30000
                }
            );

            ok++;

            console.log(`HTTP: ${res.status} ${res.statusText}`);
            console.log(`Time: ${Date.now() - t0} ms`);
            console.log("Response:");
            console.log(JSON.stringify(res.data, null, 2));

        } catch (e) {
            fail++;

            console.log(`Time: ${Date.now() - t0} ms`);

            if (e.response) {
                console.log(`HTTP: ${e.response.status} ${e.response.statusText}`);
                console.log("Response:");
                console.log(JSON.stringify(e.response.data, null, 2));
            } else {
                console.log("Error:");
                console.log(e.message);
            }
        }

        console.log("");

        // Чтобы не спамить API
        await sleep(200);
    }

    console.log("==================================================");
    console.log("Finished");
    console.log(`Success : ${ok}`);
    console.log(`Failed  : ${fail}`);
    console.log(`Elapsed : ${((Date.now() - started) / 1000).toFixed(2)} sec`);
}

main().catch(err => {
    console.error(err);
    process.exit(1);
});
×
Реклама
ИКС