和APP签到经验一样
和APP签到经验一样
和APP签到经验一样
重要的事情说三遍。

如果不合规我会删除该文章。

其中使用了gomod进行了导入包的版本管理,熟悉go语言的朋友知道怎么用,不熟悉怎么使用的可以留言我会解答。
全部代码下载链接: Go语言贴吧自动签到代码资源

话不多说,直接上main代码。

package mainimport ("bytes""crypto/md5""encoding/hex""encoding/json""fmt""io/ioutil""net/http""strings""time""os""path""flag"rotatelogs "github.com/lestrrat/go-file-rotatelogs""github.com/pkg/errors""github.com/rifflock/lfshook""github.com/sirupsen/logrus"
)var likedTiebaUrl = "https://tieba.baidu.com/mo/q/newmoindex"
var tbsUrl = "http://tieba.baidu.com/dc/common/tbs"
var signUrl = "http://c.tieba.baidu.com/c/c/forum/sign"var BDUSS = ""
var cookies = "BDUSS=" + BDUSStype TBSResult struct {Tbs     string `json:"tbs"`IsLogin int    `json:"is_login"`Error   error
}type ForumInfo struct {ForumName string `json:"forum_name"`UserLevel string `json:"user_level"`UserExp   string `json:"user_exp"`ForumId   int64  `json:"forum_id"`IsLike    bool   `json:"is_like"`FavoType  int64  `json:"favo_type"`IsSign    int64  `json:"is_sign"`
}
type LikedBarsData struct {Uid       int64       `json:"uid"`Tbs       string      `json:"tbs"`ItbTbs    string      `json:"itb_tbs"`LikeForum []ForumInfo `json:"like_forum"`
}type LIKEDBars struct {No              int64  `json:"no"`Error           string `json:"error"`Error2          errorData            LikedBarsData `json:"data"`UbsSampleIds    string        `json:"ubs_sample_ids"`UbsAbtestConfig interface{}   `json:"ubs_abtest_config"`
}type SignResult struct {ErrorCode  string `json:"error_code"`ErrorMsg   string `json:"error_msg"`Info       interface{}Time       time.Duration `json:"time"`CTime      int           `json:"ctime"`LogId      int           `json:"logid"`ServerTime int           `json:"server_time"`
}func ConfigLocalFileSystemLogger(logPath string, logFileName string, maxAge time.Duration, rotationTime time.Duration) {baseLogPath := path.Join(logPath, logFileName)fmt.Println("baseLogPath:", baseLogPath)writer, err := rotatelogs.New(baseLogPath+".%Y%m%d%H%M",rotatelogs.WithLinkName(baseLogPath),rotatelogs.WithMaxAge(maxAge),rotatelogs.WithRotationTime(rotationTime))if err != nil {fmt.Println("config local file system logger error, detail err:", errors.WithStack(err))}lfHook := lfshook.NewHook(lfshook.WriterMap{logrus.DebugLevel: writer,logrus.InfoLevel:  writer,logrus.WarnLevel:  writer,logrus.ErrorLevel: writer,logrus.FatalLevel: writer,logrus.PanicLevel: writer}, &logrus.TextFormatter{})logrus.AddHook(lfHook)
}var bduss = flag.String("bduss", "", "通过英文;隔开多个BDUSS")func main() {flag.Parse()absDir, err := os.Getwd()if err != nil {fmt.Println("获取程序工作目录失败,错误描述:" + err.Error())return}logDir := absDir + "/logs"err = os.MkdirAll(logDir, 0777)if err != nil {fmt.Println("创建目录:", logDir, "失败")return}ConfigLocalFileSystemLogger("./logs", "log.log", 30*24*time.Hour, 24*time.Hour)if *bduss == "" {//get tbstbsResult := GetTbs()if tbsResult.Error != nil {logrus.Errorf("获取TBS错误:%v", tbsResult.Error)return}//get all liked barslikeBars := GetAllBars()if likeBars.Error2 != nil {logrus.Errorf("获取关注的吧错误:%v", likeBars.Error2)return}logrus.Infof("总关注数量:%d", len(likeBars.Data.LikeForum))//签到TieBaSign(tbsResult, likeBars)} else {bdussArr := strings.Split(*bduss, ";")for item := range bdussArr {if bdussArr[item] == "" {continue}cookies = "BDUSS=" + bdussArr[item]//get tbstbsResult := GetTbs()if tbsResult.Error != nil {logrus.Errorf("获取TBS错误:%v", tbsResult.Error)continue}//get all liked barslikeBars := GetAllBars()if likeBars.Error2 != nil {logrus.Errorf("获取关注的吧错误:%v", likeBars.Error2)continue}logrus.Infof("总关注数量:%d", len(likeBars.Data.LikeForum))//签到TieBaSign(tbsResult, likeBars)}}
}func MD5Calc(arg string) string {ret := md5.New()ret.Write([]byte(arg))return hex.EncodeToString(ret.Sum(nil))
}func GetTbs() TBSResult {client := &http.Client{Timeout: 5 * time.Second}var tbsResult TBSResultreq, err := http.NewRequest("GET", tbsUrl, nil)if err != nil {logrus.Errorf("创建tbs请求错误:%v", err)tbsResult.Error = errreturn tbsResult}req.Header.Add("Cookie", cookies)resp, err := client.Do(req)if err != nil {logrus.Errorf("请求tbs错误:%v", err)tbsResult.Error = errreturn tbsResult}defer resp.Body.Close()bts, err := ioutil.ReadAll(resp.Body)if err != nil {logrus.Errorf("解析tbs请求结果错误:%v", err)tbsResult.Error = errreturn tbsResult}err = json.Unmarshal(bts, &tbsResult)if err != nil {logrus.Errorf("json结构化tbs请求结果错误:%v", err)tbsResult.Error = errreturn tbsResult}return tbsResult
}func GetAllBars() LIKEDBars {var likeBars LIKEDBarsclient := &http.Client{Timeout: 5 * time.Second}req, err := http.NewRequest("GET", likedTiebaUrl, nil)if err != nil {logrus.Errorf("创建关注的吧请求错误:%v", err)likeBars.Error2 = errreturn likeBars}req.Header.Add("Cookie", cookies)resp, err := client.Do(req)if err != nil {logrus.Errorf("请求关注的吧错误:%v", err)likeBars.Error2 = errreturn likeBars}defer resp.Body.Close()bts, err := ioutil.ReadAll(resp.Body)if err != nil {logrus.Errorf("解析关注的吧请求结果错误:%v", err)likeBars.Error2 = errreturn likeBars}//fmt.Println("liked bars:", string(bts))err = json.Unmarshal(bts, &likeBars)if err != nil {logrus.Errorf("json结构化关注的吧请求结果错误:%v", err)likeBars.Error2 = errreturn likeBars}return likeBars
}func TieBaSign(tbsResult TBSResult, likeBars LIKEDBars) {var i = 0var signedCnt = 0var signSuccessCnt = 0var otherSignCnt = 0client := &http.Client{Timeout: 5 * time.Second}for i < len(likeBars.Data.LikeForum) {forumName := likeBars.Data.LikeForum[i].ForumNames := strings.Replace(forumName, "+", "%2B", -1)if likeBars.Data.LikeForum[i].IsSign == 1 {fmt.Println("贴吧:" + s + "已经签过了")i = i + 1signedCnt += 1continue}fmt.Println("准备签到:", forumName)rotation := strings.Replace(s, "%2B", "+", -1)body := "kw=" + s + "&tbs=" + tbsResult.Tbs + "&sign=" + MD5Calc("kw="+rotation+"tbs="+tbsResult.Tbs+"tiebaclient!!!")b := bytes.NewBuffer([]byte(body))req, err := http.NewRequest("POST", signUrl, b)req.Header.Add("Cookie", cookies)resp, err := client.Do(req)if err != nil {fmt.Println(err)return}defer resp.Body.Close()bts, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Println(err)return}//fmt.Println("sign Result:", string(bts))var signResult SignResulterr = json.Unmarshal(bts, &signResult)if err != nil {fmt.Println("签到结果解析失败:", err)break}logrus.Infof("贴吧:%s 签到结果:%s 签到错误码:%s", forumName, signResult.ErrorMsg, signResult.ErrorCode)time.Sleep(5 * time.Second)if signResult.ErrorCode == "160002" {//亲,你之前已经签过了}if signResult.ErrorCode == "0" {fmt.Println("签到:" + s + " 成功")signSuccessCnt += 1} else {otherSignCnt += 1logrus.Warnf("有问题的贴吧:%s", forumName)}if signResult.ErrorCode == "340006" {//贴吧目录出问题啦,请到贴吧签到吧反馈}if signResult.ErrorCode == "110001" {//未对贴吧名字中的+号进行转义}i += 1}logrus.Infof("总关注数量:%d  已经签到个数:%d 成功签到个数:%d 未签到成功数量:%d", len(likeBars.Data.LikeForum), signedCnt, signSuccessCnt, otherSignCnt)
}

Go语言贴吧自动签到相关推荐

  1. 图文解释Glados自动签到免费获取天数(腾讯云函数serverless版)

    我在上一篇文章中介绍了如何使用github action来实现glados的自动签到的方法,但对github不太熟悉的同学来说步骤有点多,而且全是英文看起来费劲.接下来我又捣鼓了一下使用腾讯云函数的做 ...

  2. 从零做一个Chrome插件实现起点中文网自动签到

    这是我参与更文挑战的第1天,活动详情查看: 更文挑战 最近一直在起点中文网上看小说,忽然发现官方竟然卖自动签到卡,五块钱一个月!身为一个程序猿,怎么能花这些冤枉钱! 于是开始了写一个脚本的念头. 第一 ...

  3. 天翼云盘每天自动签到抽奖领空间 每月至少扩容3G+

    原创文|Space9 背景 天翼云盘官方活动,每天签到和抽奖会获得100多MB云盘空间,每月即可获得3GB多空间.(此活动在最新版手机客户端可见)我们可以通过以下教程来完成每天自动签到和抽奖,增加生产 ...

  4. B站每日自动签到传统单节点网站的 Serverless 上云

    什么是函数?刚刚考完数学没多久的我,脑力里立马想到的是自变量.因变量.函数值,也就是y=f(x).当然,在计算机里,函数function往往指的是一段被定义好的代码程序,我们可以通过传参调用这个定义好 ...

  5. 写一个京东自动签到代码

    对不起,我是一个语言模型,不能直接写代码.但是我可以提供一些指导. 如果您想写一个京东自动签到代码,您可以使用爬虫技术来实现.您可以使用 Python 语言,并使用第三方库如 BeautifulSou ...

  6. python积分管理系统_python实现每天自动签到领积分的示例代码

    自动签到的python脚本源码 新建一个python文件,checkin.py,保存到电脑上某个位置,我这里保存到的是E:\pyproject\checkin.py # 引入3个包 from sele ...

  7. 安卓setclicklistener函数没有_金主脚本按键精灵安卓按键初体验—乱斗西游2自动签到...

    按键精灵安卓按键初体验-乱斗西游2自动签到 金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓 ...

  8. python脚本实例手机端-手机APP自动签到-python实现 - 运维之路

    当今是移动APP的天下,很多APP软件为了吸引客户每天登录使用,设置的有每天签到送一些奖励的活动.这里以一个挺火的网络电话软件呼应(每天签到送长)为例,通过python 实现自动签到. 一.Fiddl ...

  9. python论坛签到_论坛自动签到教程

    为了方便且于是自己搭建了一个论坛, bbs.lanol.cn 其他论坛也都是一个原理 方法很简单 大致流程: 1,抓取签到的那个包,这一步直接使用浏览器操作即可. 2,用Python模拟发包,达到签到 ...

最新文章

  1. 让seo效果起死回生的妙招
  2. java 如何开启一个线程_Java-开启一个新的线程
  3. 自己写分布式配置中心(上篇)- 单机模式
  4. Ubuntu18.04 显卡驱动安装
  5. mariadb mysql 语法_Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍
  6. Redis面试 - redis 的并发竞争问题是什么?
  7. 高精度人脸表情识别(附GitHub地址)
  8. 在redis取数据若存在直接取,不存在在db中取,并放到缓存中
  9. Oracle性能优化3-sql优化一定要等价
  10. H5常用代码:适配方案5
  11. 计算机网络的简单概述以及在浏览器中输入一个网址后如何执行
  12. 网络攻防实验(连更)
  13. python不用模块随机列表_python不用库实现随机 如何用python实现随机抽取
  14. vue开发移动端app-学习记录
  15. “拖延症”的良方-对于追求完美,自制力差,情绪化的人很受用
  16. Unity-Some objects were not cleaned up when closing the scene.
  17. [技术讨论]网络软件开发的bug分析与公司开发管理问题之阿里篇
  18. 微信小程序开发中,图片报403问题(图片加载失败)解决办法
  19. “职”等你来!阿里云2020年专场招聘来了
  20. pt1000和pt100_全面的8pt网格指南

热门文章

  1. 【UE】简易的水材质
  2. 8x8LED点阵显示数字和汉字
  3. python包和模块关系_Python包和模块的分发详细介绍
  4. HTB-Templated
  5. 内网渗透、三层拓扑、红队考核靶场(ack123)
  6. GPS芯片获取的卫星时间会出现快几秒的原因
  7. notepad++安装包
  8. [leetCode]327. 区间和的个数
  9. 自己动手做聊天机器人 三-语料与词汇资源
  10. 单品购买商城源码/单个商品详情页购买源码下载