I saw 这个帖子没有解决方案,但我的问题是类似的。我正在尝试在我自己的登录页面上自动查找我正在使用的服务的一些信息。当我运行以下命令时,它没有给我任何信息.Forms
$Webpage = Invoke-WebRequest -Uri "https://mypage.tokyu-ps.jp/member/"
$Webpage.Forms
是空的。正如几乎每一个关于使用登录表单的建议Invoke-WebRequest
说我需要使用$Webpage.Forms[0]
然后在那里输入值,我想我可以使用InputFields
反而。
如果我检查$Webpage.InputFields
有两个字段看起来应该是登录信息,ID 为TAccountLoginid
and TAccountPass
,但是只有后者有一个名为“value”的属性,我怀疑这是我想要设置的属性。 TAccountLoginid 没有 value 属性,即使在浏览器中使用 F12 检查页面时也是如此。 (EDIT:这次没有必要,但为了将来的参考,您可以随时添加自己的属性($Webpage.InputFields | Where-Object{$_.name -eq "ItemYouWantToEdit"}) | Add-Member -NotePropertyName "value" -NotePropertyValue "Your value here"
强制它拥有它以供以后使用。)
还有一个看起来可以使用的字段是TokenDebug0123456789
我猜是会话令牌,但它已经具有随机数据值TAccount.loginid
and TAccount.pass
混合在那里,所以我想我仍然需要找到接受帐户名的字段,然后在上面的字段中设置帐户名和密码,然后调用Invoke-Webrequest
再次使用编辑过的$Webpage
多变的。我只是不知道在这种情况下该怎么办。
我在使用浏览器中的开发人员工具检查流量时发现了问题。不存在任何表单,因为他们在请求正文中发送密码。我所做的只是复制正文并用会话信息替换所有内容:
$Username = "MyUser"
$Password = "MyPassword"
$Webpage = Invoke-WebRequest -Uri "https://mypage.tokyu-ps.jp/member/" -SessionVariable MySession
$Body = @{
"data[_Token][key]" = ($Webpage.InputFields | Where-Object{$_.name -eq "data[_Token][key]"}).value
"data[TAccount][loginid]" = $Username
"data[TAccount][pass]" = $Password
"login" = ""
"nextUrl" = ""
"data[_Token][fields]" = ($Webpage.InputFields | Where-Object{$_.name -eq "data[_Token][fields]"}).value
"data[_Token][unlocked]" = ($Webpage.InputFields | Where-Object{$_.name -eq "data[_Token][unlocked]"}).value
"data[_Token][debug]" = ($Webpage.InputFields | Where-Object{$_.name -eq "data[_Token][debug]"}).value
}
$Result = Invoke-WebRequest -Method Post -Uri "https://mypage.tokyu-ps.jp/member/" -Body $Body -WebSession $MySession -AllowUnencryptedAuthentication
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)