首页 > 解决方案 > 即使适用于所有浏览器,调用 webrequest 也无法获取网站数据

问题描述

Powershell:对于特定站点,invoke-webrequest 不适用于我。尝试了很多东西,比如设置 TLS 设置等。但仍然失败。一个独特的事情是它适用于第一个请求,然后发布然后失败 15 分钟,但通过浏览器浏览网站时并非如此。谁能帮帮我

Invoke-WebRequest 'https://www1.nseindia.com/products/content/equities/equities/eq_turnapr2020.htm'

对于下一个请求,它会永远等待然后超时。但在浏览器中并非如此(在 IE、chrome 中)

超时错误图像。第一个请求有效

标签: powershellinvoke-webrequest

解决方案


这是因为网站的反刮擦机制。要绕过这一点,我们需要让它感觉像是通过浏览器发出的用户请求。对于本网站的当前问题,解决方案是在 Invoke-WebRequest 中包含标头。您可以通过 Chrome 开发人员工具 > 网络选项卡 >(右键单击 url)> 复制 > 复制为 powershell 来获取请求标头的副本。然后粘贴并获取标题的哈希表。(然后您可以删除 cookie 部分)。


推荐阅读