Получить содержимое веб-страницы, для которого требуется вход в систему - Invoke-WebRequest - не возвращено форм - нет Значение для пароля InputField - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь сохранить содержимое веб-страницы, требующей входа в сеанс; Я пытался использовать wget с вводами useragent и username (e / login) и password (p / password) и пытался сохранить файл cookie, но понял, что ничего не записано. Затем я перешел к этому методу (в PowerShell 6):

$R = Invoke-WebRequest -Uri "https://app.asana.com/-/login" -UserAgent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0" -SessionVariable asana

но потом, когда я пытаюсь

$Form = $R.Forms[0]

Там нет форм.

Cannot index into a null array.
At line:1 char:1
+ $Form = $R.Forms[0]
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

Поля ввода следующие:


 $R.InputFields

outerHTML : <input type="hidden" name="u" value="https://app.asana.com/?rr=296832" />
tagName   : INPUT
type      : hidden
name      : u
value     : https://app.asana.com/?rr=296832

outerHTML : <input type="hidden" name="i" value="password" />
tagName   : INPUT
type      : hidden
name      : i
value     : password

outerHTML : <input type="hidden" name="src" value="login" />
tagName   : INPUT
type      : hidden
name      : src
value     : login

outerHTML : <input type="hidden" name="auth" />
tagName   : INPUT
type      : hidden
name      : auth

outerHTML : <input type="hidden" name="xsrf_token" value="60a3a8255cfe364b3fbec08ec6c2106e:1578648571483" />
tagName   : INPUT
type      : hidden
name      : xsrf_token
value     : 60a3a8255cfe364b3fbec08ec6c2106e:1578648571483

outerHTML : <input tabindex="1" type="email" name="e" id="email_input" value="" />
tagName   : INPUT
tabindex  : 1
type      : email
name      : e
id        : email_input
value     :

outerHTML : <input tabindex="2" type="password" name="p" id="password_input" />
tagName   : INPUT
tabindex  : 2
type      : password
name      : p
id        : password_input

Так что теперь я могу получить доступ к имени пользователя (т.е. к электронной почте) напрямую:

$R.InputFields[5].Value="nats@email"

Но есть не является свойством Value для InputFields [6], который является паролем.

Exception setting "Value": "The property 'Value' cannot be found on this object. Verify that the property exists and can be set."

Я не могу найти альтернативный способ ввода пароля. Или, может быть, существует другой метод?

После входа в систему я получу доступ к нужной веб-странице (в рамках сеанса) и сохраню содержимое с помощью -OutFile ..

...