Разобрался!
Это действие решает google recaptcha 3.0 Recaptcha v3, в отличие от других капч, не показывает изображения и не требует от пользователя какого-либо взаимодействия. Она работает абсолютно незаметно. Поэтому ее можно разместить в нескольких местах на сайте или даже на каждой странице. При переходе на страницу или при вызове события, к которым прикреплена Recaptcha v3, сайт получает рейтинг браузера. Рейтинг отражает вероятность того, что посетитель сайта является ботом. Сайт может использовать результат по своему усмотрению. Например, один сайт может показывать капчу, если рейтинг пользователя ниже 0.4, на другом сайте может потребоваться проверка телефона, если оценка ниже 0.6, и пользователь будет заблокирован, если она ниже 0.3. Это действие перехватывает запрос верификации пользователя сайтом и отправляет его в указанный сервис. Когда сервис вернет результат, он заменит реальный рейтинг браузера на то, что был получен от одного из работников выбранного сервиса. ВАЖНО: Это действие само по себе не решает капчи, вместо этого оно устанавливает параметры решения Recaptcha v3 для последующих вызовов. Следовательно, оно должно быть вызвано до того, как появится Recaptcha v3. Каждый сайт имеет свои требования к минимальному рейтингу, вы можете настроить ожидаемое значение, изменив параметр 'Минимальный рейтинг'. Recaptcha v3 может быть размещена на всех страницах сайта. В таком случае, каждая страница будет иметь свое собственное действие. Например, могут быть действия для посещения страницы с ценами, посещения страницы c часто задаваемыми вопроcами и создание нового пользователя. Вы можете отключить перехват для второстепенных действий и включить его для важных, изменив параметр 'Название действия'. Чтобы найти точное название действия на конкретном сайте, вам необходимо зайти на страницу с требуемым действием, после чего появится сообщение с его названием.(скрин). Все уже вызванные дейстия будут отображены в выпающем списке для параметра 'Название действия'. Использование сервиса требует ключа, который должен быть куплен на сайте сервиса и введен в поле "Ключ Rucaptcha/2captcha". В качестве альтернативы этому действию вы можете попытаться обойти Recapthca V3. Вот что влияет на итоговый рейтинг: профиль с авторизацией Gmail и историей поиска Google созданный некоторе время назад, хороший прокси, продолжительная история действий на сайте, с которым вы работаете. Остановимся подробнее на последнем пункте. Recaptcha v3 отслеживает ваши действия на каждом сайте, регистрируя каждое действие, которое вы выполняете. Например, если вы посещаете страницу покупок, ищете какой-то товар, посещаете страницу с часто задаваемыми вопросами и только после этого пытаетесь зарегистрировать учетную запись, это будет гораздо менее подозрительно, чем попытка зарегистрировать учетную запись немедленно, и с высокой вероятностью получит лучший результат. Существует еще один тип рекапчи, который называется невидимая рекапча. Он работает почти так же, как Recaptcha v3, но вместо того, чтобы возвращать рейтинг пользователя, он показывает изображение, если пользователь кажется подозрительным, это эквивалентно низкому рейтингу. BAS также может решать невидимую рекапчу, для этого используйте действие 'Решить Recaptcha 2.0'.Google Sheets API v4 | NodeJs | Не могу запустить код в БАС
-
Re: Google Sheets API v4 | NodeJs | Как запустить в БАС ?
Доброго дня, у меня такая же проблема как у этого пользователя, скрипт ничего не выводит, к сожалению https://community.bablosoft.com/post/30034 не помог, подскажите что я не так делаю?
Код:await (new Promise((resolve, reject) => {
/Place your code here and call resolve to proceed/const fs = require('fs').promises;
const path = require('path');
const process = require('process');
const {authenticate} = require('@google-cloud/local-auth');
const {google} = require('googleapis');// If modifying these scopes, delete token.json.
const SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly'];
// The file token.json stores the user's access and refresh tokens, and is
// created automatically when the authorization flow completes for the first
// time.
const TOKEN_PATH = path.join(process.cwd(), 'token.json');
const CREDENTIALS_PATH = path.join(process.cwd(), 'credentials.json');/**
- Reads previously authorized credentials from the save file.
- @return {Promise<OAuth2Client|null>}
*/
async function loadSavedCredentialsIfExist() {
try {
const content = await fs.readFile(TOKEN_PATH);
const credentials = JSON.parse(content);
return google.auth.fromJSON(credentials);
} catch (err) {
return null;
}
}
/**
- Serializes credentials to a file comptible with GoogleAUth.fromJSON.
- @param {OAuth2Client} client
- @return {Promise<void>}
*/
async function saveCredentials(client) {
const content = await fs.readFile(CREDENTIALS_PATH);
const keys = JSON.parse(content);
const key = keys.installed || keys.web;
const payload = JSON.stringify({
type: 'authorized_user',
client_id: key.client_id,
client_secret: key.client_secret,
refresh_token: client.credentials.refresh_token,
});
await fs.writeFile(TOKEN_PATH, payload);
}
/**
- Load or request or authorization to call APIs.
*/
async function authorize() {
let client = await loadSavedCredentialsIfExist();
if (client) {
return client;
}
client = await authenticate({
scopes: SCOPES,
keyfilePath: CREDENTIALS_PATH,
});
if (client.credentials) {
await saveCredentials(client);
}
return client;
}/**
- Prints the names and majors of students in a sample spreadsheet:
- @see https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
- @param {google.auth.OAuth2} auth The authenticated Google OAuth client.
*/
async function listMajors(auth) {
const sheets = google.sheets({version: 'v4', auth});
const res = await sheets.spreadsheets.values.get({
spreadsheetId: '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms',
range: 'Class Data!A2:E',
});
const rows = res.data.values;
if (!rows || rows.length === 0) {
console.log('No data found.');
return;
}
console.log('Name, Major:');
rows.forEach((row) => {
// Print columns A and E, which correspond to indices 0 and 4.
console.log(${row[0]}, ${row[4]});
});
}
authorize().then(listMajors).catch(console.error);
resolve()
})); -
с гугл таблицами наприер я работаю норм через get запросы отправляемые басом. промежуточный код для связи гугл таблицы и баса это код написаный в https://script.google.com/ .
такой принцип:
BAS (get запрос) -> https://script.google.com -> ваша гугл таблица она определяется кстати по id