powershell返回并记录重定向的网站?

时间:2016-08-10 17:03:07

标签: powershell automation stress-testing

下午所有, 尝试创建脚本以转到网页并记录是否重定向到扩展服务器。例如,该站点是site.school.net,在高负载下,它应该转发到site2.school.net和site3.school.net。我正在研究powershell,因为我想学习它,但我对任何有效的东西持开放态度。我试过了

Start-Process -FilePath FireFox -ArgumentList site.school.net

它会打开一个页面,所有这一切,但我需要每10-15秒运行一次,并记录它发送到的URL。感谢任何帮助,提前谢谢!

2 个答案:

答案 0 :(得分:1)

不要使用网络浏览器,因为它会带来额外的开销,使得从无人值守的系统(如在预定的工作中)运行脚本非常困难或不可能。

使用PowerShell的invoke-webrequest cmdlet。

$redirecttest = invoke-webrequest -uri https://jigsaw.w3.org/HTTP/300/302.html -Method get -maximumredirection 0;
Write-Output "StatusCode: $($redirecttest.statuscode)";
Write-Output "Redirecting to: $($redirecttest.headers.location)";

这将尝试到达指定网址的网页,如果给出了网页,则不会遵循重定向。然后,它会捕获HTTP标头并输出HTTP状态代码(302,在这种情况下永久移动)以及我们重定向到的位置。

它还会发出错误,因为服务器已指示客户端重定向次数超过客户端被告知重定向的次数。但是你喜欢/需要处理那个错误。

然后,您可以测试您发送的重定向位置,以验证重定向是否正常工作:

if ($Redirecttest.headers.location -eq "http://site2.school.net" -or $Redirecttest.headers.location -eq "http://site3.school.net") {
Write-output "Success";
} else {
Write-output "Redirect broken";
}

或者,您可以只调用Web请求并允许重定向,并检查生成的URL。

$redirecttest = invoke-webrequest -uri https://jigsaw.w3.org/HTTP/300/302.html -Method get;
$redirecttest.BaseResponse.responseuri.AbsoluteUri;

请注意,这仅在HTTP服务器发送真HTTP 30X status codes时才有效,而不是依赖于META标记或JavaScript的客户端重定向。

答案 1 :(得分:0)

这是一个示例,但使用Internet Explorer(11)。我不确定您是否可以使用PowerShell自动化Firefox。在这个例子中,我得到的输出与原始URL不同。

#Instanciate IE COM Object to interact with IE
$ie = New-Object -ComObject "InternetExplorer.Application"

#store original URL
$requestUri = "http://google.com"

#open the original URL in IE
$ie.navigate($requestUri)

#while IE is busy, wait for 250 seconds and try again
while ($ie.Busy) {
    Start-Sleep -Milliseconds 250
}

#retrieve the actual/final URL from the browser
$ie.Document.url