使用C#HttpWebRequest登录网站后获取Cookie问题(Cookie由javascript生成)

使用C#HttpWebRequest登录网站后获取Cookie问题(Cookie由javascript生成),c#,javascript,httpwebrequest,http-headers,C#,Javascript,Httpwebrequest,Http Headers,我正在做一个项目,通过C#登录一个网站。 此网站的cookie是由Javascript创建的,我无法获取。你有什么想法吗? 只有登录后,我才能从该网站阅读我需要的资源 -----以下是HTTPWebRequest返回的HTML内容------ 实际上,我需要具有正确cookie的CookieContainer,并将其作为下一个请求容器,但CookieContainer cookie计数为0 附言: 上面的c#使用GET方法访问,我使用POST方法访问一些头,结果是一样的 代码应该是好的,我已经改

我正在做一个项目,通过C#登录一个网站。 此网站的cookie是由Javascript创建的,我无法获取。你有什么想法吗? 只有登录后,我才能从该网站阅读我需要的资源

-----以下是HTTPWebRequest返回的HTML内容------

实际上,我需要具有正确cookie的CookieContainer,并将其作为下一个请求容器,但CookieContainer cookie计数为0

附言:

  • 上面的c#使用GET方法访问,我使用POST方法访问一些头,结果是一样的

  • 代码应该是好的,我已经改变了另一个网站的URL登录,我可以得到正确的Cookie。所以我猜它的Javascript问题是,我如何用C#获得它

  • 请随时使用用户名和密码登录/测试,此帐户仅用于测试

  • 任何想法都很感激!
    谢谢

    如果该网站通过javascript设置cookie,我建议您尝试用C#解析javascript,并尝试从中重建cookie。

    感谢您的重播。我已经这样做了,将document.cookie=“…js cookie string.”转换为cookie string,并将其用作下一个HTTP请求cookie,但它无法工作,显示未登录。实际上,我需要使用CookieContainer对象,而不是cookie字符串…您是如何将cookie传递给下一个请求的?您是否已将这些cookie分配给
    CookieContainer
    ?首先,将js字符串转换为C#字符串cookieHeader。然后var newRequest=(HttpWebRequest)WebRequest.Create(“newPostLink”);newRequest.CookieContainer=容器;newRequest.CookieContainer.SetCookies(newRequest.RequestUri,cookieHeader);PS:我认为转换的JS NewDate()可能和服务器时间不一样,你怎么看?谢谢
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <base href="http://passport.tianya.cn:80/" />
        <meta http-equiv="cache-control" content="no-cache" />
        <meta http-equiv="pragma" content="no-cache" />
        <meta http-equiv="expires" content="0" />
        <title>Loading......</title>
        <script>
          document.cookie='user=w=testAcount01&id=61847120&f=1;expires='+(new Date(new Date().getTime()+2592000*1000)).toGMTString()+';path=/;domain=tianya.cn';
          document.cookie='temp=k=715580387&s=&t=1324904085&b=270dc20704fefc75b56510d5b2c225c8&ct='+parseInt(new Date().getTime()/1000)+'&et=-1;path=/;domain=tianya.cn';
          document.cookie='sso=r=1789338886&sid=&wsid=E329680C729EA57FE7B913A7CB0EB42E;path=/;domain=tianya.cn';
          document.cookie='right=web4=n&portal=n;expires='+(new Date(new Date().getTime()+2592000*1000)).toGMTString()+';path=/;domain=tianya.cn';
          document.cookie='temp4=rm=;expires='+(new Date(new Date().getTime()+2592000*1000)).toGMTString()+';path=/;domain=tianya.cn';
        </script>
        <script type="text/javascript" src="http://passport.tianyaclub.com/domain.jsp?cookieTime=1324904085&portalValue=&rightCookie=false&rmCookieCode=&isActivatedUser=&idWriter=61847120&writer=testAcount01&intKey=715580387&chvSysGradeList=&sysGrade=&domain=tianyaclub.com&flag=b868a24deca81f10c73df39b92004b1c&rmCode=false&rmFlag=&wsid=E329680C729EA57FE7B913A7CB0EB42E&r=1789338886"></script>
        <script type="text/javascript" src="http://passport.hainan.net/domain.jsp?cookieTime=1324904085&portalValue=&rightCookie=false&rmCookieCode=&isActivatedUser=&idWriter=61847120&writer=testAcount01&intKey=715580387&chvSysGradeList=&sysGrade=&domain=hainan.net&flag=b868a24deca81f10c73df39b92004b1c&rmCode=false&rmFlag=&wsid=E329680C729EA57FE7B913A7CB0EB42E&r=1789338886"></script>
        <script type="text/javascript" src="http://passport.hiholiday.com/domain.jsp?cookieTime=1324904085&portalValue=&rightCookie=false&rmCookieCode=&isActivatedUser=&idWriter=61847120&writer=testAcount01&intKey=715580387&chvSysGradeList=&sysGrade=&domain=hiholiday.com&flag=b868a24deca81f10c73df39b92004b1c&rmCode=false&rmFlag=&wsid=E329680C729EA57FE7B913A7CB0EB42E&r=1789338886"></script>
      </head>
      <body>
        <script>
          location.href="http://my.tianya.cn";
        </script>
      </body>
    </html> 
    
     CookieContainer container = new CookieContainer();
     string url = "http://passport.tianya.cn/login?vwriter=testAcount01&vpassword=123456abc";
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.CookieContainer = container;
    
            request.BeginGetResponse(call =>
                {
                    var httpRequest = (HttpWebRequest)call.AsyncState;
                    var httpResponse = (HttpWebResponse)httpRequest.EndGetResponse(call);
    
                    using (var stream = new StreamReader(httpResponse.GetResponseStream()))
                    {
                        var content = stream.ReadToEnd();
                    }
    
                }, request);