set_init_java_script(script_text, add_file); - добавить на текущую страницу и вызвать произвольный JS сразу после окончания загрузки всей страницы (и каждого фрейма страницы). В каждом фрейме и на странице будет выполнен это код. Это может пригодится для изменения объектов страницы, например navigator.appName.
Функция на вход принимает параметры:
script_text – текст скрипта. Если нужно получить результат работы скрипта, то передача происходит через создания дополнительных DOM объектов на странице. add_file – путь к файлу, содержимого которого будет добавлено в начало текста скрипта (если пустое или файла нет то ни на что не повлияет).
После отработки функция возвращает результат своей работы в робот :
true – успешно выполнили
false – выполнить не удалось
Пример использования set_init_java_script (Python):
# Additional paths import sys sys.path.insert(0, '../../../Templates PY/') xhe_host = "127.0.0.1:7013" from xweb_human_emulator import * # начало echo("<hr><font color=blue>browser.xxxxxxxxx</font><hr>") # 1 echo("1. Зададим начальный Java Script ") # JS js_new_naviagtor="\ var platformProp = { get: function () { return '%%PLATFORM'; } };\ var appName = { get: function () { return '%%APPNAME'; } };\ var languageProp = { get: function () { return '%%LANGUAGE'; } };\ var languageBrowserProp = { get: function () { return '%%LANGUAGE_BROWSER'; } };\ var languageSystemProp = { get: function () { return '%%LANGUAGE_SYSTEM'; } };\ var languageUserProp = { get: function () { return '%%LANGUAGE_USER'; } };\ var hardwareConcurencyProp = { get: function () { return %%HWC; } };\ Object.defineProperty(window.navigator, 'platform', platformProp);\ Object.defineProperty(window.navigator, 'appName', appName);\ Object.defineProperty(window.navigator, 'language', languageProp);\ Object.defineProperty(window.navigator, 'browserLanguage', languageBrowserProp);\ Object.defineProperty(window.navigator, 'systemLanguage', languageSystemProp);\ Object.defineProperty(window.navigator, 'userLanguage', languageUserProp);\ Object.defineProperty(window.screen, 'width', { get: function () { return 1024; } });\ Object.defineProperty(window.screen, 'height', { get: function () { return 768; } });\ Object.defineProperty(window.navigator, 'hardwareConcurrency', hardwareConcurencyProp);\ window.navigator.javaEnabled=function(){return false)}))\ alert(navigator.plugins.length))\ " # поменяем JS под наши нужды js_new_naviagtor=js_new_naviagtor.replace("%%PLATFORM","Win64") js_new_naviagtor=js_new_naviagtor.replace("%%APPNAME","Netscape") js_new_naviagtor=js_new_naviagtor.replace("%%LANGUAGE_BROWSER","ru-RU") js_new_naviagtor=js_new_naviagtor.replace("%%LANGUAGE_SYSTEM","ru-RU") js_new_naviagtor=js_new_naviagtor.replace("%%LANGUAGE_USER","ru-RU") js_new_naviagtor=js_new_naviagtor.replace("%%LANGUAGE","ru-RU") js_new_naviagtor=js_new_naviagtor.replace("%%HWC","1") echo(browser.set_init_java_script(js_new_naviagtor),"<br>") # user agent #browser.set_user_agent("Mozilla/5.0 (Windows NT 10.0) WOW64) Trident/7.0) .NET4.0C) .NET4.0E) rv:11.0) like Gecko")) #https:#panopticlick.eff.org/results?&t=111&dnt=111&a=111#fingerprintTable #522df22d2d7b711e3964d40dea342b0f e2cc11feadb5c4d14da36a05b6c89fdf #883b0b504c37666be40c1971ea4a159f f7280c6f24f28cbde3a0bf10ff38a036 # 2 echo("2. Посмотрим изменения : ") echo(browser.navigate("whoer.net")," ") sleep(2) anchor.get_by_attribute("class","btn-more").focus() anchor.get_by_attribute("class","btn-more").send_mouse_click() # конец echo("<hr><br>") # Quit app.quit()