使用Invoke-WebRequest进行身份验证

时间:2019-03-17 16:49:00

标签: powershell invoke-webrequest

登录页面是:https://login.procore.com/

我觉得我即将开始使用它,但是由于缺乏对登录过程的了解,因此遇到了麻烦。这是到目前为止的代码,没有实际的登录信息。

$r=Invoke-WebRequest https://login.procore.com/ -SessionVariable fb

$form = $r.Forms[0]

$form.Fields["session_email"] = "xxxxxxxxx"
$form.Fields["session_password"] = "xxxxxxxx"

$r=Invoke-WebRequest ('https://login.procore.com/' + $form.Action) -WebSession $fb -Method $form.Method  -Body $form.Fields 

有人可以帮助我了解缺少的内容吗?我确实注意到$form.Fields包含一个名为 session_sso_target_url 的空字段,但是说实话,这并不意味着什么或如何使用。

1 个答案:

答案 0 :(得分:0)

您给我的信息不足,无法提供完整的答案,因为我没有登录,也没有注册免费试用的方法,也没有说明您遇到哪种错误越来越。

我很可能会猜测session_sso_target_url与联盟有关,后者在语义上与单点登录(SSO)有关。在联合身份验证中,将应用程序配置为接受来自另一个登录域的登录。在Corporateland中最明显的例子是ADFS,但是只要您看到一个应用程序说使用Facebook登录使用Google登录,那都是同一回事。联邦是一个大话题。拥有目标URL的含义是,浏览器通常会通过回调URL重定向到身份提供者(ADFS / FB / GOOG等),一旦认证,浏览器应返回该回调URL。

可以说我怀疑您对此字段不需要执行任何操作!我之所以说这是因为我是用Fiddler击中的。

您应该了解Fiddler。它是Telerik提供的免费调试调试代理。我不隶属于Telerik,但在网络抓取时,我欠他们几个小时的时间。 (这不是完成这项工作的唯一工具,如果任何版主认为我违反了网站规则,我将很乐意为这篇帖子提供消毒。)

执行以下操作:

  • 安装提琴手
  • 将其设置为可以监听127:0.0.1:无论是什么,并成为您的系统代理
  • 在“工具”>“选项”>“ HTTPS”中,将其设置为解密HTTPS(这将用自动生成的自签名证书替换所有证书,因此在执行其他任务时不要使其运行)
  • 将您的过滤器设置为仅包含* .procore.com的流量
  • 通过浏览器登录-现在,您应该在左侧窗格中看到网络流量。捕获的流量是您的基准。
  • 选择任何一个Web请求,然后查看右侧窗格中的“检查器”选项卡。您可以查看Raw,Forms,Cookie等。这可以使您对客户的工作有一个低级的了解。
  • 运行您的代码段。现在,您可以比较基准与代码之间的差异,并进行相应的调整。