您的位置:首页 > 编程语言 > Qt开发

QT_利用qt编写一个半自动的126邮箱注册机

2015-07-31 23:20 323 查看

今天下午研究了一下午,终于明白了这种软件的原理,是通过http协议向服务器发送一个注册的请求顺便把注册信息发过去,注册便成功了(感觉好简单- -)

http协议功能

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网站

以上摘自百度百科

具体实现原理

使用抓包工具(我用的是ie11,然后用httpwatch pro抓的包)获取发送请求的地址和要发送的数据包,然后通过发送出去。

用ie11打开126邮箱的注册界面,输入要注册的账号密码后,运行httpwatch,点击左上角的record,然后在注册界面点击注册,就会发现httpwatch加了一些东西,那就是抓到的数据包。

如果不出意外地话出现的就应该是这个东西

下图中received之前的几列不用管(其实是并不知道有什么卵用),然后Method就是请求方法(注1),result是返回的结果即响应码(注2),最后一个就是要发送POST请求的地址。



至于为什么会出现两个POST请求我也不知道= = (新手勿喷),但是第二个是发送你的注册信息的,点击第二个,在httpwatch的下面就会出现这个包的详细信息

其中最主要的就是OverView中的URL,要向该地址发送请求




然后就是POST Data,其中记录了发送的数据




这里面最重要的就是最下面一句,是你的请求正文,这样就获得了请求正文的消息格式

name=你要注册的名字&flow=main&uid=你要注册的名字%40126.com&password=注册的密码&confirmPassword=注册的密码&mobile=&vcode=验证码&from=126mail

然后把它发送出去就行了

验证码

虽然上面说的很简单但是实践起来就出现了很多问题,比如困扰我快一个周的获取验证码的图片,通过httpwatch抓包发现获取验证码的URL每次都发生变化。

注:

1、HTTP规范定义了8种可能的请求方法:

GET 检索URI中标识资源的一个简单请求

HEAD 与GET方法相同,服务器只返回状态行和头标,并不返回请求文档

POST 服务器接受被写入客户端输出流中的数据的请求

PUT 服务器保存请求数据作为指定URI新内容的请求

DELETE 服务器删除URI中命名的资源的请求

OPTIONS 关于服务器支持的请求方法信息的请求

TRACE Web服务器反馈Http请求和其头标的请求

CONNECT 已文档化但当前未实现的一个方法,预留做隧道处理

2、HTTP响应码:

1xx:信息,请求收到,继续处理

2xx:成功,行为被成功地接受、理解和采纳

3xx:重定向,为了完成请求,必须进一步执行的动作

4xx:客户端错误:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: