苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 39921|回复: 40

[源码分享] 网易163邮箱post注册机

[复制链接]
发表于 2014-2-2 23:33:18 | 显示全部楼层 |阅读模式
本帖最后由 Firefly1992 于 2014-7-18 14:10 编辑

前几天有个软件需要大批邮箱,想想可是一个个注册太麻烦了。经过一个星期的研究,写了这个程序,虽然还是很麻烦,不过比起网页上注册已经够方便的了。只需要填写验证码,用户名都不用考虑,直接生成可用的随即字符串。
在此分享给大家,大家看看有什么需要改进的地方可以回复我哦~
ps:没有加入代理服务器,不知道加入后程序运行会不会很慢啊。而且代理服务器怎么测试?如果不能用怎么办?没有接触过这方面的东西,苏大大能给讲一下吗?
本程序基于苏飞的HttpHelper。
在此只贴部分主要代码了。
首次登陆
[C#] 纯文本查看 复制代码
public bool MainPageLoad()
        {
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = Webroot + "?cmd=register.entrance&from=163mail",
                Method = "get",
                Cookie = this.Cookie,
                ContentType = "application/x-www-form-urlencoded",
            };
            HttpResult result = http.GetHtml(item);
            string retMsg = result.Html;
            this.Cookie = result.Cookie;
            this.Envalue = retMsg.Substring(retMsg.IndexOf("envalue") + 11, 6);
            return true;
        }


保持会话
[C#] 纯文本查看 复制代码
public bool CreateSSL()
        {
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = String.Format("https://ssl.mail.163.com/regall/unireg/prepare.jsp?sid={0}&sd={1}", this.JsessionID, this.ser_adapter),
                Method = "get",
                Cookie = this.Cookie,
                KeepAlive = true,
                ContentType = "application/x-www-form-urlencoded",
            };
            HttpResult result = http.GetHtml(item);
            string retMsg = result.Html;
            //返回5个回车
            if (retMsg == @"



")
                return true;
            return false;
        }


获取验证码
[C#] 纯文本查看 复制代码
public Image getvCode(bool type)
        {
            string env = JScript.env(this.Envalue).ToString();
            string t = JScript.getTime().ToString();
            string Url = Webroot;
            if (type)
                Url += String.Format("?cmd=register.verifyCode&v=common/verifycode/vc_en&env={0}&t={1}", env, t);
            else
                Url += String.Format("?cmd=register.verifyCode&v=common/verifycode/vc_zh&vt=grey&env={0}&t={1}", env, t);
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = Url,
                Method = "get",
                ResultType = ResultType.Byte,
                ContentType = "application/x-www-form-urlencoded",
            };
            HttpResult result = http.GetHtml(item);
            Image img = byteArrayToImage(result.ResultByte);
            return img;
        }


提交数据
[C#] 纯文本查看 复制代码
public string Submit(string password, string vcode)
        {
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = String.Format("https://ssl.mail.163.com/regall/unireg/call.do;jsessionid={0}?cmd=register.start", this.JsessionID),
                Method = "POST",
                ContentType = "application/x-www-form-urlencoded",
                Postdata = String.Format("name={0}&flow=main&uid={0}%40163.com&password={1}&confirmPassword={1}&mobile=&vcode={2}&from=163mail", this.Name, password, vcode),
            };
            HttpResult result = http.GetHtml(item);
            string retMsg = result.Html;
            return retMsg;
        }


二次验证
[C#] 纯文本查看 复制代码
public string Resume(string code)
        {
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = Webroot + "?cmd=register.resume",
                Method = "POST",
                ContentType = "application/x-www-form-urlencoded",
                Postdata = String.Format("vcode={0}&uid={1}%40163.com&suspendId={2}", ConvertToUtf8(code), this.Name, this.SuspendID),
                Cookie = this.Cookie,
            };
            HttpResult result = http.GetHtml(item);
            string retMsg = result.Html;
            return retMsg;
        }


程序下载地址

重新更正了下载地址,谢谢大家支持。

http://www.sufeinet.com/forum.php?mod=attachment&aid=MzYyMnxiYWMyNzE1YTNhMmU4OTAxOTE4MGQ0MzcwZDdlYWNmYXwxNzM1Mjc1MDE5&request=yes&_f=.rar


本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-2-3 16:45:53 | 显示全部楼层
用代理的话,注册效率会高很多
 楼主| 发表于 2014-2-2 23:35:54 | 显示全部楼层
这个主要在验证码的获取上下了好大的功夫。用js里面的东西算了个值出来,搞了2,3天,不过还好终于搞出来了。
发表于 2014-2-3 00:03:08 | 显示全部楼层
支持一下
回复

使用道具 举报

发表于 2014-2-3 00:36:24 | 显示全部楼层
强烈支持楼主ing……
发表于 2014-2-3 00:41:55 | 显示全部楼层
不错 不错!!
回复

使用道具 举报

 楼主| 发表于 2014-2-3 01:03:03 | 显示全部楼层
站长苏飞 发表于 2014-2-3 00:36
强烈支持楼主ing……

苏飞站长,我想问下,你的那个代理ip,如果是没有用户名的代理只要设置porxyip就行了吗?
还有代码用上感觉没什么延迟或者区别,怎么样才能检测到使用了代理?
发表于 2014-2-3 13:48:39 | 显示全部楼层
Firefly1992 发表于 2014-2-3 01:03
苏飞站长,我想问下,你的那个代理ip,如果是没有用户名的代理只要设置porxyip就行了吗?
还有代码用上 ...

设置代理后查询自己的IP,与代理一致,则说明应用成功了。
 楼主| 发表于 2014-2-3 15:58:21 | 显示全部楼层
cload 发表于 2014-2-3 13:48
设置代理后查询自己的IP,与代理一致,则说明应用成功了。

是设置item里面的ProxyIP啊,设置了在哪里能查到IP?怎么查?能详细点吗?
发表于 2014-2-3 21:20:46 | 显示全部楼层
Firefly1992 发表于 2014-2-3 15:58
是设置item里面的ProxyIP啊,设置了在哪里能查到IP?怎么查?能详细点吗?

请求:http://iframe.ip138.com/ic.asp
ProxyIp = "ip:port",
明白了吧?
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-27 12:50

© 2014-2021

快速回复 返回顶部 返回列表