会话感知webclient无法正常工作

时间:2015-04-16 23:46:37

标签: c# .net webclient session-cookies

我正在尝试通过Cookie对使用php会话的网站进行网络抓取。它是一个很好的'Squirrelmail网络邮件服务器。

我看过几个帖子,比如this one,但它不适合我。

当主机发送cookie时到达部件时,我尝试使用以下方法检索cookie:

HttpWebResponse rs = (HttpWebResponse)rq.GetResponse();
CookieCollection cc = new CookieCollection();
cc.Add(rs.Cookies);

但是rs.Cookies是空的。但是,响应中有set-cookie个标头,我尝试将其用作构建实际Cookie的指南,如下所示:

for (int i = 0; i < rs.Headers.Count; i++)
{
    if (rs.Headers.Keys[i].ToLower().Contains("cookie"))
    {
        string val = rs.Headers[i];
        string[] vv = val.Split(";=,".ToCharArray());
        Cookie co = new Cookie(vv[0], vv[1]);

        // I know this is not the cleanest way to do it
        // I've tried to manually set different values for 
        // co.Domain, co.Path and co.HttpOnly, just to get a working
        // example. I tried different alternatives, but it doesn't
        // seem to change anything

        cc.Add(co);
    }
}

接下来,我发送cookie来请求下一页,这只是一个框架集。我到达框架集的事实意味着我已经成功通过身份验证,并且会话cookie正在运行。但是,当我请求其中一个帧时,我会收到一个身份验证错误的网页。我做了我的研究,同时饼干也没有改变。可能出现什么问题?

有些人可能想知道为什么我会在pop / smtp做一个更清洁的工作时尝试访问webmail。答案是这只是学习基础知识的第一个例子,只要我能成功管理会话,我就不在乎网站是什么。

我认为发布所有代码并不是一个好主意,因为它有点乱,而且很长:我计划在它工作后清理它(我会发布它,如果你觉得它值得混淆)。而且,我认为我可能有一个与帧相关的概念错误,这可能是解决问题的关键。

0 个答案:

没有答案