首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用-webrequest,New-Object -ComObject "InternetExplorer.Application和New-Object net.webclient

调用-webrequest,New-Object -ComObject "InternetExplorer.Application和New-Object net.webclient
EN

Stack Overflow用户
提问于 2017-07-07 03:39:23
回答 1查看 1.4K关注 0票数 1

我正在尝试创建任务调度器,以便每小时从一个网站获得一个嵌入链接,并且我正在使用powershell从web检索信息。

代码语言:javascript
复制
 $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中。如果作为后端运行将失败(任务调度程序)

代码语言:javascript
复制
$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中找到。

代码语言:javascript
复制
$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“

代码语言:javascript
复制
<td title="" class="vt" style="direction: ltr;" colspan="1" 
                           data-original-title=""><a class="linked formlink" href="u_event.do?sys_id=7435d8a0db3b36c020fffd051d961919&amp;sysparm_record_target=incident&amp;sysparm_record_row=1&amp;sy
                           sparm_record_rows=1&amp;sysparm_record_list=123TEXTQUERY321%253Db096b923-92c5-47ad-9a7c-1657847970a6">INC18701854</a></td>

=============================== Update @Jason :尝试了每个请求头,但仍然没有输出

代码语言:javascript
复制
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

有一件事,当你跑步的时候

代码语言:javascript
复制
Invoke-WebRequest -Uri https://servicenow.xxx.com/textsearch.do?sysparm_search=b096b923-92c5-47ad-9a7c-1657847970a6 

没有打开完整的链接,它直接指向主页。https://servicenow.xxx.com/navpage.do

注意,它在源代码中有iframe (相同的url所有页面)。

我还能尝试什么??

EN

回答 1

Stack Overflow用户

发布于 2017-07-07 17:31:42

IE发送的请求与Invoke-WebRequest发送的请求之间唯一的区别是请求头。我的猜测是,该网站的反应不同,根据标题。我认为,最有可能的怀疑是user-agent头。首先,我将研究如果您将由user-agent发送的PowerShell头更改为与IE发送的user-agent报头相同的值,会发生什么情况。该命令如下所示:

代码语言:javascript
复制
$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,没有为我解决,所以我不能亲自测试它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44962156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档