Я пытаюсь зайти на сайт и загрузить веб-страницу. не пугайтесь - сайт и учетные данные общедоступны...

Во всяком случае, мой код выглядит следующим образом:

curl -k https://url.retail.publishedprices.co.il/login > 01.txt

sfk xed 01.txt "_[start][0.10000 bytes]csrftoken__" +xed "_/>**__" +xed "_\q id=\qcsrftoken\q value=\q__" +xed "_\q __" -tofile 02.txt

set /p csrf=<02.txt

curl -k -d "username=retalix&password=12345&csrftoken=%csrf%" https://url.retail.publishedprices.co.il/file/d/RamiLevi/ > RL.txt

код загружает страницу входа, извлекает переменную csrf и использует ее, а также имя пользователя и пароль для входа в другой поддомен на том же веб-сайте.

конечный результат должен быть веб-страницей, которая сохраняется в «RL.txt», но ни одно из решений, которые я смог найти, не сработало, и я не могу понять, почему.

любая помощь будет оценена!

1 ответ1

1

Пока я работал над чем-то похожим, я быстро соединил это для вас:

Измените путь и имя файла в соответствии с вашими требованиями, убедитесь, что путь имеет косую черту.

$path = "c:\test\"
$filename = "website.txt"

$url = "https://url.retail.publishedprices.co.il/login"
$url2 = "https://url.retail.publishedprices.co.il/file/d/RamiLevi/"

$ie = New-Object -com InternetExplorer.Application

$ie.visible = $true
$ie.silent = $false

$ie.navigate("$url")

while($ie.ReadyState -ne 4) {start-sleep -m 100}
if ($ie.document.url -Match "invalidcert"){
    $sslbypass=$ie.Document.getElementsByTagName("a") | where-object {$_.id -eq "overridelink"}
    $sslbypass.click()
    start-sleep -s 5
}

$ie.Document.IHTMLDocument3_getElementById("username").click()
$ie.Document.IHTMLDocument3_getElementById("username").value ='retalix'
$ie.Document.IHTMLDocument3_getElementById("password").click()
$ie.Document.IHTMLDocument3_getElementById("password").value ='12345'
$ie.Document.IHTMLDocument3_getElementById("submit").click()

start-sleep 5

$ie.navigate($url2)

start-sleep 10

$ie.Document.body.outerHTML | Out-File -FilePath $path$filename

Запуск занимает около 25 секунд из-за начальных снов, чтобы страницы могли загружаться. В зависимости от вашего соединения вам может потребоваться увеличить их.

После того, как вы запустили сценарий и остались довольны результатом, вы можете сделать следующее.

Измените следующее, чтобы IE не открывался на рабочем столе:

$ie.visible = $true

в

$ie.visible = $false

и добавьте следующее в конец скрипта, чтобы IE закрылся в конце:

$ie.quit()

Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .