使用c#登录第三方网站

本文关键字:网站 第三方 登录 使用 | 更新日期: 2023-09-27 18:16:56

我有URL

,通过查看其源代码,我找到了用于登录的表单在这个URL

<form name="frmLogin" action="j_spring_security_check" method="post"><!-- FORM START -->
                <div class="pod">
                    <div class="single_input">
                        <label class="label" for="j_username">User Name</label>
                        <div class="field">
                            <input type="text" id="j_username" name="j_username" value="">
                        </div>
                    </div>
                    <div class="single_input">
                        <label class="label" for="j_password">Password</label>
                        <div class="field">
                            <input type="password" id="j_password" name="j_password" value="">
                        </div>
                    </div>
                    <div class="single_input">
                        <div class="field">
                            <a href="externalResetPassword">Forgot Password</a>
                        </div>
                    </div>
                </div>
                <div class="cta center">
                    <input name="btnContinue" type="submit" value="Login" class="btnContinue">
                </div>
            </form>

我的问题是,我如何检查我输入正确的用户名和密码,而不使用浏览器。我希望我可以使用c# HttpWebRequest

编辑:我发现一些代码似乎是有用的,但我不理解它正确

代码

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://www.fastactportal.com/login");
            req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)";
            req.Method = "POST";
            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            req.Headers.Add("Accept-Language: en-us,en;q=0.5");
            req.Headers.Add("Accept-Encoding: gzip,deflate");
            req.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
            req.KeepAlive = true;
            req.Headers.Add("Keep-Alive: 300");
            req.Referer = "https://www.fastactportal.com/login";
            req.ContentType = "application/x-www-form-urlencoded";
            String Username = "j_username";
            String PassWord = "j_password";
            StreamWriter sw = new StreamWriter(req.GetRequestStream());
            sw.Write("application=portal&url=http%3A%2F%2Fwww.fastactportal.com%2Fportal%2Fredirect%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Ftype%3Dssologin%26url%3D%2Fportal%2Fshow%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Fidc%3D1023278&realm=sso&j_username=" + Username + "&j_password=" + PassWord + "&x=16&y=11");
            sw.Close();
            HttpWebResponse response = (HttpWebResponse)req.GetResponse();

            StreamReader reader = new StreamReader(response.GetResponseStream());
            string tmp = reader.ReadToEnd();
            foreach (Cookie cook in response.Cookies)
            {
                tmp += "'n" + cook.Name + ": " + cook.Value;
            }

            Response.Write(tmp);
            Response.End();

这一行很混乱

sw.Write("application=portal&url=http%3A%2F%2Fwww.fastactportal.com%2Fportal%2Fredirect%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Ftype%3Dssologin%26url%3D%2Fportal%2Fshow%3Bjsessionid%3D1C568AAA1FB8B5C757CF5F68BE6ECE65%3Fidc%3D1023278&realm=sso&j_username=" + Username + "&j_password=" + PassWord + "&x=16&y=11");

谁能帮我理解一下这个

使用c#登录第三方网站

许多web应用程序(如代理web服务器和多个搜索引擎)都需要访问其他网站的HTML页面。在ASP.NET中,WebClientWebRequestWebResponse类通常用于执行这些要求。

另一方面,WebBrowser控件在Windows窗体应用程序中用于浏览网页和其他启用浏览器的文档。WebBrowser提供了许多事件来跟踪数据过程,以及许多属性和方法来访问和创建HTML元素级别的新内容。

在下面的链接中,我发现了一个使用窗口浏览器控件的网站

http://www.codeproject.com/Articles/50544/Using-the-WebBrowser-Control-in-ASP-NET