Powershell - IE | Обход - этот сайт не является безопасным - PullRequest
0 голосов
/ 13 февраля 2020

Мой файл PS1 только запускает сайт в IE. Я не могу перейти к URL из-за этого сайта не является безопасной подсказкой. Мне нужно обойти это приглашение, и мой обходной путь не работает. Я думаю, что, возможно, неправильно выбираю больше информации с помощью sslbypass. Есть ли другой способ обойти?

"Starting Internet Explorer in Background"
$ie = New-Object -com InternetExplorer.Application
$ie.visible=$true
$uri = 'https://soti10app1/MobiControl/WebConsole/'
$ie.navigate("$uri")
while($ie.ReadyState -ne 4) {start-sleep -m 100};
if ($ie.document.url -Match "invalidcert")
        {
        "Bypassing SSL Certificate Error Page";
        #$sslbypass=$ie.Document.getElementsByTagName("a") | ?{$_.href -match "javascript:expandCollapse('infoBlockID', true);"}
        #$sslbypass.click();
        $sslbypass=$ie.Document.getElementsByTagName("a") | where-object {$_.id -eq "overridelink"};
        $sslbypass.click();
        "sleep for 5 seconds while final page loads";
        start-sleep -s 5;
        };
if ($ie.Document.domain -Match "soti10app1", "soti10app2", "soti10app3")
        {
        "Successfully Bypassed SSL Error";
        }
        else
        {
        "Bypass failed";
        }
get-process iexplore | stop-process

Страница, которая загружается при запуске скрипта.

image

Как мне обойти эту страницу и перейти к моему $ uri?

1 Ответ

1 голос
/ 07 апреля 2020

ПРИМЕЧАНИЕ. Я работаю над этим в сети intr anet с самозаверяющими сертификатами. Я настоятельно не рекомендую никому использовать этот код где-либо еще.

Я столкнулся с этой же проблемой, и похоже, что документ страницы загружается не полностью. Я обошел его с помощью приведенного ниже кода.

$IE=new-object -com internetexplorer.application
$IE.visible=$true
$IE.FullScreen=$false
$IE.ToolBar = $false
$IE.StatusBar = $false
$IE.MenuBar = $false
$IE.AddressBar = $true
$IE.Resizable = $true
$IE.navigate2("https://URL.com")
$i=0
While ( $IE.busy -eq $true ) { 
   Start-Sleep -s 1
   $i = $i + 1
   if ( $i -ge 20 ) { break }
}
$overrideLink = $IE.document.links | where-object {$_.id -eq "overridelink" }
$overrideLink.click()

Однако, похоже, веселье продолжается, когда вы проходите эту страницу. Мне все еще нужно войти в систему и, похоже, мне нужно будет выполнить итерацию через "$ IE .document.forms", чтобы выполнить это вместо использования $ IE .document.getElementById ("username"). Если вам также необходимо выполнить вход, я успешно добавил следующий код.

#Need to wait for webpage to load after bypassing
$i=0
While ( $IE.busy -eq $true ) { 
   Start-Sleep -s 1
   $i = $i + 1
   if ( $i -ge 20 ) { break }
}

$loginForm = $IE.document.forms[0]

$usernameForm = $loginForm.children | Where-Object { $_.innerHTML -match "j_username" } #This contains the HTML for the form, so it will always contain the id
$usernameField = $usernameForm.children | Where-Object {$_.id -eq "j_username" }
$usernameField.value = "USERNAME"

$passwordForm = $loginForm.children | Where-Object { $_.innerHTML -match "j_password" } #This contains the HTML for the form, so it will always contain the id
$passwordField = $passwordForm.children | Where-Object {$_.id -eq "j_password" }
$passwordField.value = "PASSWORD"

$loginForm.submit()
...