使用C#以编程方式登录网站

阿纳亚·汗(Anaya Khan)

我想使用C#登录此网站:这是我的尝试,但它使我进入首页。下一页不返回我,下一页应该在登录后可见,请帮助我解决此问题:

string formParams = 
string.Format("mail={0}&password={1}", [email protected]", "admin");
      string cookieHeader;
      WebRequest req = WebRequest.Create("http://muslimgowns.com/dashboard/login/public_login");
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method = "POST";
            byte[] bytes = Encoding.ASCII.GetBytes(formParams);
            req.ContentLength = bytes.Length;
            using (Stream os = req.GetRequestStream())
            {
                os.Write(bytes, 0, bytes.Length);
            }
            WebResponse resp = req.GetResponse();
            cookieHeader = resp.Headers["Set-cookie"];
            using (StreamReader sr = new  StreamReader(resp.GetResponseStream()))
            {
                string pageSource = sr.ReadToEnd();
                File.AppendAllText("first.txt", pageSource);
            }

            string pageSource1;
            string getUrl = "http://muslimgowns.com/dashboard/home";
            WebRequest getRequest = WebRequest.Create(getUrl);
            getRequest.Headers.Add("Cookie", cookieHeader);
            WebResponse getResponse = getRequest.GetResponse();
            using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
            {
                pageSource1 = sr.ReadToEnd();
                File.AppendAllText("second.txt", pageSource1);
            }
        }
奥古兹(Oguz Ozgul)

这似乎是第一个GET请求public_login返回的cookie的数量,以及POST与事后凭证要求必须送到login_access,而不是public_login

使用aHttpWebRequest代替WebRequest并通过设置cookie的cookie容器会有所帮助,实际上服务器会响应HTTP 302 RedirectPOST请求,并HttpWebRequest自动遵循此重定向并下载仪表板。

始终使用http跟踪工具(例如Fiddler或Wireshark或Network Monitor)或浏览器的开发人员工具来查看接收到的内容(cookie,标头等)以及发送回的内容。这就是我得到所有这些的方式。

解决方法是:

string formParams = string.Format("mail={0}&password={1}", "[email protected]", "admin");

CookieContainer cookieContainer = new CookieContainer();

HttpWebRequest req = WebRequest.CreateHttp("http://muslimgowns.com/dashboard/login/public_login");
req.CookieContainer = cookieContainer;
req.GetResponse(); // This is just to get the initial cookies returned by the public_login

req = WebRequest.CreateHttp("http://muslimgowns.com/dashboard/login/login_access");
req.CookieContainer = cookieContainer; // Set the cookie container which contains the cookies returned by the public_login

req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";

byte[] bytes = Encoding.ASCII.GetBytes(formParams);
req.ContentLength = bytes.Length;

using (Stream os = req.GetRequestStream())
{
    os.Write(bytes, 0, bytes.Length);
}

WebResponse resp = req.GetResponse();

using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
    string pageSource = sr.ReadToEnd();
    File.AppendAllText("first.txt", pageSource); // Dashboard is returned.
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以编程方式使用C#登录网站

来自分类Dev

以编程方式使用 OAuth 登录其他网站

来自分类Dev

如何使用C#以编程方式在“打开网站模式”下打开Visual Studio?

来自分类Dev

如何使用C#以编程方式从SharePoint网站获取所有图片库的列表

来自分类Dev

无法以编程方式执行网站登录

来自分类Dev

php CURL以编程方式登录网站

来自分类Dev

以编程方式登录到Android网站

来自分类Dev

以编程方式登录网站并提交表格

来自分类Dev

如何以编程方式登录网站

来自分类Dev

C#使用HTTPWebRequest登录网站

来自分类Dev

C#使用HTTPWebRequest登录网站

来自分类Dev

C#登录网站

来自分类Dev

使用C#以编程方式卸载软件

来自分类Dev

使用 C# 以编程方式更改 MTU

来自分类Dev

在Android应用程序中使用JavaScript以编程方式登录网站

来自分类Dev

如何以编程方式按下网站的登录按钮

来自分类Dev

C#自动登录网站

来自分类Dev

如何使用Java以编程方式访问网站?

来自分类Dev

C#使用桌面应用程序自动登录网站

来自分类Dev

登录到需要使用C#的Cookies的网站

来自分类Dev

使用 HttpWebRequest 获取和发布登录网站 C# .Net

来自分类Dev

如何使用C#以编程方式下载GitHub数据

来自分类Dev

使用CodeDOM以编程方式生成C#代码文档(摘要)

来自分类Dev

使用C#以编程方式更改系统默认语言

来自分类Dev

如何以编程方式更新VSTS文件(使用C#)

来自分类Dev

使用 C# 以编程方式调整网格中的行数

来自分类Dev

使用 c# 以编程方式创建 SFTP 用户

来自分类Dev

Instagram以编程方式登录

来自分类Dev

尝试通过C#程序登录网站