我正在尝试创建任务调度器,以便每小时从一个网站获得一个嵌入链接,并且我正在使用powershell从web检索信息。
$ie = New-Object -ComObject "InternetExplorer.Application"
$ie.navigate("https://servicenow.xxx.com/textsearch.do?sysparm_search=b096b923-92c5-47ad-9a7c-1657847970a6"
while($ie.Busy) {start-sleep -Milliseconds 1000}
$doc = $ie.document.body.getElementsByClassName("formlink") | select href这能帮我得到信息。但这一定是在UI中。如果作为后端运行将失败(任务调度程序)
$test = Invoke-WebRequest -Uri https://servicenow.xxx.com/textsearch.do?sysparm_search=b096b923-92c5-47ad-9a7c-1657847970a6
$test.ParsedHtml.body
#or
$test.ParsedHtml.all 调用-网络请求没有显示,如果我看到的信息。字符串在outerHTML中。名为Formlink的类名仅在“New-Object -ComObject”InternetExplorer.Application中找到。
$webclient = New-Object net.webclient
$webclient.DownloadString("https://servicenow.xxx.com/textsearch.do?sysparm_search=b096b923-92c5-47ad-9a7c-1657847970a6")net.webclient也是如此
为什么会这样?
我需要的信息是outerHTML中的新对象-ComObject "InternetExplorer.Application“
<td title="" class="vt" style="direction: ltr;" colspan="1"
data-original-title=""><a class="linked formlink" href="u_event.do?sys_id=7435d8a0db3b36c020fffd051d961919&sysparm_record_target=incident&sysparm_record_row=1&sy
sparm_record_rows=1&sysparm_record_list=123TEXTQUERY321%253Db096b923-92c5-47ad-9a7c-1657847970a6">INC18701854</a></td>=============================== Update @Jason :尝试了每个请求头,但仍然没有输出
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)
X-P2P-PeerDist: Version=1.1
Accept-Encoding: gzip, deflate, peerdist
Connection: Keep-Alive
Accept: */*
Host: servicenow.xxx.com
X-P2P-PeerDistEx: MinContentInformation=1.0, MaxContentInformation=2.0
Cache-Control: no-cache
Accept-Language: en-US, en; q=0.8, zh-Hans-SG; q=0.5, zh-Hans; q=0.3有一件事,当你跑步的时候
Invoke-WebRequest -Uri https://servicenow.xxx.com/textsearch.do?sysparm_search=b096b923-92c5-47ad-9a7c-1657847970a6 没有打开完整的链接,它直接指向主页。https://servicenow.xxx.com/navpage.do
注意,它在源代码中有iframe (相同的url所有页面)。
我还能尝试什么??
发布于 2017-07-07 17:31:42
IE发送的请求与Invoke-WebRequest发送的请求之间唯一的区别是请求头。我的猜测是,该网站的反应不同,根据标题。我认为,最有可能的怀疑是user-agent头。首先,我将研究如果您将由user-agent发送的PowerShell头更改为与IE发送的user-agent报头相同的值,会发生什么情况。该命令如下所示:
$YourIEUserAgentHeader = "Put IE's user-agent header here"
Invoke-WebRequest `
-Uri https://servicenow.dhl.com/textsearch.do?sysparm_search=b096b923-92c5-47ad-9a7c-1657847970a6 `
-Headers @{ 'user-agent' = $YourIEUserAgentHeader }如果这不起作用,我将检查IE发送的其他每个标头。您的网址,servicenow.dhl.com,没有为我解决,所以我不能亲自测试它。
https://stackoverflow.com/questions/44962156
复制相似问题