您的位置:首页 > 编程语言 > ASP

ASP.NET 搭建贴吧机器人(零)

2016-06-11 14:54 435 查看
    各种各样的贴吧自动回复、签到机器人屡见不鲜,基于PHP的也随处可见。用C#语言写的也有,不过以单机版居多,但是既然是机器人,一般是需要24小时不断运行的,这就需要在服务器上运行了。

    不管怎么实现,第一步是要登录自己的贴吧帐号的。

    贴吧帐号的登陆流程一般是:

     1.登陆前获取一个BAIDUID(baidu就算你没登陆也会给你分配一个BAIDUID),保存到Cookie中去。(如果正确,则获得的cookie包含3个成员:BAIDUID,BIDUPSID,PSTM)

     2.根据保存的Cookie获取一个token。如果token存在,则表明网络连接正常。为后续的登录做准备。(如果获得正确,则获得的cookie包含4个成员,比上一次多了HOSUPPORT)

     3.向百度发送登陆数据获取验证码地址(如果有验证码,则获得Cookie包含5个成员,比上一个多了个UBI)

     4.向百度发送包含验证码的数据,这样就正常登录了。(获得的Cookie数量有11个,比上一次多了HISTORY,SAVEUSERID,USERNAMETYPE,PTOKEN,STOKEN还有关键的BDUSS,总共11个cookie)

     遇到的困难也是许多人都遇到的问题。NET 4.0以后对Cookie过期的处理。

     在3.5及之前,系统对cookie过期时间为空的认定为永不过期。而在4.0及之后,则认定过期时间是1938年1月1日,即早就过期了,就自动清空,这样就导致在第二部获取token时前面获取的cookie什么都不包含,也就获取不了token,难以完成接下来的处理。

    解决方法很简单,换回net 3.5或者手动设置永不过期:

this.CookieCollection = HWR_Response.Cookies;
//防止cookie过期
foreach (Cookie Each_Cookie in this.CookieCollection)
{
if (Each_Cookie.Expires.Year < 2000)
{
Each_Cookie.Expires = DateTime.MaxValue;
CookieContainer.Add(Each_Cookie);
}
}
其中CookieCollection是供我们查看的response命令返回的cookies,CookieContainer是发送命令时所需要的cookie容器,也就是我们一直都需要用的所谓“Cookie”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: