执行js以伪造导航器属性

时间:2018-10-07 12:35:42

标签: selenium selenium-chromedriver

我正在为一个非常敏感的网站开发一个报废项目。 它可以跟踪许多数据并根据这些数据制作指纹。所以我需要操纵这些数据才能工作。 例如,如果要更改属性navigator.platform,则必须执行

Object.defineProperty(navigator,"platform",{get:function(){return ""},set:function(t){}});

问题是执行该脚本,直到将在网页上执行其他脚本为止。

using (var driver = new ChromeDriver(path, options))
{
    driver.Manage().Window.Size = new Size(1200, 2300);

    driver.Url = "https://browserleaks.com/javascript";

        driver.ExecuteScript("Object.defineProperty(navigator,\"platform\",{get:function(){return\"\"},set:function(t){}});");

    try
    {
        driver.Navigate().GoToUrl("https://browserleaks.com/javascript");
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));

        wait.Until(d => d.FindElement(By.XPath("//*[@id=\"localeString\"]")).Text != String.Empty);
    }
    catch
    {
        Console.WriteLine("Times out");
    }
    driver.GetScreenshot().SaveAsFile($"screens/{DateTime.Now.Minute}{DateTime.Now.Second}.png", ScreenshotImageFormat.Png);
}

在上面的代码示例中,js代码将在页面脚本之后执行。因此,请帮助我使其在页面上的其他脚本之前执行。

0 个答案:

没有答案