春节期间,花了好几天的功夫编码与测试,才算勉强release......
利用WinInet + MFC编写,现在主要讲解一下原理:
备注信息: 论坛测试账号(username: cctry_good / uid: 22983),以下内容经Syc老大允许后才得以修改更正!
(可以用来挂论坛的在线时间!)
运行主界面:
签到提示:
回复贴子:
1、论坛WEB程序相关知识:
A、MFC如何提交表单:
这个之前在也有两贴子(含源码)介绍了利用WinInet如何模拟WEB提交表单,有兴趣的可以看看!
VC POST表单模拟登录新浪邮箱 利用WinInet查询考生信息
B、论坛WEB程序必备:
username 用户名
uid 用户名对应的唯一标示ID
formhash 登录后唯一标示
Omnipeek 网络抓包工具
Fiddler2 Web调试工具 (推荐)
C、会员信息获取办法:
这里就用到了uid,当然你也可以换成 username-cctry_good 其实发现也可以!
当然如果你是 正则表达式 方面的大师,取这个页中的数据就容易多了!反之,如果不熟悉正则的童鞋,你可以使用CString::Find、Mid等函数来获取。
个人空间的页面如下:
(1) http://www.cctry.com/space-uid-22983.html
(2) http://www.cctry.com/home-space-uid-22983-do-profile.html
2、WEB数据描述:
关于 HTTP协议 ,我也不想多做解释,说简单一点,就是 本机事先组织一串有规律的Buffer通过系统网络模块,提交给WEB后台的IIS程序,然后IIS来解析这段HTTP数据包,再返回一个Buffer给你(一般这个Buffer[即网页源码],由IE等浏览器来解析成网页),然后就完成了一次通信 。下面这些都是由抓包工具得来:
A、登录数据包格式: “User-Agent” 就是 CInternetSession构造函数的第一个参数,默认为空(即为工程名)。
B、退出论坛与清除痕迹的数据包格式:
这里要提到的是formhash后面的一个字符串,我对WEB编程不了解,没法用专业的术语来形容,在此就这样描述吧:它是论坛会员登录后唯一的标示,以后退出、签到、发贴等等操作会用到它。
通过读取论坛首页,即可获取到formhash值: 退出论坛的数据包格式: 清除痕迹的数据包格式: C、签到的数据包格式:
以下为签到时的数据包格式,后面会用到formhash,及其他表单选项: 3、部分代码 :
这里之所以不放Src,主要有两方面: 防止论坛水贴泛滥影响气氛 、根据以上笔记自行编写来同时 提高童鞋们动手能力 !
OK,回正题吧!下面为部分代码,仅供参考:
A、全局变量: B、其他数据类型、宏定义: C、主窗口类的成员变量与成员函数: OK,大家可以看到代码量并不多!具体也规划好了,有兴趣的可以自已参考一下编写试试!
当前版本:V1.0
更新内容:
1、增加手动回贴/定时回贴的功能,手动可回复论坛任意贴子,自动回贴仅仅tid=16196.
2、增加保存/加载上次成功登录的用户密码的功能.
当前版本:V2.0
更新内容:
1、修复登录及回贴相关数据包
2、修复CPU跑高的线程定时器代码
利用WinInet + MFC编写,现在主要讲解一下原理:
备注信息: 论坛测试账号(username: cctry_good / uid: 22983),以下内容经Syc老大允许后才得以修改更正!
(可以用来挂论坛的在线时间!)
运行主界面:
签到提示:
回复贴子:
1、论坛WEB程序相关知识:
A、MFC如何提交表单:
这个之前在也有两贴子(含源码)介绍了利用WinInet如何模拟WEB提交表单,有兴趣的可以看看!
VC POST表单模拟登录新浪邮箱 利用WinInet查询考生信息
B、论坛WEB程序必备:
username 用户名
uid 用户名对应的唯一标示ID
formhash 登录后唯一标示
Omnipeek 网络抓包工具
Fiddler2 Web调试工具 (推荐)
C、会员信息获取办法:
这里就用到了uid,当然你也可以换成 username-cctry_good 其实发现也可以!
当然如果你是 正则表达式 方面的大师,取这个页中的数据就容易多了!反之,如果不熟悉正则的童鞋,你可以使用CString::Find、Mid等函数来获取。
个人空间的页面如下:
(1) http://www.cctry.com/space-uid-22983.html
(2) http://www.cctry.com/home-space-uid-22983-do-profile.html
2、WEB数据描述:
关于 HTTP协议 ,我也不想多做解释,说简单一点,就是 本机事先组织一串有规律的Buffer通过系统网络模块,提交给WEB后台的IIS程序,然后IIS来解析这段HTTP数据包,再返回一个Buffer给你(一般这个Buffer[即网页源码],由IE等浏览器来解析成网页),然后就完成了一次通信 。下面这些都是由抓包工具得来:
A、登录数据包格式: “User-Agent” 就是 CInternetSession构造函数的第一个参数,默认为空(即为工程名)。
B、退出论坛与清除痕迹的数据包格式:
这里要提到的是formhash后面的一个字符串,我对WEB编程不了解,没法用专业的术语来形容,在此就这样描述吧:它是论坛会员登录后唯一的标示,以后退出、签到、发贴等等操作会用到它。
通过读取论坛首页,即可获取到formhash值: 退出论坛的数据包格式: 清除痕迹的数据包格式: C、签到的数据包格式:
以下为签到时的数据包格式,后面会用到formhash,及其他表单选项: 3、部分代码 :
这里之所以不放Src,主要有两方面: 防止论坛水贴泛滥影响气氛 、根据以上笔记自行编写来同时 提高童鞋们动手能力 !
OK,回正题吧!下面为部分代码,仅供参考:
A、全局变量: B、其他数据类型、宏定义: C、主窗口类的成员变量与成员函数: OK,大家可以看到代码量并不多!具体也规划好了,有兴趣的可以自已参考一下编写试试!
当前版本:V1.0
更新内容:
1、增加手动回贴/定时回贴的功能,手动可回复论坛任意贴子,自动回贴仅仅tid=16196.
2、增加保存/加载上次成功登录的用户密码的功能.
当前版本:V2.0
更新内容:
1、修复登录及回贴相关数据包
2、修复CPU跑高的线程定时器代码