从 C# 代码登录到 AJAX 网页

本文关键字:AJAX 网页 登录 代码 | 更新日期: 2023-09-27 17:56:38

我正在尝试通过 C# 代码使用用户名 + 密码登录站点。我发现它使用 Ajax 进行身份验证...

我应该如何实现这样的登录?网页中的元素似乎没有"id"......

我尝试使用HtmlAgilityPack实现它,但我认为这不是正确的方向...我无法模拟单击按钮,因为我找不到按钮的"ID"。

if (tableNode.Attributes["class"].Value == "loginTable")
{   
    var userInputNode =
        tableNode.SelectSingleNode("//input[@data-logon-popup-form-user-name-input='true']");
    var passwordInputNode =
        tableNode.SelectSingleNode("//input[@data-logon-popup-form-password-input='true']");
    userInputNode.SetAttributeValue("value", "myemail@gmail.com");
    passwordInputNode.SetAttributeValue("value", "mypassword");
    var loginButton = tableNode.SelectSingleNode("//div[@data-logon-popup-form-submit-btn='true']");                
}

从 C# 代码登录到 AJAX 网页

这个问题相当广泛,但我会在大方向上帮助你:

  1. 使用 Chrome DevTools (F12) => 网络选项卡 => 选中"保留日志"。另一种选择可能是小提琴手2
  2. 手动登录并查看 AJAX 发送的请求。保存终结点(URL)并保存请求的正文(请求中带有用户名和密码的 Json 数据)
  3. 直接在 C# 代码中发布帖子,忘记 HtmlAgilityPack,除非你需要从页面实际获取一些动态数据,但这种情况很少
  4. 发生
  5. 使用类似以下代码片段的内容登录:在 C# 中通过 WebClient 将 JSON 发布到 URL
  6. 现在您已登录。登录时,您通常会从服务器接收一些数据,因此请保存这些数据并将其用于下一步要执行的任何操作。我猜它可能有一些 SessionId 或一些身份验证令牌,您未来的请求将需要这些令牌作为参数来证明您确实已登录。