我有以下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地址并将其写入文件。
答案 0 :(得分:1)
使用PowerShell强大的Invoke-WebRequest cmdlet实际上非常简单。您使用-URI参数指定URL,然后为您设置Webkit对象并从站点中抓取内容。
关于这一点的绝对最好的部分是它还将解析所有HTML。
因此,如果我们浏览您的网站链接并在HTML上达到顶峰,我们会看到类似的内容:
看到那个标签?在标题中,我们已经获得了我们的IP地址。这将是如此简单。我们只需要将这个$ url提交给一个变量,然后查看正确标签的.ParsedHTML属性,在本例中为.title标签。
$url = 'http://geoip.hidemyass.com/'
$Results = Invoke-WebRequest $url
"Your IP address is $($results.ParsedHtml.title)"
返回的内容如下:
这很酷,我们可以更进一步,通过这样包装它来制作一个功能,它适用于PS v3及以上版本:
Function Get-PublicIPAddress {
$url = 'http://geoip.hidemyass.com/'
$b = Invoke-WebRequest $url
[pscustomobject]@{IPAddress=$b.ParsedHtml.title}
}
这给了我们这样的结果:
因此,您可以通过这些示例看到,如果您在线查看的网页在此类HTML标记中包含有意义的数据,实际上很容易以这种方式恢复数据。如果您有其他需要帮助的具体示例,请与我们联系。