使用PowerShell如何从浏览器中提取信息?

时间:2015-03-17 18:20:49

标签: internet-explorer powershell

我有以下PowerShell脚本,但我想捕获浏览器报告的IP地址。我该怎么做

$Webs = @(
"http://geoip.hidemyass.com/",
"http://some other web address "
"http://another web address",
"http://several more web addresses"
)

foreach ($Web in $Webs) {
$ie = New-Object -com internetexplorer.application;
$ie.visible = $true;
$ie.navigate2($Web);
while ($ie.Busy -eq $true) { Start-Sleep -Milliseconds 1000; } 
 Get-Process iexplore | Foreach-Object { $_.CloseMainWindow() }
}

第一个网址告诉我当时分配了我的VPN代理的IP地址。我想捕获浏览器显示的IP地址并将其写入文件。

1 个答案:

答案 0 :(得分:1)

使用PowerShell强大的Invoke-WebRequest cmdlet实际上非常简单。您使用-URI参数指定URL,然后为您设置Webkit对象并从站点中抓取内容。

关于这一点的绝对最好的部分是它还将解析所有HTML。

因此,如果我们浏览您的网站链接并在HTML上达到顶峰,我们会看到类似的内容:

Not my actual public IP, but try to hack it if you want :P

看到那个标签?在标题中,我们已经获得了我们的IP地址。这将是如此简单。我们只需要将这个$ url提交给一个变量,然后查看正确标签的.ParsedHTML属性,在本例中为.title标签。

$url = 'http://geoip.hidemyass.com/'
$Results = Invoke-WebRequest $url 
"Your IP address is $($results.ParsedHtml.title)"

返回的内容如下:

enter image description here

这很酷,我们可以更进一步,通过这样包装它来制作一个功能,它适用于PS v3及以上版本:

Function Get-PublicIPAddress {
$url = 'http://geoip.hidemyass.com/'
$b = Invoke-WebRequest $url 

[pscustomobject]@{IPAddress=$b.ParsedHtml.title}
}

这给了我们这样的结果:

enter image description here

因此,您可以通过这些示例看到,如果您在线查看的网页在此类HTML标记中包含有意义的数据,实际上很容易以这种方式恢复数据。如果您有其他需要帮助的具体示例,请与我们联系。