none
httpwebrequest能否实现跨站点登陆并跳转到登陆后的页面 RRS feed

  • 问题

  • 现在有两个网站 A网站与B网站 

    我加载A网站的登陆页面后,用httpwebrequest 实现登陆B,并直接跳转到B网站的登陆成功后的页面

    需求大致是这样。 

    可是我每次跳转都直接跳到B网站的登陆页面了,请有答案的能否支个招?


    2014年5月14日 14:31

全部回复

  • 用fiddler抓登陆的请求之后和你发的请求比较。


    Visual C++ MVP

    2014年5月14日 15:30
    版主
  • 基本cookie 都有了 我是模拟登陆cnzz

    foreach (Cookie cookie in mycookie) //将cookie设置为浏览的cookie  
                {
                   
    
                    HttpCookie cook = new HttpCookie(cookie.Name.ToString(), cookie.Value.ToString() + ";expires=Sun,22-Feb-2099 00:00:00 GMT");
                    cook.Domain = ".cnzz.com";
    
                    this.Page.Response.Cookies.Add(cook);
    
                }

    2014年5月14日 16:01
  • cookie只不过是请求的一部分。post data呢?URL呢?user agent呢?referrer呢?还是老老实实抓下来比较。



    Visual C++ MVP

    2014年5月14日 16:20
    版主
  • public static CookieCollection GetCookieCollection(string loginUrl, string postdata, HttpHeader header)
            {
                HttpWebRequest request = null;
                HttpWebResponse response = null;
                try
                {
                    CookieContainer cc = new CookieContainer();
                    request = (HttpWebRequest)WebRequest.Create(loginUrl);
                    request.Method = header.method;
                    request.ContentType = header.contentType;
                    byte[] postdatabyte = Encoding.UTF8.GetBytes(postdata);
                    request.ContentLength = postdatabyte.Length;
                    request.AllowAutoRedirect = false;
                    request.CookieContainer = cc;
                    request.KeepAlive = true;
                    request.Referer = "http://www.cnzz.com/";
                    request.UserAgent = header.userAgent;
     
    
                    //提交请求
                    Stream stream;
                    stream = request.GetRequestStream();
                    stream.Write(postdatabyte, 0, postdatabyte.Length);
                    stream.Close();
    
                    //接收响应
                    response = (HttpWebResponse)request.GetResponse();
                    response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
    
                    CookieCollection cook = response.Cookies;
                    //Cookie字符串格式
                    string strcrook = request.CookieContainer.GetCookieHeader(request.RequestUri);
    
                    return cook;
                }
                catch (Exception ex)
                {
    
                    throw ex;
                }
    我该抓取的都抓取了 真心没头绪!
    2014年5月15日 3:23
  • 你用ie登陆A网站,就可以直接打开B网站的登陆成功后的页面


    http://feiyun0112.cnblogs.com/

    2014年5月15日 5:49
    版主
  • B网站是用A网页的后置代码 来做登陆操作 

    2014年5月15日 5:54