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