【问题标题】:Invoke-WebRequest with a random token + forms unavailable使用随机令牌 + 表单不可用的调用 WebRequest
【发布时间】:2019-10-01 20:48:41
【问题描述】:

我正在尝试执行此操作的网站:https://www.netvendor.net/login

我正在尝试自动登录网站并启动一个脚本来为我们批量创建用户。

如果您在此页面上运行 Invoke-WebRequest,它会返回信息,但不会返回有关表单的信息。它们根本不显示。但是,如果您查看页面源或检查元素,页面上显然有表单,它们不是由 JS 或其他任何会弄乱它的东西组成的。如何让 PowerShell 识别这些字段?我正在使用以下命令:

Invoke-WebRequest -Uri "www.netvendor.net/login" -Method GET -UseBasicParsing

由于上述问题,我决定通过检查请求来发布我需要的信息。该请求需要三件事:

  • 电子邮件
  • 密码
  • _token

不幸的是,每次启动浏览器会话时都会随机生成令牌。如果您在页面上查看源并搜索“_token”,您将获得所需的参数。似乎没有任何方法可以从页面中检索它?在这一点上我有点迷茫,特别是因为没有 API 或其他任何东西可供我使用。

【问题讨论】:

  • 您使用UseBasicParsing 开关有什么特别的原因吗?没有它的表单属性会填充。
  • @Jesse 我发现这实际上是我的特定计算机的一个问题,因为不使用该标志我无法获得任何输出。你是对的,在一台干净的机器上,该标志是不必要的。

标签: powershell invoke-webrequest


【解决方案1】:

对于所有感兴趣的人,这是最终的工作脚本:

$nvlogin = Invoke-WebRequest "https://www.netvendor.net/login" -SessionVariable "netvendor"
$nvtoken = $nvlogin.InputFields.Where({ $_.Name -eq "_token" })[0].Value

$nvbody = @{ 
    "_token" = $nvtoken
    "email" = "your.name@website.com"
    "password" = 'credentials'
}

Invoke-WebRequest -Uri "https://www.netvendor.net/login" -WebSession $netvendor -Method 'POST' -Body $nvbody

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-08
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    相关资源
    最近更新 更多