Invoke-WebRequest со случайным токеном + формы недоступны - PullRequest
0 голосов
/ 01 октября 2019

Веб-сайт Я пытаюсь сделать это на: https://www.netvendor.net/login

Я пытаюсь автоматически войти на веб-сайт и запустить скрипт для массового создания пользователей для нас.

Есливы запускаете Invoke-WebRequest на этой странице, он возвращает информацию, но ничего о формах. Они просто не отображаются. Однако, если вы просматриваете исходный код страницы или проверяете элемент, на странице явно есть формы, и они не состоят из JS или чего-либо еще, что могло бы испортить его. Как заставить PowerShell распознавать эти поля? Я использую следующую команду:

Invoke-WebRequest -Uri "www.netvendor.net/login" -Method GET -UseBasicParsing

Из-за проблемы, описанной выше, я решил просто POSTинформация, которая мне нужна, изучив запрос. Запрос требует три вещи:

  • электронная почта
  • пароль
  • _token

К сожалению, токен генерируется случайным образом каждый раз, когда браузерсеанс инициирован. Если вы просматриваете источник на странице и ищете «_token», вы получите нужный параметр. Не похоже, что есть какой-то способ получить это со страницы? Я немного растерялся из-за того, что я могу сделать на данный момент, тем более что у меня нет API или чего-либо еще, с чем я мог бы работать.

1 Ответ

0 голосов
/ 02 октября 2019

Для всех интересующихся вот последний рабочий скрипт:

$nvlogin = Invoke-WebRequest "https://www.netvendor.net/login" -SessionVariable "netvendor"
$nvtoken = $nvlogin.InputFields.Where({ $_.Name -eq "_token" })[0].Value

$nvbody = @{ 
    "_token" = $nvtoken
    "email" = "your.name@website.com"
    "password" = 'credentials'
}

Invoke-WebRequest -Uri "https://www.netvendor.net/login" -WebSession $netvendor -Method 'POST' -Body $nvbody
...