Базару 0, инфа добрая. Хотя про аварийные ситуации уже не ваша должна быть проблема... Главное чтобы программа после перезапуска работала стабильно, остальное уж не стоит брать во внимание как по мне. Еще тест на чистую машину тоже хз, обычно софты на дедиках запускают, а там каждый хостинг сам выбирает что блочить и как работать, так что..
Лайфхаки BAS
-
Есть несколько интересных функций, о которых мог кто-то не знать. Делюсь, вдруг кому пригодится:
directory_of('F:\\Text\\api.txt'); /* returns `F:/Text` */ filename_of('F:\\Text\\api.txt'); /* returns `api.txt` */ _user_data_folder(); /* returns `C:/Users/USERNAME/AppData/Local` */ -
Немного костыльный способ найти путь к вашему модулю, это пригодится для разработчиков модулей в которых используются доп файлы, чтобы в скомпилированном скрипте ваш код мог найти нужные файлы без лишних копирований.
-
@GamiD said in Лайфхаки BAS:
Конвертор BAS Cookie для Google Chrome расширения EditThisCookie
Проверял на mail.ru, facebook.com и еще на нескольких сайтах возможно есть сайты на которых не будет работатьПривет, сейчас не работает.
У кого-то есть готовое решение ? -
Так как на данный момент в модулях BAS не работают зависимости, то я придумал способ использовать модули (которые устанавливаются только при использовании, строка, путь и т.д) в других модулях, без необходимости использовать дополнительные действия.
Нужно добавить
/*Dat:eyJzIjoiaXNfc3RyaW5nIn0=*/в code.js файлы действий,eyJzIjoiaXNfc3RyaW5nIn0=- это закодированная в base64 строка{"s":"is_string"},is_string- это имя любого действия нужного модуля (можно найти в manifest.json файле модуля).Этот код нужно добавлять только в те действия которые зависят от других модулей.
Пример модуля использующего действие модуля "Строка": TestModule.zip
Тестовый проект: depends.xml -
Встала перед мной задачка работать с большими файлами в бас. Стандартные инструменты для объемов не подходят, городить костыли не очень хочется а js из выполнить код оказался слишком медленным и прожерливым. Казалось бы безнадега, но ведь есть еще и node js. Вот краткий результат на обработку 123к строк по 11 регуляркам и записью в разные файлы

ВСе что нужно - включить node js без каких либо модулей и скопипасть этот код. Ну и синхронизироватьconst fs = require('fs'), readline = require('readline'); const instream = fs.createReadStream('pathToFile'); //тут пишем путь к файлу, который нужно сортировать const other = fs.createWriteStream( 'pathToOther', {encoding:'utf8'}); //а тут файлик для сохранения не прошедших проверку строк const myCheck = fs.createWriteStream( 'pathToResult', {encoding:'utf8'});//ну а этот файл сохранятся уже подходящие строки const rl = readline.createInterface({ input: instream, crlfDelay: Infinity }); let uniqMyCheck = new Set(); //если не нужно чистить от дублей, то заменить new Set() на [], в строках ниже add на push let uniqOther = new Set(); rl.on('line', (line) => { let currLine = line.toString(); switch (true) { case currLine.search(/regex/) > -1: uniqMyCheck.add(line); break; //тут проходит наша проверка default: uniqOther.add(line); break; //а тут складывается все остальное }; }); rl.on('close', () => { uniqOther.forEach(value => other.write(`${value}\n`)); uniqMyCheck.forEach(value => myCheck.write(`${value}\n`)); //ну а так записывается результат });Знающим, умеющим и практикующим за советы и/или доработку - большая благодарность
-
This post is deleted!
-
Установка модулей для nodejs прямо из nodejs xD
Возможно будет полезным, если модуль не устанавливается штатно -
Выше человек хотел перебрать большой массив на JS. Вот статья, человек сравнил кучу виду циклов на JS.
https://gist.github.com/DungGramer/7efdfefecaa1b8f5d6510202524dc751Самый быстрый - перебрать большой массив JS без NodeJS. Результат следующий (выводы из статьи)
Массив до 100 элементов
Лучший способ: --while forward: 0.01289999857544899msМассив 1000 элементов
Лучший способ:: pop: 0.0018000006675720215msМассив 10000 элементов и далее
Лучший способ:: pop: 0.0018000006675720215msУскорил свои циклы и перебор массивов для консольных команд на 40%+
-
@tet-vivi в BAS одинаково с Chrome +-. Chromium движок же
В какой среде он запускал - я хер знает. Наверно обычная консоль хрома, судя по командам console.log. В любом случае классический старый способ i = 0, array.length, i++ для 67 элементов в BAS выдал результат медленнее существенно.
-
@FastSpace said in Лайфхаки BAS:
В какой среде он запускал - я хер знает. Наверно обычная консоль хрома,
В nodejs, но в nodejs тот же движок V8, что и в chrome
-
-
@Antonio said in Лайфхаки BAS:
function _sa(id)
{
log(id)
ScriptWorker.SetCurrentAction(id)
}После этого скрипта не открывается мой проект, другие открываются
-
@RoselieDesa said in Лайфхаки BAS:
@Antonio said in Лайфхаки BAS:
function _sa(id)
{
log(id)
ScriptWorker.SetCurrentAction(id)
}После этого скрипта не открывается мой проект, другие открываются
Прочитайте тему целиком, я уже описывал причину
-
Добавлю здесь, что бы не потерять: Кликабельные ссылки из лога BAS
-
Пример подключения к уже запущенному браузеру БАС через puppeteer (nodejs)
Полезно для нормального перехвата и изменения запросов, генерация pdf и хз для чего еще ))Example of connecting to an already running BAS browser via puppeteer (nodejs)
Useful for normal interception and modification of requests, pdf generation and for something else )) -
Вход в твитер по токену.
Вставлять в функцию 'Загрузить cookies'{"cookies":[{"domain":".twitter.com","expires":1704067200,"httpOnly": false,"name":"auth_token","path":"/","priority":"Medium","sameParty":false,"secure":false,"session":false,"size":50,"sourcePort":80,"sourceScheme":"NonSecure","value":"[[TOKEN]]"}]}expires - выставлять на пару месяцев от текущей даты.
-
@hvrsh said in Лайфхаки BAS:
Вход в твитер по токену.
Вставлять в функцию 'Загрузить cookies'{"cookies":[{"domain":".twitter.com","expires":1704067200,"httpOnly": false,"name":"auth_token","path":"/","priority":"Medium","sameParty":false,"secure":false,"session":false,"size":50,"sourcePort":80,"sourceScheme":"NonSecure","value":"[[TOKEN]]"}]}expires - выставлять на пару месяцев от текущей даты.
Этот способ будет работать до 1 января 2024 года
:DЧто бы работало дольше, нужно будет увеличить значение даты в unixtime в ключе "expires" -
@Fox ну я уточнил что под себя нужно это менять. Там вроде на пол года только можно масимум посавить, и да, это должно быть первым кубиком так как функция перезаписывает кук всего браузера, поему ведь не сделать добавление по доменам... это же не сложно дложно быть.
-
Делюсь nodejs кодом для одноименного кубика в BAS.
Требуется предварительно установить в бас nmp пакет socksv5
Запуск его приводит к развертыванию на компе socks5 прокси , этот прокси сервер можно юзать как свой личный прокси.
Авторизация по логину и паролю, в коде они указаны , можете те что вы хотите.
Прокси открывается на рандомном свободном порту.
Порт подключения к проксю будет сохранен в [[PORT]].
Ip поднятого сервера - сами определите это не хитро сделать!Код:
const socks = require('socksv5'); const net = require('net'); const auth = { login: 'qwerty123', password: 'aqwesdfg222' }; const srv = socks.createServer(function(info, accept, deny) { accept(); }); // Аутентификация srv.useAuth(socks.auth.UserPassword(function(user, password, cb) { if (user === auth.login && password === auth.password) { cb(true); } else { cb(false); } })); // Поиск свободного порта и запуск SOCKS сервера const server = net.createServer(); server.listen(0, () => { const port = server.address().port; server.close(() => { srv.listen(port, '0.0.0.0', function() { [[PORT]] = port; console.log(`SOCKS5 прокси сервер запущен на порту: ${port}`); }); }); });Следующий nodejs кубик отроет порт из [[PORT]] для внешних подключений на компе где запустился только что прокси-сервер, это выполняется создание правила в брандмауэре винды:
const { exec } = require('child_process'); // Указанный порт для правила брандмауэра const port = [[PORT]]; const ruleName = `OpenPort${port}`; console.log(`Начинаем добавление правила в брандмауэр для порта ${port}.`); // Команда для добавления правила в брандмауэр const command = `netsh advfirewall firewall add rule name="${ruleName}" dir=in action=allow protocol=TCP localport=${port}`; // Выполнение команды для открытия порта exec(command, (error, stdout, stderr) => { if (error) { console.error(`Ошибка при добавлении правила в брандмауэр: ${error}`); return; } if (stderr) { console.error(`Ошибка в выводе команды: ${stderr}`); return; } console.log(`Правило для порта ${port} успешно добавлено в брандмауэр с именем '${ruleName}'.`); console.log(stdout); });Этот код останавливает работу прокси сервера. Нужно выполнять в среде cmd\bat , например в басе этот тут: Управление Процессами>Запустить Процесс
Код:netstat -ano | findstr [[PORT]]
-
-
Section Rules
Pinned Locked LifeHacks -
Правила Раздела
Pinned Locked LifeHacks -
-
