• EN
    RU

browser/set_init_java_script

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()