1

登录页面是这样的: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的空字段,但老实说不知道它的含义或如何使用它。

4

1 回答 1

0

你给我的信息不足以提供完整的答案,因为我没有登录名,也看不到注册免费试用的方法,而且你没有说明你遇到了什么样的错误。

我冒险猜测session_sso_target_url与联邦有关,这在语义上与单点登录 (SSO) 相关。在联合中,应用程序被配置为接受来自另一个登录域的登录。Corporateland 中最明显的例子是 ADFS,但是任何时候你看到一个应用程序说Login with FacebookLogin with Google,都是一样的。联邦是一个很大的话题。具有目标 URL 的含义是,浏览器通常被重定向到身份提供者(ADFS / FB / GOOG 等),并带有回调 URL,一旦通过身份验证,浏览器应该返回到该回调 URL。

我只想说我怀疑你不需要对这个领域做任何事情!我这么说的原因是因为我用 Fiddler 击中了它。

你应该知道 Fiddler。它是 Telerik 的免费调试代理。我不隶属于 Telerik,但我欠他们在网络抓取时节省了数小时的时间。(这不是这项工作的唯一工具,如果任何版主认为我违反了网站规则,我很乐意清理这篇文章。)

做这个:

  • 安装提琴手
  • 将其设置为监听 127:0.0.1:whatever 并成为您的系统代理
  • 在“工具”>“选项”>“HTTPS”中,将其设置为解密 HTTPS(这会将所有证书替换为自动生成的自签名证书,因此在执行其他任务时不要让它运行)
  • 将您的过滤器设置为仅包含到 *.procore.com 的流量
  • 通过浏览器登录 - 您现在应该在左侧窗格中看到网络流量。此捕获的流量是您的基准。
  • 选择任何一个 Web 请求并查看右侧窗格中的 Inspectors 选项卡。您可以查看 Raw、Forms、Cookies 等。这可以让您对客户正在做的事情有一个低级的了解。
  • 运行您的代码片段。您现在可以比较基线和您的代码之间的差异,并进行相应的调整。
于 2019-03-17T17:34:19.247 回答