C#操作Cookie经验一:登陆WordPress遇到的问题

盛世北京赛车pk10历史记录 www.lcvmw.cn 时间:14-09-30 栏目:C#开发 作者:kyle 评论:0 点击: 5,511 次

C#操作Cookie感觉是一块硬伤,常?;岢鱿指髦指餮奈侍?。

 

我陆续记录一些出现的问题。下次好参考一下。

 

一、C#登陆Wordpress时Cookie出现的问题

抓包用的HttpAnalyzer V7版,破解的,网上一大堆,可以自己去找。

完整跟踪之后发现了一共有3个步骤可以登陆成功。

1、Get请求访问**.com/wp-login.php,WP会给你一个Key为wordpress_test_cookie的Cookie,

2、用这个Cookie,POST到wp-login.php,POST的数据格式为

log=帐号&pwd=密码&wp-submit=%E7%99%BB%E5%BD%95&redirect_to=http%3A%2F%2Fwww.***.com%2Fwp-admin%2F&testcookie=1

Post的时候,需要带上上面的Cookie。重点来了。

这个步骤的流程应该是POST数据,然后POST之后,会跳转到后台去,然后就可以登陆成功了。

实际上:

如果你设置了C# HttpRequest里面的Allowautoredirect=true,会跳转到一个登陆页面,无法登陆后台。

我这里使用的是苏飞sufeinet.com论坛里面的HttpHelper类。挺方便的。现在出了一个收费版感觉太鸡肋了。免费版方便一点,刚看了一下,付费版支持了302跳转,不过这个非常简单,可以自己简单改写一下就能实现。

继续说。HttpRequest里面的allowautoredirect应该是只能识别301之类的跳转。刚好WordPress登陆后台这里是302跳转,Http访问头里面的信息是

302 Found,然后会出来一个Location指向真实跳转地址。

如下图:

1

Location里面指向了后台,但是使用allowAutoredirect是登陆不了的。原因是allowredirect不会把C#本地存的Cookie提交上去,这一步是自动的。我们需要把记录下来的这些Cookie全部提交上去才能成功。

 

解决方案:

1、关掉allowredirect,设为False,

2、POST结果遍历Header,找到Location之后,取得URL,再进行跳转,跳转的时候带上Cookie。

代码大概如下。

public string PostData(string url, string postData, string refer = "", string encode = "utf-8", bool redirect = true, bool keepAlive = true)
{
    item = new HttpItem();
    item.URL = url;
    item.Method = "post";
    if (!string.IsNullOrEmpty(refer))
        item.Referer = refer;

    if (!string.IsNullOrEmpty(encode))
        item.Encoding = Encoding.GetEncoding(encode);

    item.UserAgent = this.UserAgent;
    item.ContentType = "application/x-www-form-urlencoded";
    item.Allowautoredirect = redirect;
    item.KeepAlive = keepAlive;

    item.Postdata = postData;

    item.Connectionlimit = 1000;
    item.Expect100Continue = false;

    item.CookieCollection = this.curCookies;
    item.ResultType = ResultType.String;
    item.ResultCookieType = ResultCookieType.CookieCollection;

    HttpResult result = http.GetHtml(item);
    string html = result.Html;

    CookieCollection parsedCookies = parseSetCookie(result.Cookie, extractHost(url));
    updateLocalCookies(parsedCookies, ref curCookies);
    updateLocalCookies(result.CookieCollection, ref curCookies);

    if (result.Header != null && result.Header.Count > 0)
    {
        for (int i = 0; i < result.Header.Count; i++)
        {
            if (result.Header.Keys[i].ToLower() == "location")
            {
                Console.WriteLine("Post LocationTo:" + result.Header.Get(i));
                html = GetHtml(result.Header.Get(i), url, "utf-8", redirect, true);

            }
        }
    }

    return html;
}

上面有一个自己改进的Cookie管理器,就不多说了。

下一个文章,会分析登陆百度推广时遇到的Cookie问题。

 

PS:为什么用原始方法登陆Wordpress。

网上的JoeBlogs库操作管理Wordpress使用的是XML-RPC.net库来解析数据,只能收发网文章和评论等等,设置获取不了WorePress的设置,比如邮箱,博客名等等。

里面的setOptions方法是无效的。查了一天资料,发现Wordpress的API返回的数据目前用XML-RPC.net很难解析。

还有一个WordpressWraper也实现不了。也不想去继续研究这个?;故侵苯佑肏ttp请求更方便一点。

成都SEO小五嚎2句: 本文是(盛世北京赛车pk10历史记录)辛苦弄出来的,转载成都SEO小五原创的请保留链接: C#操作Cookie经验一:登陆WordPress遇到的问题,3Q

C#操作Cookie经验一:登陆WordPress遇到的问题:等您坐沙发呢!

来给哥评论评论


------====== 小五公告 ======------
成都SEO小五,专注成都搜索引擎优化。
小五善长站内外优化,C#、PHP开发,中英文SEO,Google中英文和百度优化技术?;队耗诮涣?。伸手党请绕路,求资源的请绕开,求问题解答的请进群内交流??帕艘桓鯭Q交流群:160750032。加入验证时请标注任何SEO相交字眼。友情链接直接Q我,收录正常,内容大部份原创、SEO或者程序开发、网络营销、线上推广等相关行业即可。

常用工具

赞助广告

来看过哥的人

北京pk10计划软件 | 548| 433| 783| 615| 473| 368| 802| 313| 967| 3|