思路:微信后台可以对指定用户进行回复,群发其实就是一个loop,so 模拟POST提交到微信 后台, 模拟登陆,即可突破群发每日一条限制。

直接上代码

/**@author 菠菜君*@Version 0.1*@time 2013-10-30*@go语言实现模拟登陆微信公众平台,突破微信群发每日一条限制*@青岛程序员 微信订阅号 qdprogrammer*@Golang 微信订阅号 gostock*@关于青岛程序员的技术,创业,生活 分享。*@开源 https://github.com/philsong/*/
package mainimport ("crypto/md5""encoding/hex""encoding/json""fmt""io""io/ioutil""log""net/http""net/url""regexp""strings"
)type WebWeChat struct {token   stringcookies []*http.Cookie
}func NewWebWeChat() *WebWeChat {w := new(WebWeChat)return w
}func (w *WebWeChat) login() bool {login_url := "https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN"email := "songbohr@163.com"password := "xxx"h := md5.New()h.Write([]byte(password))password = hex.EncodeToString(h.Sum(nil))fmt.Println(password)post_arg := url.Values{"username": {email}, "pwd": {password}, "imgcode": {""}, "f": {"json"}}fmt.Println(strings.NewReader(post_arg.Encode()))req, err := http.NewRequest("POST", login_url, strings.NewReader(post_arg.Encode()))req.Header.Set("Referer", "https://mp.weixin.qq.com/")if err != nil {log.Fatal(err)}client := new(http.Client)resp, _ := client.Do(req)data, _ := ioutil.ReadAll(resp.Body)s := string(data)fmt.Printf("%s", s)doc := json.NewDecoder(strings.NewReader(s))type Msg struct {Ret                     intErrMsg                  stringShowVerifyCode, ErrCode int}var m Msgif err := doc.Decode(&m); err == io.EOF {fmt.Println(err)} else if err != nil {log.Println(err)return false}fmt.Println(m)if m.ErrCode == 0 || m.ErrCode == 65201 || m.ErrCode == 65202 {w.token = strings.Split(m.ErrMsg, "=")[3]fmt.Printf("token:%v\n", w.token)w.cookies = resp.Cookies()fmt.Println(w.cookies)return true}switch m.ErrCode {case -1:fmt.Println("系统错误,请稍候再试。")case -2:fmt.Println("帐号或密码错误。")case -3:fmt.Println("您输入的帐号或者密码不正确,请重新输入。")case -4:fmt.Println("不存在该帐户。")case -5:fmt.Println("您目前处于访问受限状态。")case -6:fmt.Println("请输入图中的验证码")case -7:fmt.Println("此帐号已绑定私人微信号,不可用于公众平台登录。")case -8:fmt.Println("邮箱已存在。")case -32:fmt.Println("您输入的验证码不正确,请重新输入。")case -200:fmt.Println("因频繁提交虚假资料,该帐号被拒绝登录。")case -94:fmt.Println("请使用邮箱登陆。")case 10:fmt.Println("该公众会议号已经过期,无法再登录使用。")case -100:fmt.Println("海外帐号请在公众平台海外版登录,<a href=\"http://admin.wechat.com/\">点击登录</a>")default:fmt.Println("未知的返回。")}return false
}func (w *WebWeChat) SendTextMsg(fakeid string, content string) bool {send_url := "http://mp.weixin.qq.com/cgi-bin/singlesend"referer_url := "https://mp.weixin.qq.com/cgi-bin/singlesendpage?t=message/send&action=index&tofakeid=%s&token=%s&lang=zh_CN"post_arg := url.Values{"tofakeid": {fakeid},"type":     {"1"},"content":  {content},"ajax":     {"1"},"token":    {w.token},"t":        {"ajax-response"},}req, _ := http.NewRequest("POST", send_url, strings.NewReader(post_arg.Encode()))req.Header.Set("Referer", fmt.Sprintf(referer_url, fakeid, w.token))for i := range w.cookies {req.AddCookie(w.cookies[i])}client := new(http.Client)resp, _ := client.Do(req)data, _ := ioutil.ReadAll(resp.Body)doc := json.NewDecoder(strings.NewReader(string(data)))type Msg struct {Ret stringMsg string}var m Msgif err := doc.Decode(&m); err == io.EOF {fmt.Println(err)} else if err != nil {log.Fatal(err)}fmt.Println(m.Msg)if m.Msg == "ok" {return true}return false
}func (w *WebWeChat) GetFakeId() bool {msg_url := "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=10&pageidx=0&type=0&groupid=0&token=%s&lang=zh_CN"referer_url := "https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=%s"req, _ := http.NewRequest("GET", fmt.Sprintf(msg_url, w.token), nil)req.Header.Set("Referer", fmt.Sprintf(referer_url, w.token))for i := range w.cookies {req.AddCookie(w.cookies[i])}client := new(http.Client)resp, _ := client.Do(req)data, _ := ioutil.ReadAll(resp.Body)//fmt.Println(string(data))fmt.Println(string(data))re := regexp.MustCompile(`(?s)(?U)contacts.+contacts`)list := re.FindString(string(data))list = strings.Replace(list, `contacts`, "", -1)list = strings.Replace(list, `contacts`, "", -1)list = strings.Replace(list, ` `, " ", -1)fmt.Println(list)list = strings.TrimLeft(list, "\":")list = strings.TrimRight(list, "}).")fmt.Println(list)return true
}func main() {wechat := NewWebWeChat()if wechat.login() == true {log.Println(wechat.GetFakeId())tofakeid := "333215495" //my fakeid for testwechat.SendTextMsg(tofakeid, "Hello Phil.")} else {fmt.Println("wechat login failed.")}
}

golang 模拟登陆微信公众平台,突破微信群发每日一条限制相关推荐

  1. 微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试

    微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试 技术qq交流群:JavaDream ...

  2. 百度云搭建微信公众平台服务器,微信大众开放平台开发03-百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试...

    微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试 微信公众开放平台开发03---百度 ...

  3. 微信公众平台与微信开放平台的区别、服务号、订阅号、企业微信的区别

    微信公众平台 vs 微信开放平台 微信公众平台是介绍公众号相关的内容,比如服务号.订阅号.企业微信,所以叫微信公众平台:公众平台也是公众号的管理端,可以编辑推送文章,通常是公众号的运营.开发登录: 微 ...

  4. 微信公众平台、微信公众平台.小程序、微信.开放平台三者关系及unionid

    以下内容,仅限于根据自己开发以及阅读微信文档总结,错误之处敬请指出,共同进步! 一.微信公众平台.微信公众平台.小程序.微信.开放平台登录地址 项目 微信公众平台 微信公众平台.小程序 微信.开放平台 ...

  5. 微信公众平台推出微信保护提升微信账号安全 附微信保护开启教程

    前两天小美女的微信公众平台要群发消息时提示需要绑定手机才能操作,当时还以为是动态ip的问题,今天微信公众平台安全中心就说升级了,原来那时已经在公测了.微信公众平台推出"微信保护", ...

  6. 微信公众平台—— 获取微信服务器IP地址

    微信公众平台-- 获取微信服务器IP地址 const ServerIpUrl = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?&acces ...

  7. 【微信公众平台】微信营销推广的12种方法,让您的订单增加两倍以上!

    如何做好 微信营销是中小企业转型之后遇到最头疼的问题,注册了微信公众平台之后该怎么把自己推销出去呢,三帮网络给你提供微信营销的12种方法. 微信营销是今年新兴电子商务网络推广营销手段,微信推广方案有哪 ...

  8. 微信公众平台开发--微信网页授权

    在微信公众号开发中实现微信用户自动登陆第三方的功能: 条件: 1.公众号必须为微信认证服务号: 2.在公众号接口权限->网页账号 网页授权获取用户基本信息 修改需要OAuth2.0鉴权的域名: ...

  9. 微信公众平台开发 高级群发接口

    在这篇微信公众平台高级接口开发教程中,我们将介绍如何使用接口实现微信公众平台群发功能.本文分为以下四个部分:准备群发内容选择群发对象执行群发接收群发结果一.准备群发内容群发内容可以是文本.图片.语音. ...

  10. 微信公众平台开发 微信JSSDK开发

    根据微信开发文档步骤如下: 1.先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". JS接口安全域名设置 mi. ...

最新文章

  1. php spl的优势,PHP SPL核心库相对以前有什么好处嘛?
  2. MS Reporting Services 报表开发
  3. python——字符串常用方法
  4. 自动生成三层结构代码(3)--生成数据访问层Insert方法
  5. 自然语言项目之Python语种检测代码实现
  6. Java基础学习总结(63)——Java集合总结
  7. 自动完成文本框AutoCompleteTextView
  8. 计算机是怎样跑起来的
  9. 【笔记+总结】Andrew Ng-神经网络和深度学习
  10. CRA图像 Clean Random Access (CRA) Pictures
  11. 抓住七月的尾巴,出门放松一下
  12. php如何pfx转成jks证书,常规方法不行,变相来实现
  13. 三维开发及三维地形和地理信息系统的集成探索
  14. 订单管理html页面,订单管理.html
  15. str中的join方法,fromkeys(),set集合,深浅拷贝(重点)
  16. 模块化 AMD与CMD 规范
  17. 【转载】不用加号和减号计算两个数的加法
  18. EAN13条形码了解,有c测试代码
  19. Mysql数据库insert报慢查询
  20. 医学图像的一些预处理知识

热门文章

  1. 匈牙利算法的粗略解释
  2. 物流配货平台Hybrid APP效果图
  3. 由sudo -u nobody 开始--todo
  4. 计算机扫描的文件保存在哪,电脑教程:文件扫描后自动保存哪里去了
  5. 通熟理解urL和urI的区别
  6. 记录一下开发选择文本朗读的安卓App的过程
  7. python decimal_连载|想用Python做自动化测试?了解数值计算和随机数生成神器
  8. 图解TCP/IP——第三四章笔记
  9. 麦肯锡工作法-读书心得
  10. 腾讯游戏盒子当中的游戏医生功能分析