尝试以编程方式登录网站

时间:2019-07-22 22:04:39

标签: c# authentication

我正在尝试使用C#程序登录网站。现在,我的程序访问该网站并打开我想要的链接,但是重定向到一个页面,其中显示了登录链接,我转到该页面并显示登录表单。现在,我只是将此程序运行在控制台应用程序中,当我将其放入winform时,我希望唯一的输入是用户名和密码。

我使用webclient,MSHTML和SHDocVw以及HTTPRequest尝试了几种不同的方法。

<fieldset class="input">
    <p id="com-form-login-username">
        <label for="username">Username</label><br />
        <input name="username" id="username" type="text" class="inputbox" alt="username" size="18" />
    </p>
    <p id="com-form-login-password">
        <label for="passwd">Password</label><br />
        <input type="password" id="passwd" name="passwd" class="inputbox" size="18" alt="password" />
    </p>
        <p id="com-form-login-remember">
        <label for="remember">Remember Me</label>
        <input type="checkbox" id="remember" name="remember" class="inputbox" value="yes" alt="Remember Me" />
    </p>
        <input type="submit" name="Submit" class="button" value="Login" />
</fieldset>

我希望能够访问第一个链接并提取所有源代码以获取所需的信息。

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找硒,它是一个非常有用的自动化库,它也可以以无头模式运行,这意味着它不会在自动化操作发生的地方显示google标签。 您还可以获得元素值和更多内容

您可以在https://www.seleniumhq.org/

上看到更多信息

教程:https://www.guru99.com/selenium-csharp-tutorial.html

答案 1 :(得分:0)

我设法找出了无法使Selenium正常工作的东西。

        wb.Visible = true;
        wb.Navigate(MainSite);
        {
            while (wb.Busy) { Thread.Sleep(100); }
            document = ((HTMLDocument)wb.Document);
            if (document.body.outerHTML.Contains("Logout")) { Loggedin = true; }
            if (!(document.body.outerHTML.Contains("Logout"))) { Loggedin = false; }
            if (Loggedin == false)
            {
                element = document.getElementById("Username");
                username = (HTMLInputElement)element;
                username.value = Username;
                username = null;
                element = document.getElementById("Passwd");
                password = (HTMLInputElement)element;
                password.value = Password;
                password = null;
                element = document.getElementById("Submit");
                Submit = (HTMLInputElement)element;
                Submit.click();
                Submit = null;
                while (wb.Busy) { Thread.Sleep(100); }
                SourceCode = document.body.outerHTML;
            }

        }