使用Powershell 5.0.10586.117我想请求一个包含登录表单的特定网站(在IIS 8.5上)。以下是具体代码:
$Url = Invoke-Webrequest -Uri "https://not-work/hello.aspx" -SessionVariable SesVar
$UrlForm = $Url.Forms[0]
这样做时Powershell会挂起,只要我不手动中断就不会返回任何内容。
使用
$Url = Invoke-Webrequest -Verbose -Uri "https://not-work/hello.aspx" -SessionVariable SesVar
我可以看到以下错误:
VERBOSE:获取https://not-work/hello.aspx 0字节的有效负载。
在Google Chrome 55.0.2883.87中运行相同的网站。在不同的(可能是较旧的IIS)上使用旧版本的应用程序代码,它在Powershell中也可以使用。
所以我想知道,如果这个问题与Powershell中的bug有关吗?
注意:即使使用
$Url = Invoke-Webrequest -UseBasicParsing -Verbose -Uri "https://not-work/hello.aspx" -SessionVariable SesVar
失败了。
为了完整起见, curl 还提供了HTTP状态代码200(如在Chrome中),但与工作版本相比有一些差异:
非工作网站
C:\Tools\curl>curl -k https://not-work/hello.aspx -I HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 12671
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.5 X-AspNet-Version: 4.0.30319
Set-Cookie: __AntiXsrfToken=d438e79fe7004ad09d950a3b8b4e507d; path=/; HttpOnly
Set-Cookie: .ASPXAUTH=; expires=Mon, 11-Oct-1999 22:00:00 GMT; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Thu, 12 Jan 2017 13:57:33 GMT
工作网站
C:\Tools\curl>curl -k https://works-well/hello.aspx -I HTTP/1.1 200 OK
Cache-Control: private Content-Length: 12306 Content-Type: text/html; charset=utf-8
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Server: WWW Server/1.1 X-XSS-Protection: 1; mode=block
Set-Cookie: __AntiXsrfToken=6142de1c5d474da780530da39fea033f; path=/;HttpOnly; Secure
Date: Thu, 12 Jan 2017 15:56:47 GMT
顺便说一句,在Internet Explorer(IE)11.0.9600.18537中没有加载像图像这样的对象(因为我相信Powershell工作"引擎盖下#34;使用IE DLL)和#34;沙漏&# 34;在所请求的URI的选项卡旁边也永久运行。
再次提出我的问题:这个问题与Powershell中的bug有关,还是可能是其他问题?
答案 0 :(得分:1)
我正在排除我自己同样性质的情况。我的网站似乎改变了一些东西。其中一个是表格。
您能否确认您的网站有FORMS选项?
EX。
ObservableCollection<string>
请注意,我使用-UseBasicParsing。对于我的nytimes例子,我必须。这是因为nytimes正在使用JS并且似乎并没有很好地回归PS。删除-UseBasicParsing将导致我的WebRequest挂起。
你会注意到,通过上面的回复,&#39; FORMS:&#39;是空的。
现在我没有解决方案。除此之外,我的网站显然需要凭据,我显然需要提供。所以我现在正在使用-Body $ bodyParam @ {}和-Headers $ headerParams @ {}编写不同尝试的调整。到目前为止,它无济于事。
简而言之,PS似乎并不适用于JS类型的网站,而且FORMS似乎只用于特定的网站集,而不是用于所有类型的网站。
希望有更多技术人员可以提供帮助,因为这会让我的大脑陷入困境。