0

我正在尝试使用 Visual C# 登录网站,但我不知道从哪里开始。最后,我想从网站上下载一个 PDF 文件,但我必须登录该网站,因为它有密码限制。网址如下:

https://sso.greatclips.com/authentication/login/login.aspx?ud=1&ApplicationCode=1&ReturnURL=https%3A%2F%2Fwww.salondata.com%2Fv2%2Fwa%2FloginPostBack

我不确定它是否有效。我有什么选择,代码甚至可以做任何事情吗?

到目前为止,这是我的代码。(注意:我不想在 Visual C# App 中浏览网页,我希望它在后台完成)

    public static Setup setup = new Setup();
    private CookieContainer _jar = new CookieContainer();
    public static string password = setup.Password;
    public static string username = setup.UserName;
    private string _url = "https://sso.greatclips.com/authentication/login/login.aspx";
    private string _userAgent;
    public Salons()
    {
        InitializeComponent();
    }
    private void Salons_Load_1(object sender, EventArgs e)
    {
        string responseData;
        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(_url);

        webRequest.CookieContainer = _jar;
        webRequest.Method = "POST";
        webRequest.ContentType = "application/x-www-form-urlencoded";
        webRequest.UserAgent = _userAgent;

        string requestBody = String.Format(
            "client_id={0}&password={1}", username, password);

        using (StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream()))
        {

            requestWriter.Write(requestBody);
            lblStatus.Text = "Writing request ...";
            requestWriter.Close();

            using (HttpWebResponse res = (HttpWebResponse)webRequest.GetResponse())
            {
                using (StreamReader responseReader = new StreamReader(res.GetResponseStream()))
                {

                    responseData = responseReader.ReadToEnd();
                    responseReader.Close();
                    lblStatus.Text = "Closing request ...";

                    if (res.StatusCode != HttpStatusCode.OK)
                        throw new WebException("Logon failed", null, WebExceptionStatus.Success, res);
                    else
                        lblStatus.Text = "Successfully logged in!";
                }
            }
        }
    }

编辑:

当我点击登录按钮时请求:

POST http://sso.greatclips.com/authentication/login/login.aspx?ud=1&ApplicationCode=1&ReturnURL=https%3a%2f%2fwww.salondata.com%2fv2%2fwa%2floginPostBack HTTP/1.1 主机:sso.greatclips .com 用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1 接受:text/html,application/xhtml+xml,application/xml;q=0.9, / ; q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate DNT: 1 Connection: keep-alive X-MicrosoftAjax: Delta=true Cache-Control: no-cache, no-cache Content -类型:应用程序/x-www-form-urlencoded;charset=utf-8 引用:http ://sso.greatclips.com/authentication/login/login.aspx?ud=1&ApplicationCode=1&ReturnURL=https%3A%2F%2Fwww.salondata.com%2Fv2%2Fwa%2FloginPostBack 内容长度:1331 Cookie:stayloggedin=399238;ASP.NET_SessionId=g3tf01mqzgcdbhyoagfz1s55; .ADAuthCookie=2496474AAA6C67DC05253300439E06151F94E728769EA71FBFDB0CD832E772DBA6F5B5220EF7A5C7E79ED7B445EB7DF6C39B9A1E276277BDD3DC9DF2756294157D57C1B926F919F3A87BDE0CDBA8F43E0C8989357A24372DEA39B973A53F89F0EDEE1E2D3B391A785B1AB19FB704B420BD95A5C3505765D51FA865565686F3CF0F74AFD2C2E76146AB14F46BC2E4B21189B721C32DF3A6466631D0326ABB0D95087FF9E2 Pragma: no-cache

ctl00%24ScriptManager1=ctl00%24UpdatePanel1%7Cctl00%24cphMain%24loginMain%24LoginButton&_ EVENTTARGET=& _EVENTARGUMENT=&_VIEWSTATE=%2FwEPDwUKMjA3MDY5NDk2Ng9kFgJmD2QWBAIBD2QWBGYPZBYCZg9kFgICAQ8WAh4EVGV4dAUQUmVwb3J0aW5nIENlbnRlcmQCAg9kFgICAQ9kFgICAQ8WAh8ABRpzVGl0bGVCYWNrZ3JvdW5kPScjNUU3MUI2J2QCAw9kFgYCAw8PFgYeCEltYWdlVXJsBRppbWFnZXMvc3BlY3RydW1fYmFubmVyLmpwZx4NQWx0ZXJuYXRlVGV4dAUQUmVwb3J0aW5nIENlbnRlch4HVmlzaWJsZWdkZAIFD2QWAmYPZBYCAgEPDxYEHglCYWNrQ29sb3IJ%2FPz8%2Fx4EXyFTQgIIZBYCAgEPZBYCAgMPZBYCAgEPPCsACgEADxYCHghVc2VyTmFtZQUbc3VkZXNoLnNhcHJhQGdyZWF0Y2xpcHMubmV0ZBYCZg9kFgYCAQ8PFgIfAAUQUmVwb3J0aW5nIENlbnRlcmRkAgUPDxYCHwAFG3N1ZGVzaC5zYXByYUBncmVhdGNsaXBzLm5ldGRkAhkPDxYCHwAFGHdlYm1hc3RlckBncmVhdGNsaXBzLmNvbWRkAgkPDxYCHwAFEUNvcHlyaWdodCDCqSAyMDEyZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFJ2N0bDAwJGNwaE1haW4kbG9naW5NYWluJGNoa1N0YXlMb2dnZWRJbufuwcvYeS4gDjHhavP572TVdscK&_EVENTVALIDATION=%2FwEWCQL%2B5bxcAr2ailYCkqyM%2BQ0CtvDI7gECpJCinAICzoverwUCjqr%2B%2FAoCocjV5gcCybrK0QNROj0%2BEho3liuMeskLfe3LtC8Zog%3D%3D&ctl00%24cphMain%24loginMain%24UserName= *&ctl00%24cphMain%24loginMain%24UserName_TextBoxWatermarkExtender_ClientState=&ctl00%24cphMain%24loginMain%24Password=* &ctl00%24cphMain%24loginMain%24chkStayLoggedIn =on&__ASYNCPOST=true&ctl00%24cphMain%24loginMain%24LoginButton=Sign%20In

4

1 回答 1

0

几件可以帮助你的事情

(a) 这个 url 也可以在没有 SSL 的情况下工作(所以你不会处理检查正确的证书等),现在你可以尝试使用 url http://sso.greatclips.com/authentication来完成这项工作/login/login.aspx?ud=1&ApplicationCode=1&ReturnURL=https%3A%2F%2Fwww.salondata.com%2Fv2%2Fwa%2FloginPostBack(http 代替 https)

(b) 使用fiddler工具,它允许您记录浏览器和 Web 服务器之间的流量。只需查看单击登录按钮时浏览器向服务器发送的请求,并尝试在 C# 代码中实现相同的请求。

于 2012-08-11T18:52:17.890 回答