Html 使用Powershell在网页中填充用户名/密码
我试图在摩托罗拉路由器的登录页面中填充用户名和密码。页面的部分HTML如下所示:Html 使用Powershell在网页中填充用户名/密码,html,powershell,authentication,Html,Powershell,Authentication,我试图在摩托罗拉路由器的登录页面中填充用户名和密码。页面的部分HTML如下所示: 我正在使用PowerShell,并尝试获取值字符串的句柄。我可以这样做: $ie.Document.IHTMLDocument3_getElementById("moto-username").innerHTML 得到这个: …但我不知道如何设置变量。这是由于的嵌套造成的吗 我尝试过各种形式,例如: $iePPM.Document.IHTMLDocument3_getElementById("moto-u
我正在使用PowerShell,并尝试获取值字符串的句柄。我可以这样做:
$ie.Document.IHTMLDocument3_getElementById("moto-username").innerHTML
得到这个:
…但我不知道如何设置变量。这是由于
的嵌套造成的吗
我尝试过各种形式,例如:
$iePPM.Document.IHTMLDocument3_getElementById("moto-username") = "myusername"
……但一切都不起作用
蒂亚 你不是在说你是如何发现/抓取你的元素的 如果你这么做了 。。。什么作为元素返回 示例: 为您的网站-当然。浏览站点表单元素,而不是Internet Explorer元素
$url = 'https://pwpush.com'
($FormElements = Invoke-WebRequest -Uri $url -SessionVariable fe)
<#
StatusCode : 200
StatusDescription : OK
Content : <!DOCTYPE html>
<html>
...
#>
($Form = $FormElements.Forms[0]) |
Format-List -Force
<#
Id : new_password
Method : post
Action : /p
Fields : ...}
#>
$Form |
Get-Member
<#
TypeName: Microsoft.PowerShell.Commands.FormObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Action Property string Action {get;}
Fields Property System.Collections.Generic.Dictionary[string,string] Fields {get;}
Id Property string Id {get;}
Method Property string Method {get;}
MSDN ScriptMethod System.Object MSDN();
#>
$Form.Fields
<#
Key Value
--- -----
utf8 ✓
authenticity_token 2mebmGbAJsseDW+/TeTBXAelq1s8kH5Zgb6W14Pxtba6CyWsAM4SfVqdJWdVmu5HjxIGUCWjEGhy6fLTB38UhA==
password_payload Enter the Password to be Shared
password_expire_after_days 7
password_expire_after_views 5
password_deletable_by_viewer on
commit Push it!
根据您的BookinAgent评论更新
$FormElements.Forms
$FormElements.InputFields.FindById('bookingAgent'))
#通过字符串匹配获取元素
$FormElements.allegments|
其中{$\.TagName-eq“input”}
选择字符串-模式“BookingAgent”
#获取所有页面按钮元素
$FormElements.allegments|
其中{$\.TagName-eq“Button”}
选择字符串-模式“BookingAgent”
您并不是在说如何发现/抓取元素
如果你这么做了
。。。什么作为元素返回
示例:
为您的网站-当然。浏览站点表单元素,而不是Internet Explorer元素
$url = 'https://pwpush.com'
($FormElements = Invoke-WebRequest -Uri $url -SessionVariable fe)
<#
StatusCode : 200
StatusDescription : OK
Content : <!DOCTYPE html>
<html>
...
#>
($Form = $FormElements.Forms[0]) |
Format-List -Force
<#
Id : new_password
Method : post
Action : /p
Fields : ...}
#>
$Form |
Get-Member
<#
TypeName: Microsoft.PowerShell.Commands.FormObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Action Property string Action {get;}
Fields Property System.Collections.Generic.Dictionary[string,string] Fields {get;}
Id Property string Id {get;}
Method Property string Method {get;}
MSDN ScriptMethod System.Object MSDN();
#>
$Form.Fields
<#
Key Value
--- -----
utf8 ✓
authenticity_token 2mebmGbAJsseDW+/TeTBXAelq1s8kH5Zgb6W14Pxtba6CyWsAM4SfVqdJWdVmu5HjxIGUCWjEGhy6fLTB38UhA==
password_payload Enter the Password to be Shared
password_expire_after_days 7
password_expire_after_views 5
password_deletable_by_viewer on
commit Push it!
根据您的BookinAgent评论更新
$FormElements.Forms
$FormElements.InputFields.FindById('bookingAgent'))
#通过字符串匹配获取元素
$FormElements.allegments|
其中{$\.TagName-eq“input”}
选择字符串-模式“BookingAgent”
#获取所有页面按钮元素
$FormElements.allegments|
其中{$\.TagName-eq“Button”}
选择字符串-模式“BookingAgent”
我成功地填充了用户名和密码字段,并用以下命令单击按钮:
$ie.Document.IHTMLDocument3_getElementById(“loginUsername”).value=“admin”
$ie.Document.IHTMLDocument3\u getElementById(“loginPassword”).value=“密码”
$Link=$ie.Document.getElementsByTagName(“输入”)|其中对象{$\类型-eq'submit'}
$Link.click()我能够成功地填充用户名和密码字段,并用以下命令单击按钮: $ie.Document.IHTMLDocument3_getElementById(“loginUsername”).value=“admin” $ie.Document.IHTMLDocument3\u getElementById(“loginPassword”).value=“密码” $Link=$ie.Document.getElementsByTagName(“输入”)|其中对象{$\类型-eq'submit'}
$Link.click()抱歉,忘记添加我得到的:抱歉,忘记添加我得到的:要查看元素,我只需右键单击用户名字段并使用IE选择“Inspect element”。我粘贴的选择减去一些额外的div就是显示的内容。我在您的加拿大航空公司示例中看到,bookingAgent字段嵌套在几个级别上,这与此类似。让我消化一下你写的东西。谢谢postanote,在加拿大航空公司的示例中,您将如何填充bookingagent字段?谢谢。那是一个输入框和一个按钮。我提供的代码中已经包含了这方面的代码。只要过滤一下就行了。请看我的更新。好的,我现在可以得到以下输出:@{innerHTML=;innerText=;outerHTML=;outerText=;tagName=INPUT;onfocus=onfocussername();onblur=onBlurUsername();class=moto用户名输入;value=username;name=loginUsername}我会使用$ie.Document.ihtmldocument\u getElementById来设置它吗?要查看元素,我只是在用户名字段中右键单击并使用IE选择“Inspect element”。我粘贴的选择减去一些额外的div就是显示的内容。我在您的加拿大航空公司示例中看到,bookingAgent字段嵌套在几个级别上,这与此类似。让我消化一下你写的东西。谢谢postanote,在加拿大航空公司的示例中,您将如何填充bookingagent字段?谢谢。那是一个输入框和一个按钮。我提供的代码中已经包含了这方面的代码。只要过滤一下就行了。请看我的更新。好的,我现在可以得到这个输出:@{innerHTML=;innerText=;outerHTML=;outerText=;tagName=INPUT;onfocus=onfocussername();onblur=onBlurUsername();class=moto用户名输入;value=username;name=loginUsername}我会使用$ie.Document.ihtmldocument\u getElementById来设置它吗?
$url = 'https://www.aircanada.com/ca/en/ado/profile/sign-in.html'
# Get form elements
($FormElements = Invoke-WebRequest -Uri $url -SessionVariable fe)
# List all form objects
$FormElements.Forms
$FormElements.InputFields
$FormElements.ParsedHtml
$FormElements.Content
$FormElements.Scripts
# Get all page source elements
$FormElements.AllElements
$FormElements.AllElements |
Select-Object -Expand OuterText
$FormElements.AllElements |
Select-Object -Expand InnerText
# Get elements by string match
$FormElements.AllElements |
Where{$_.TagName -eq "input"}
# Get all page button elements
$FormElements.AllElements |
Where{$_.TagName -eq "Button"}
$FormElements.AllElements |
Where{$_.TagName -eq "Button"} |
Select-Object outerHTML
$FormElements.AllElements |
Where{$_.TagName -eq "Button"} |
Select-Object -Expand OuterText
$FormElements.AllElements |
Where{$_.TagName -eq "Button"} |
Select-Object -Expand InnerText
# Get only the submit button that matches the criteria
($FormElements.AllElements |
Where{$_.TagName -eq "Button"} |
Select-Object -Property outerHTML) -Match 'SIGN IN'
$FormElements.AllElements |
Where{$_.TagName -eq "Button"} |
Select-Object -Property * |
Where innerText -eq 'SIGN IN'
$FormElements.Forms
$FormElements.InputFields.FindById('bookingAgent')
<#
# Results
Id Method Action Fields
-- ------ ------ ------
get /ca/en/ado/home/search-results.html {[searchbox_01, ]}
get /ca/en/ado/home/search-results.html {[searchbox_011, ]}
get /ca/en/ado/home/search-results.html {[searchbox_0111, ]}
adoLoginForm post {[agencyIATA, ], [agencyID, ], [bookingAgent, ], [password, ], [rememberAgencyInfo, ]}
adoLoginForm post {[agencyIATA, ], [agencyID, ], [bookingAgent, ], [password, ], [rememberAgencyInfo, ]}
bookingAgent
#>
# Get elements by string match
$FormElements.AllElements |
Where{$_.TagName -eq "input"} |
Select-String -Pattern 'BookingAgent'
# Get all page button elements
$FormElements.AllElements |
Where{$_.TagName -eq "Button"} |
Select-String -Pattern 'BookingAgent'