@teamgame said in Блок для сохранения заметок / шаблонов:
О еще можно сделать календарь запуска / остановки скрипта. Например на ночь)
Для этого сам использую планировщик задач windows. Отлично подходит для этого и справляется.
@support said in Разные ip для разных сайтов:
Есть у меня идея сделать разные настройки заголовков, прокси, и данных браузера для разных сайтов или вкладок
Я давно хотел предложить эту идею) У себя пока сделал так:
function BASExtended() {
}
BASExtended.prototype.setProfile = function (profile) {
BE.profile = profile;
reset()!
if (BE.profile.userAgent) {
agent(BE.profile.userAgent)!
}
if (BE.profile.proxy) {
proxy(BE.profile.proxy)!
}
if ((BE.profile.cookies && (typeof (BE.profile.cookies) === 'object'))) {
restore_cookies(JSON.stringify(BE.profile.cookies))!
}
resize(BE.profile.resolution.w, BE.profile.resolution.h)!
};
BE = new BASExtended();
BE.setProfile({
proxy: false,
userAgent: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0',
cookies: false,
resolution: {w: 800, h: 600}
});
Асинхронные функции не будут работать в if, нужно оборачивать в специальный _if
@support да, я писал код еще до того, как узнал все тонкости api. Но он все равно работает, правда мой подход не совсем правильный (получается каша из асинхронных функций, они не выполнятся в нужном порядке), но перед загрузкой страницы все равно успевают выполниться. Вчера переделал правильный вариант
function BASExtended() {
this.isLog = false;
}
BASExtended.prototype.log = function (msg) {
if (BE.isLog) {
log(msg);
}
};
BASExtended.prototype.callAsyncFunct = function () {
var tmp = _arguments();
var args = [];
var funct = tmp.shift();
var code = '';
for (var i = 0; i < tmp.length; i++) {
eval('var arg_' + i + '=tmp[i]');
args.push('arg_' + i);
}
var asyncFunct = null;
if (typeof (funct) === 'function') {
code = 'asyncFunct = function(){funct(' + args.join() + ');}';
} else {
code = 'asyncFunct = function(){' + funct + '(' + args.join() + ');}';
}
BE.log('callAsyncFunct, ' + code);
eval(code);
_call(asyncFunct, null)!
};
BASExtended.prototype.setProfile = function (profile) {
BE.profile = profile;
BE.log('Reset');
reset()!
_if(BE.profile.userAgent, function () {
_call(BE.callAsyncFunct, ['BE.setUserAgent', BE.profile.userAgent])!//~
})!
_if(BE.profile.proxy, function () {
_call(BE.callAsyncFunct, ['BE.setProxy', BE.profile.proxy])!//~
})!
_if(BE.profile.cookies && (typeof (BE.profile.cookies) === 'object'), function () {
_call(BE.callAsyncFunct, ['BE.setCookies', BE.profile.cookies])!
})!
_call(BE.callAsyncFunct, ['BE.setResolution', (BE.profile.resolution && BE.profile.resolution.w ? BE.profile.resolution.w : 800), (BE.profile.resolution && BE.profile.resolution.h ? BE.profile.resolution.h : 600)])!
};
BASExtended.prototype.setProxy = function (p) {
BE.log('setProxy: ' + p);
proxy(p)!
};
BASExtended.prototype.setCookies = function (cookies) {
BE.log('Set cookies: ' + (JSON.stringify(cookies)));
restore_cookies(JSON.stringify(cookies))!
};
BASExtended.prototype.setResolution = function (w, h) {
BE.log('setResolution: ' + w + 'x' + h);
resize(w, h)!
};
BE = new BASExtended();
BE.setProfile({
proxy: false,
userAgent: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0',
cookies: false,
resolution: {w: 800, h: 600}
});
@blackhacker Да, так лучше