2025年9月16日星期二

百度贴吧任务脚本(2025年9月版)

1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/DT4XYh若失效,可用地址

1.购买服务器

阿里云:

服务器购买地址

https://t.aliyun.com/U/DT4XYh

若失效,可用地址

https://www.aliyun.com/activity/wuying/dj?source=5176.29345612&userCode=49hts92d

腾讯云:

https://curl.qcloud.com/wJpWmSfU

若失效,可用地址

https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console

华为云

https://activity.huaweicloud.com/cps.html?fromacct=64b5cf7cc11b4840bb4ed2ea0b2f4468&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905

2.部署教程

2024年最新青龙面板跑脚本教程(一)持续更新中

3.代码如下

from DrissionPage import ChromiumOptions, ChromiumPageimport jsonimport osimport shutilimport timeimport requests
def read_cookie():    """读取 cookie,优先从环境变量读取"""    if "TIEBA_COOKIES" in os.environ:        return json.loads(os.environ["TIEBA_COOKIES"])    else:        print("贴吧Cookie未配置!详细请参考教程!")        return []
def get_level_exp(page):    """获取等级和经验,如果找不到返回'未知'"""    try:        level_ele = page.ele('xpath://*[@id="pagelet_aside/pagelet/my_tieba"]/div/div[1]/div[3]/div[1]/a/div[2]').text        level = level_ele if level_ele else "未知"    except:        level = "未知"    try:        exp_ele = page.ele('xpath://*[@id="pagelet_aside/pagelet/my_tieba"]/div/div[1]/div[3]/div[2]/a/div[2]/span[1]').text        exp = exp_ele if exp_ele else "未知"    except:        exp = "未知"    return level, exp
if __name__ == "__main__":    print("程序开始运行")
    # 通知信息    notice = ''

    co = ChromiumOptions().headless()    chromium_path = shutil.which("chromium-browser")    if chromium_path:        co.set_browser_path(chromium_path)
    page = ChromiumPage(co)
    url = "https://tieba.baidu.com/"    page.get(url)    page.set.cookies(read_cookie())    page.refresh()    page._wait_loaded(15)

    over = False    yeshu = 0    count = 0
    while not over:        yeshu += 1        page.get(f"https://tieba.baidu.com/i/i/forum?&pn={yeshu}")
        page._wait_loaded(15)
        for i in range(222):            element = page.ele(                f'xpath://*[@id="like_pagelet"]/div[1]/div[1]/table/tbody/tr[{i}]/td[1]/a/@href'            )            try:                tieba_url = element.attr("href")                name = element.attr("title")            except:                msg = f"全部爬取完成!本次总共签到 {count} 个吧..."                print(msg)                notice += msg + '\n\n'                page.close()                over = True                break
            page.get(tieba_url)

            page.wait.eles_loaded('xpath://*[@id="signstar_wrapper"]/a/span[1]',timeout=30)

            # 判断是否签到            is_sign_ele = page.ele('xpath://*[@id="signstar_wrapper"]/a/span[1]')            is_sign = is_sign_ele.text if is_sign_ele else ""            if is_sign.startswith("连续"):                level, exp = get_level_exp(page)                msg = f"{name}吧:已签到过!等级:{level},经验:{exp}"                print(msg)                notice += msg + '\n\n'                print("-------------------------------------------------")            else:                page.wait.eles_loaded('xpath://a[@class="j_signbtn sign_btn_bright j_cansign"]',timeout=30)                sign_ele = page.ele('xpath://a[@class="j_signbtn sign_btn_bright j_cansign"]')                if sign_ele:                    sign_ele.click()                    time.sleep(1)  # 等待签到动作完成                    sign_ele.click()                    time.sleep(1)  # 等待签到动作完成                    page.refresh()
                    page._wait_loaded(15)
                    level, exp = get_level_exp(page)                    msg = f"{name}吧:成功!等级:{level},经验:{exp}"                    print(msg)                    notice += msg + '\n\n'                    print("-------------------------------------------------")                else:                    msg = f"错误!{name}吧:找不到签到按钮,可能页面结构变了"                    print(msg)                    notice += msg + '\n\n'                    print("-------------------------------------------------")
            count += 1            page.back()            page._wait_loaded(10)
    if "SendKey" in os.environ:        api = f'https://sc.ftqq.com/{os.environ["SendKey"]}.send'        title = u"贴吧签到信息"        data = {        "text":title,        "desp":notice        }        try:            req = requests.post(api, data=data, timeout=60)            if req.status_code == 200:                print("Server酱通知发送成功")            else:                print(f"通知失败,状态码:{req.status_code}")                print(api)        except Exception as e:            print(f"通知发送异常:{e}")    else:        print("未配置Server酱服务...")

解析

该脚本为百度贴吧自动签到脚本,主要作用为:

  • 使用 DrissionPage(Chromium 无头浏览器) 搭配 贴吧 Cookie,自动批量给你关注的所有贴吧签到

  • 对每个贴吧读取是否已签等级经验,汇总成一段文本。

  • 如配置了 Server酱 SendKey,会把签到结果推送通知到你微信

主要方法

  • read_cookie()

    • 作用:读取贴吧登录 Cookie。优先从环境变量 TIEBA_COOKIES(JSON 格式)获取;未配置则给出提示并返回空列表。

    • 用途:用于后续浏览器会话注入登录态。

  • get_level_exp(page)

    • 作用:在当前贴吧页面抓取等级经验信息。

    • 实现:通过固定 XPath 定位等级与经验元素;找不到时返回"未知"。

    • 用途:签到前后用于展示账号在该吧的等级/经验。

  • __main__ 主流程(脚本整体逻辑)

    • 若设置了环境变量 SendKey,调用 Server酱 API 发送标题"贴吧签到信息"和正文 notice;否则打印"未配置 Server酱服务…"。

    • 进入每个吧主页后等待关键元素加载:

    • 无论已签/新签,都会调用 get_level_exp(page) 获取等级、经验,打印并拼接到 notice 文本。

    • 结束后返回上一页继续下一个吧。

    • #signstar_wrapper 下的状态文本(判断是否已签)。

    • 若 未签到:查找"可签到"按钮(类名 j_signbtn sign_btn_bright j_cansign),点击两次(带 1 秒间隔),再刷新页面确认。

    • 若 已签到:状态文本一般以"连续"开头("连续签到 X 天")。

    • 访问 https://tieba.baidu.com/i/i/forum?&pn={页码},逐行(第 2 行到第 21 行)解析关注吧列表的名称链接

    • 无更多数据时结束循环,并输出"本次总共签到 X 个吧"。

    • 创建 ChromiumOptions().headless() 无头模式;如果能找到本机 chromium-browser 路径则显式设置。

    • 用 ChromiumPage 打开 https://tieba.baidu.com/,写入 read_cookie() 返回的 Cookie 并刷新,确保已登录。

    1. 浏览器初始化

    2. 分页遍历关注的贴吧

    3. 逐个贴吧签到

    4. 结果通知(可选)

关键点与细节

  • 登录态:完全依赖 TIEBA_COOKIES 注入的 Cookie,未登录或过期会导致无法签到。

  • 选择器:大量使用 XPath 精确定位(签到按钮、状态文本、等级/经验元素、关注列表表格定位)。页面结构变动会导致元素找不到。

  • 等待机制

    • page._wait_loaded(15) 等待页面加载完成(最多 15 秒)。

    • page.wait.eles_loaded(..., timeout=30) 等待目标元素出现,保证点击/读取前页面已就绪。

  • 稳定性处理

    • 签到按钮点击后再次点击刷新页面,提升成功率与回显准确性。

    • 抓不到元素时会记录"可能页面结构变了"的提示。

  • 统计输出

    • count 记录已处理的吧数量;结束时输出"本次总共签到 X 个吧"。

    • 每个吧打印分隔线,便于日志阅读。

需要的环境变量

  • TIEBA_COOKIES:必需。JSON 数组格式的 Cookie(DrissionPage 可直接注入的 cookie 列表)。

  • SendKey:可选。配置后使用 Server酱推送签到汇总到微信。



注意

本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。

【相关文章】

百度贴吧任务脚本(2025年6月更新)

百度贴吧任务脚本(2025年5月更新)

百度贴吧任务脚本(2025年4月更新)

百度贴吧任务脚本


历史脚本txt文件获取>>
服务器搭建,人工服务咨询>>


没有评论:

发表评论

推荐下免费好用的指纹浏览器

对于从事跨境电商、独立站、亚马逊的用户来说,指纹浏览器工具已成为工作的日常。 对于从事跨境电商、社媒自动化营销、流量运营的用户来说,指纹浏览器工具几乎已成为基础的必要的设施。 与此同时,指纹浏览器产品的门槛也不低——部署成本、功能复杂性、指纹伪真度等问题让不少用户望而却步,特...