今天有朋友想要用程序模拟网易163邮箱注册,但是遇到了一些小问题,小菜特准备了一篇文档,希望可以帮到需要的朋友。

 

模拟程序整体流程图:

 程序模拟网易163邮箱注册帮助文档-编程知识网

 

 

 

整个过程必须使用同一个模拟对象!

 

 

注册说明:

 

l  post方式提交

l  参数列表:name=A12312312AASD&flow=main&uid=A12312312AASD@163.com&password=a123123&confirmPassword=a123123&mobile=&vcode=xxx&from=email163。name参数是用户输入的邮件名称;flow参数不用动;uid参数是用户输入的邮件名+用户选择的邮箱类型,也就是完整的邮件名称。password参数是密码;confirmPassword参数是确认密码;mobile参数留空;vcode参数是验证码;from参数不用动。

l  提交地址:https://ssl.mail.163.com/regall/unireg/call.do?cmd=register.start&reforward=common/reform&targetCmd=register.ctrlTop

 

 

邮件地址验证说明:

 

l  post方式提交

l  参数列表:name=a12312312aa

l  提交地址:http://reg.email.163.com/unireg/call.do?cmd=urs.checkName

l  原理:当我们请求邮件注册地址(http://reg.email.163.com/unireg/call.do?cmd=register.entrance)的时候会在服务器端创建一个session,这个session会用来保存邮件地址信息,当我们提交表单的时候,一定会用到这个session,因此,在提交表单之前一定要先验证邮件地址(相当于向session中添加数据)。用程序模拟的时候,应该是先请求邮件注册地址,然后验证邮件地址,最后提交表单,并且一定要保证这三个步骤用的是同一个对象,这样才能保持session会话。

 

 

邮件地址验证返回代码说明:

 

l  vip163, vip126, vip188, 126.com , yeah.net 这些邮箱可以注册,也就是说,哪个邮箱可以注册,哪个邮箱就会出现在这个字符串中,里面的参数1,作用未知。返回代码:{"code":200,"desc":"OK","result":{"vip163":1,"vip126":1,"vip188":1,"126.com":1,"yeah.net":1}}

l  全部已注册,也就是没有任何邮箱可以注册返回。返回代码:{"code":200,"desc":"OK"}

 

 

密码验证说明:

 

l  密码验证是在客户端javascript脚本中验证完成的,无需与服务器交互。

 

 

验证码说明:

 

l  get方式获取

l  验证码获取地址:http://reg.email.163.com/unireg/call.do?cmd=register.verifyCode&v=common/verifycode/vc_en&env=923076068445&t=1365956401862

l  说明:很明显,提交地址上最后一个参数t是时间戳,防止出现缓存问题,我们用程序模拟提交的时候,也随便用一个时间戳代替即可。但是这个地址上还有很多其他的参数,这些参数绝对是有用的,貌似可以保证验证码只在当前会话中有效,暂且可以让它们保持不动。但是,请求验证码的对象和上边所说的对象也应该是同一个!也就是说,整个模拟程序,只可以使用一个对象,必须保证会话的一致性。

 

      以上仅仅是猜测,小菜并没有测试,仅供参考,如有错误之处,望谅解!