set_init_java_script

set_init_java_script(script_text, add_file)

Данная команда позволяет добавить на текущую страницу и вызвать произвольный JS сразу после окончания загрузки всей страницы (и каждого фрейма страницы). В каждом фрейме и на странице будет выполнен это код. Это может пригодится для изменения объектов страницы, например navigator.appName.

Команда на вход принимает параметры:
  • script_text – текст скрипта. Если нужно получить результат работы скрипта, то передача происходит через создания дополнительных DOM объектов на странице
  • add_file – путь к файлу, содержимого которого будет добавлено в начало текста скрипта (если пустое или файла нет то ни на что не повлияет)
После отработки команда возвращает результат своей работы в робот:
  • true – успешно выполнили(type: bool)
  • false – выполнить не удалось (type: bool)



Примеры использования (php)

<?php $xhe_host = "127.0.0.1:7094";
 
// подключим функциональные объекты, если еще не подключен
if (!isset($path))
  $path="../../../Templates/init.php";
require($path);
 
// начало
echo "<hr><font color=blue>browser->".basename (__FILE__)."</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, 'plugins', {get: function() {return [{name:'name1' , description:'desc1', version: '2.1' },{name:'name2' , description:'desc2', version: '2.1' }];}});
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=str_replace("%%PLATFORM","Win64",$js_new_naviagtor);
$js_new_naviagtor=str_replace("%%APPNAME","Netscape",$js_new_naviagtor);
$js_new_naviagtor=str_replace("%%LANGUAGE_BROWSER","ru-RU",$js_new_naviagtor);
$js_new_naviagtor=str_replace("%%LANGUAGE_SYSTEM","ru-RU",$js_new_naviagtor);
$js_new_naviagtor=str_replace("%%LANGUAGE_USER","ru-RU",$js_new_naviagtor);
$js_new_naviagtor=str_replace("%%LANGUAGE","ru-RU",$js_new_naviagtor);
$js_new_naviagtor=str_replace("%%HWC","1",$js_new_naviagtor);
echo $browser->set_init_java_script($js_new_naviagtor)."<br>";
 
 
// 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();
?>

Примеры использования (cs)

#region using
 
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading;
 
using XHE;
using XHE.XHE_DOM;
using XHE.XHE_System;
using XHE.XHE_Window;
using XHE.XHE_Web;
 
#endregion
 
 class Program:XHEScript
 {
	  static void Main(string[] args)
	  {
			// init XHE
			server="127.0.0.1:7019";
			InitXHE();
 
			// начало
			echo("<hr><font color=blue>browser.set_init_java_script</font><hr>");
 
			// обновим страницу (для повторного выполнения скрипта)
			browser.refresh();
 
			// 1 шаг
			echo("1. Зададим начальный Java Script  : ");
			echo (browser.set_init_java_script(@"
				function setAppName(window, appName) 
				{
					if (window.navigator.appName != appName) 
					{
						var appNameProp = { get: function () { return appName; } };
						try 
						{
							Object.defineProperty(window.navigator, 'appName', appNameProp);
						} 
						catch (e) 
						{
							window.navigator = Object.create(navigator, {appName: appNameProp});
						}
					}
				}
				setAppName(window, 'new app name1');","")+"<br>");
 
			// 2 шаг
			echo("2. Посмотрим изменения appName : ");
			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>");
 
			app.quit();            
	  }
}

Примеры использования (js)

// подключим функциональные объекты, если еще не подключен
xhe_host="127.0.0.1:7010";
echo=require("../../../Templates JS/init.js");
 
// начало
echo("<hr><font color=blue>browser.set_init_java_script</font><hr>");
 
var sInitJS="\
function setAppName(window, appName) {if (window.navigator.appName != appName) {\
        var appNameProp = { get: function () { return appName; } };\
        try {\
            Object.defineProperty(window.navigator, 'appName', appNameProp);\
        } catch (e) {\
            window.navigator = Object.create(navigator, {\
                appName: appNameProp\
            });\
        }\
    }\
}\
setAppName(window, 'new app name');";
 
// 1 шаг
echo("1. Зададим начальный Java Script : ");
echo(browser.set_init_java_script(sInitJS)+"<br>");
 
// 2 шаг
echo("2. Посмотрим изменения appName : ");
echo(browser.navigate("whoer.net")+" ");
browser.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();

Примеры использования (py)

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