【问题标题】:Webclient user-agent keeps resetting. Need Internet ExplorerWebclient 用户代理不断重置。需要 Internet Explorer
【发布时间】:2023-04-08 05:23:01
【问题描述】:

好的,我之前问了一个关于使用的问题

webclient.downloadfile($url,$path)

我无法打开 PDF 文件,因为它的编码不正确。 我现在知道的是,这是因为该网站只允许使用Internet Explorer。因此,我从未真正下载过 PDF,而是下载了 HTML 页面……作为 PDF。因此错误。对于该网站,当使用任何其他网站时,会弹出一个页面让您知道。我用的时候发现:

$webclient.downloadstring($url)

..并阅读Powershell ISE中的几行,遇到同一句话:

“检测到不兼容的浏览器。必须使用 IE 7.0 及更高版本”

好的。所以我做了一些研究并了解了这个 .AddHeader() 函数。我使用了以下内容。

$wc.Headers.Add("user-agent", "Windows-RSS-Platform/2.0 (MSIE 9.0; Windows NT 6.1)")

实际上在这个网站上。我认为这会诱使网站认为我正在使用Internet Explorer 9.0。我输入$webclient 以查看我的Net.webclient 对象的所有属性并阅读

Headers: {user-agent}

我说的很好。现在它将起作用。但后来我尝试了我的.downloadfile 函数,同样的事情发生了。 运行我的downloadfile 后,我再次检查了$webclient 的属性和Headers= {} 我的user-agent 发生了什么?谁能告诉我为什么会发生这种情况或提供任何提示以使其正常工作?

【问题讨论】:

  • 如果您包含一些代码来重现您遇到的问题(概念证明),这也会有所帮助。

标签: powershell user-agent webclient


【解决方案1】:

这是正常的 - 在WebClient 进行第一次调用后,标头会被重置。因此,任何后续调用都将使它们为空。这是proof link from msdn.microsoft.com

使用相同的 WebClient 重复调用导致 404 我们发现使用 WebClient 进行的第二次(和后续)调用失败。 这是因为任何标题都丢失了。所以你需要确保自定义标题 在同一个 WebClient 实例上的每次调用之前,您使用的都会被重置。

【讨论】:

  • 哦,我明白了。然后在那种情况下,我不知道为什么这不起作用。该死的网站仍然无法将网络客户端识别为 IE。我为 IE9 使用了另一个标头,我从 MSDN 下车……什么都没有。如果重要的话,网站和文件都是 .aspx
  • @JohnnyFlowers:请澄清您的问题。我认为您的问题是 Headers 在执行 downloadfile 后被清除。
  • 嗯,我遇到的主要问题是我试图从只接受 IE7 + 的站点下载文件。它是一个 aspx 文件,以 PDF 格式打开。使用 webclient 我尝试下载 URL,但不是存储 PDF,而是来自网站的网页的 HTML 代码,说“检测到不兼容的浏览器。请使用 IE7或更高”
  • @JohnnyFlowers:您能否提供一个指向您尝试下载的网页的链接?如果没有,你能找到另一个具有相同行为的网站,你可以提供一个链接吗?变量很多,有助于缩小搜索范围。
猜你喜欢
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多