工作也签了,没啥事做。。。
突然想研究一下网站自动登陆的问题,决定做点有挑战性的事情搞个有验证码的试试。呵呵~~
找啊找。。。远在天边近在眼前,对!就是百度贴吧。
经过一晚上的分析实验,终于有点眉目了,赶紧写下来。
大概原理是这样的:
一、使用HttpWebRequest 和HttpWebResponse 。从Stream中获得HTML代码
二、在窗体中加载验证码图片(暂时还只能手工输入,呵呵~能力有限~)。这里主要通过正则表达式查找HTML中的验证码地址。
三、POST数据。这里要注意POST中文的话要注意编码,不然会出现乱码
string postcontent = HttpUtility.UrlEncode(textBox3.Text, Encoding.GetEncoding("gb2312")).ToUpper();
然后分析其他相关的字段,一起Write到Stream中
问题:
1.不稳定,有的时候可以成功,有的时候不行。怀疑是发贴时间有限制,或者其他限制,有待研究。。。
2.关于POST后的返回状态没有检测,可能会获得不能发贴的错误原因。主要分析返回的HTML中的错误描述。
3.贴吧的验证码是直接保存在Hidden标签中的,如果要加上Cookies验证呢?恩,有待考虑。。。
相关参数:
<input type=hidden name=ct value=385875968>
<input type=hidden name=tn value=baiduSubmitPost>
<input type=hidden name=word value="1">
<input type=hidden name=lm value="7270" >
<input type=hidden name=z value="153473192" >
<input type=hidden name=sc value="1">
<input type=hidden name=cm value="0">
<input type=hidden name=rn value="634431546">
<input type=hidden name=bs value="31337524417A9067F9748F2DAD5A7C29F1DF4EB82EEC455CD4B7FD2D83EF7EB5FB5558A5B5CA7676B592F1419758C3E731A08D58C0226EB9013C1575CF8A">
//验证码直接保存在HTML中了,呵呵。。
OH~~My God 睡觉了~~~~明天继续
&spm=1001.2101.3001.5002&articleId=1435738&d=1&t=3&u=8376971e74c04efaac9ff540fc80e29b)
7114

被折叠的 条评论
为什么被折叠?



