Python:百度贴吧实现自动化签到

早知道,还是python。

Github项目仓库在这。

相关API

签到+贴吧列表

签到分为两个接口,PC端签到一次经验+2,而移动端签到则是一次经验+6。该用哪个接口已经很明显了。不过这里还是列出PC端的签到API。

# PC端签到接口
# sign_url = "https://tieba.baidu.com/sign/add"# 移动端签到接口
# sign_url = "https://c.tieba.baidu.com/c/c/forum/sign"

贴吧列表如果是通过“爱逛的吧”去获取,很明显不全。所以我是通过爬取“关注的吧”页面来获取贴吧列表的。

https://tieba.baidu.com/i/i/forum?&pn=1
https://tieba.baidu.com/i/i/forum?&pn=2
...

 

实现思路

获取列表+发起签到请求

获取列表前,需要BDUSS+STOKEN拿到tbs。在发帖和签到的时候payload里头都会包含这个tbs,没有就发不出去,估计是用户标识符一类的东西。

tbs_url = "https://tieba.baidu.com/dc/common/tbs"
response = json.loads(requests.get(tbs_url, cookies={"BDUSS": BDUSS, "STOKEN": STOKEN}).text)
login_state = response["is_login"]
if login_state == 1:logger.debug("登录成功")
else:logger.debug(login_state)raise Exception("登录失败")
return response["tbs"], BDUSS, STOKEN

获取贴吧列表比较简单粗暴,Cookies带上BDUSS和STOKEN,再用get方法获取页面的html,再用正则表达式去拿出贴吧名和对应的贴吧链接。

<tr><td><a href="/f?kw=%C9%EE%DB%DA%BC%BC%CA%F5%B4%F3%D1%A7" title="深圳技术大学">深圳技术大学</a></td><td><a class="cur_exp" target="_blank"href="/f/like/level?kw=%C9%EE%DB%DA%BC%BC%CA%F5%B4%F3%D1%A7&lv_t=lv_nav_intro">17788</a></td><td><a style="display:block;" class="like_badge badge_lv3_1" title="13级会员" target="_blank"href="/f/like/level?kw=%C9%EE%DB%DA%BC%BC%CA%F5%B4%F3%D1%A7&lv_t=lv_nav_intro"><div class="like_badge_title">内牛满面</div><div class="like_badge_lv">13</div></a></td><td><spanonclick="ForumManager.undo_like(this.getAttribute('balvid'), this.getAttribute('balvname'), this.getAttribute('tbs'))"balvid="23311541" balvname="%C9%EE%DB%DA%BC%BC%CA%F5%B4%F3%D1%A7" tbs="a527b042d6559d351726813316"><imgclass="pt" src='//tb1.bdstatic.com/tb/static-member/img/close.gif' /></span></td>
</tr>

不过用PC端的“关注的吧”接口除了bduss之外,还必须得带上stoken才能拿到数据。拿到的贴吧列表存不存到本地,看个人需求。我是选择全部存到本地json。

# 从百度贴吧获取关注的贴吧列表
# 结果保存到tieba_dict.json文件中
def get_tieba_dict():tieba_dict = {}_, BDUSS, STOKEN = get_cookies()Cookies = {"BDUSS": BDUSS,"STOKEN": STOKEN,}page = 1tieba_sum = 0while True:mylike_url = "https://tieba.baidu.com/f/like/mylike?&pn=" + str(page)try:response = requests.get(mylike_url, cookies=Cookies)except Exception as e:raise Exception("请求失败:" + str(e))data = extract_data(response.text)if data == []:breakfor i in data:tieba_name = re.search(r"<a.*?>(.*?)</a>", i).group(1)tieba_url = prefix + re.search(r"href=\"(.*?)\"", i).group(1)if tieba_name is not None:tieba_sum += 1tieba_dict[tieba_name] = tieba_urlpage += 1with open("tieba_dict.json", "w", encoding="utf-8") as f:json.dump(tieba_dict, f, ensure_ascii=False)

发起签到请求分为两部分,payload需要带上贴吧名和tbs标识。如果用的移动端签到接口还需要带上它们md5加密后的十六进制结果。我调这接口的时候一直报“未知错误”,后面参考了其他repo才发现要带上这么个参数。

sign_str = f"kw={tieba_name}tbs={tbs}tiebaclient!!!"
sign = hashlib.md5(sign_str.encode("utf-8")).hexdigest()
payload = {"kw": tieba_name,"tbs": tbs,"sign": sign,
}

Cookies只需要bduss,stoken只有在获取贴吧列表时才用得到。

Cookies = {"BDUSS": BDUSS,
}
resp = requests.post(sign_url,cookies=Cookies,data=payload,
)

如果签到成功,返回的json会包含user_info。失败的话直接就是error_code,可以在这做个校验。比如GTA5吧,女权吧这种被关闭的吧,如果直接调接口签到,就会在这报错。

    if "user_info" in resp.json():logger.debug("签到成功:" + tieba_name + "吧")return Trueelif resp.json()["error_code"] == "160002":# 已签到logger.error("签到失败:" + tieba_name + "吧" + " 失败原因:" + resp.json()["error_msg"])else:logger.error("签到失败:" + tieba_name + "吧")logger.debug(str(resp.json()))logger.error("失败原因:" + resp.json()["error_msg"]

目前不知道签到过快会怎么样,总之我加了1~5秒的随机。貌似PC端才会检测签到过快,有时候我一个小时内连续签到98个贴吧就会触发机制,导致当天内的其他在PC端上签到,都需要带上captcha验证码。移动端签到不受影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/433476.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS理论与实践学习笔记——2 ROS通信机制之通信机制实践

5.1 话题发布 需求描述&#xff1a;编码实现乌龟运动控制&#xff0c;让小乌龟做圆周运动。 实现分析&#xff1a; ①乌龟运动控制实现&#xff0c;关键节点有两个&#xff0c;一个是乌龟运动显示节点 turtlesim_node&#xff0c;另一个是控制节点&#xff0c;二者是订阅发布模…

用Swift实现验证回文字符串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xff0c;如果它是 回文串 &#xff0c;返回 true &#xff1b;否则&#…

AI创作类工具系列之:芝士AI(paperzz)详细测评介绍

学生们&#xff01;又到了写论文的时候~以前以为大家的论文都是一个字一个字敲出来&#xff0c;然后反复修改&#xff0c;熬着大夜改论文。 后来才知道原来大家都会利用工具辅助自己写论文啊&#xff01;今天我就告诉大家一款非常好用的AI写作网站&#xff0c;节省时间&#xf…

代码随想录冲冲冲 Day58 图论Part9

47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; 根据昨天的dijkstra进行堆优化 使用的原因是点多但边少 所以直接对于边进行操作 1.对于priority_queue来说 这是最小堆, 小于的话就是最大堆 之后由于是根据边来说的 所以新建一个Edge并且初始化一下 之后由于使用…

The Open Group 2024生态系统架构·可持续发展年度大会全面解读

在全球数字化转型加速的时代背景下&#xff0c;人工智能技术正以前所未有的速度重塑各行各业的生态系统。尤其是随着ChatGPT、Sora等技术的爆发&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;技术在多个领域展现出超越人类的能力&#xff0c;AGI&#xff08;通用人…

C语言-线程

一,线程的概念 1,线程的定义 在 C 语言中&#xff0c;线程是程序执行的最小单位&#xff0c;它是进程中的一个实体&#xff0c;是被系统独立调度和分派的基本单位。 2、线程的特点 轻型实体&#xff1a;线程是一个轻型实体&#xff0c;它只拥有必不可少的资源&#xff0c;如程…

Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架。它是 Spring 项目家族的一员,用于构建安全的 Java 应用程序。

Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架。它是 Spring 项目家族的一员&#xff0c;用于构建安全的 Java 应用程序。Spring Security 提供了全面的安全服务&#xff0c;从基本的登录认证到复杂的访问控制&#xff0c;几乎涵盖了所有与安全相关的需求…

Paxos 协议详解:分布式系统一致性的基石

文章目录 1. 分布式系统与一致性问题1.1 分布式系统的定义1.2 一致性问题的起源1.3 CAP 定理及其影响1.4 分布式系统中的失败假设 2. Paxos 协议的背景与介绍2.1 Paxos 协议是什么2.3 Paxos 解决什么问题 3. Paxos 的基本原理3.1 Paxos 角色3.2 Paxos 的多数原则3.3 Paxos 协议…

音视频入门基础:FLV专题(1)——FLV官方文档下载

一、FLV简介 Flash Video&#xff08;简称FLV&#xff09;&#xff0c;是一种网络视频格式&#xff0c;用作流媒体格式&#xff0c;它的出现有效地解决了视频文件导入Flash后&#xff0c;使导出的SWF文件体积庞大&#xff0c;不能在网络上有效使用等缺点。 一般FLV文件包在SW…

js删除emoji表情问题

emoji标签占位两个 &#xff0c;直接删除后一位会出现乱码符&#xff1b; 判断是否是emoji function isEmoji(char) {let code char.charCodeAt(0);return code>55296&&code<57343 } // 使用方法&#xff0c;传入单字符 console.log(isEmoji(1)); // false con…

手把手教你找到海外网红合作:海外红人营销渠道

在全球范围内&#xff0c;许多企业寻求与知名网红建立合作关系&#xff0c;以推广产品、共同创作内容或探索其他合作形式。以下是一些有效的方法来实现这一目标&#xff1a; 利用社交媒体平台&#xff1a;社交媒体是寻找海外网红的首选途径。平台如Instagram、YouTube和TikTok拥…

2025届 深圳 嵌入式岗 秋招上岸记录

文章目录 1 背景2 准备阶段2.1 前期2.1.1 掌握的技术栈2.1.2 项目经历2.1.3 比赛&奖学金经历 2.2 中期2.2.1 简历准备2.2.2 个人信息准备2.2.3 企业以及岗位信息的收集2.2.4 个人资料的准备 2.3 简历投递2.3.1 网申2.3.2 招聘会现场投递 3. 简历投递后3.1 测评3.2 笔试3.3 …

基于quill2.0的富文本编辑器,Fluent Editor,支持表格,图片,表情等

官网&#xff1a;Fluent Editor | 基于 Quill 2.0 的富文本编辑器 安装 npm i opentiny/fluent-editor quill 使用案例 <template><div class"publish-form-container"><!-- TODO --><div ref"quillEditorRef" class"quill…

【LLM多模态】视频理解模型Cogvlm-video和MVBench评测基准

note Cogvlm-video模型通过视频抽帧&#xff08;24帧&#xff0c;每帧大小为224 x 224&#xff09;后经过ViT进行图像编码&#xff08;ViT中添加了2x2的卷积核更好的压缩视觉信息&#xff09;&#xff0c;使用adapter模块更好的将视觉特征和文本特征对齐&#xff0c;得到的图像…

ElasticSearch分页查询性能及封装实现

Es的分页方式 fromsize 最基本的分页方式&#xff0c;类似于SQL中的Limit语法&#xff1a; //查询年龄在12到32之间的前15条数据 {"query":{"bool":{"must":{"range":{"user_age":{"gte":12,"lte":3…

基于飞腾平台的OpenCV的编译与安装

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力&#xff0c;聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域&#xff0c;包含了应用使能套件、软件仓库、软件支持、软件适…

量化交易backtrader实践(三)_指标与策略篇(1)_指标简介与手工双均线策略

01_指标 指标是一个汉语词语&#xff0c;读音是zhǐ biāo&#xff0c;意思是衡量目标的参数&#xff1b;预期中打算达到的指数、规格、标准&#xff0c;一般用数据表示。 统计学术语 指标是说明总体数量特征的概念及其数值的综合&#xff0c;故又称为综合指标。在实际的统计…

YOLOv7改进之MAE主干: 超强ConvNeXtV2 升级版结构,当MAE+YOLO卷积高效涨点

目录 1,原理概述 2,代码改进 新增一个convnextv2.py文件,增加以下代码 修改部分 第二步:在yolo.py中加入以下代码 然后在 在yolo.py中配置找到./models/yolo.py文件下里的parse_model函数,将类名加入进去 参考代码 YOLOv7网络配置文件 1,原理概述 原文:https://…

openinstall鸿蒙SDK再升级,功能全面支持HarmonyOS NEXT

万众期待的鸿蒙操作系统HarmonyOS NEXT即将发布&#xff0c;国产自主的全场景智能操作系统诞生&#xff0c;将为生态伙伴共创共享创造新蓝海&#xff0c;鸿蒙生态的加速构建&#xff0c;也有望催生出互联网生态的第三极。 作为首批鸿蒙生态伙伴&#xff0c;openinstall在App渠…

这些主流的财务管理软件,你用过哪款?

在当今的商业环境中&#xff0c;财务管理面临着诸多棘手的痛点问题&#xff1a; 数据的准确性与及时性难以保证&#xff0c;手工录入易出错且数据更新常不及时&#xff1b; 预算管理困难重重&#xff0c;编制不合理且执行监控难&#xff1b; 财务风险管控不足&#xff0c;应…