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);
});
