贴吧助手web版

 找回密码
 
搜索
查看: 138|回复: 0

2021.7百度贴吧签到脚本V2[云函数&模拟客户端]

[复制链接]
     紫钻仅向指定用户开放  
  • TA的每日心情
    吃惊
    前天 11:22
  • 签到天数: 1229 天

    [LV.10]以坛为家III

    725

    主题

    1646

    帖子

    1645

    积分

    管理员

    Rank: 15Rank: 15Rank: 15Rank: 15

    金币
    4037

    接口达人工具作者土豪之星

    发表于 2021-7-19 10:18:29 | 显示全部楼层 |阅读模式
    如题,最近闲着没事,研究出了模拟客户端签到的脚本。
    感谢@lwwy1981 提供的PHP签到样本。

    使用

    1. from requests import session
    2. from hashlib import md5
    3. from random import random
    4. from time import sleep
    5. class Tieba():
    6. def __init__(self, BDUSS, STOKEN):
    7.     self.BDUSS = BDUSS
    8.     self.STOKEN = STOKEN
    9.     self.count = [0, 0, 0] # 签到成功, 已经签到, 总
    10.     self.session = session()
    11.     self.session.headers.update(
    12.         {'Accept': 'text/html, */*; q=0.01',
    13.         'Accept-Encoding': 'gzip, deflate',
    14.         'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
    15.         'Connection': 'keep-alive',
    16.         'Host': 'tieba.baidu.com',
    17.         'Referer': 'http://tieba.baidu.com/i/i/forum',
    18.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
    19.         'Chrome/71.0.3578.98 Safari/537.36',
    20.         'X-Requested-With': 'XMLHttpRequest'}
    21.     )
    22. def set_cookie(self):
    23.     self.session.cookies.update({'BDUSS': self.BDUSS, 'STOKEN': self.STOKEN})
    24. def fetch_tbs(self):
    25.     r = self.session.get('http://tieba.baidu.com/dc/common/tbs').json()
    26.     if r['is_login'] == 1: self.tbs = r['tbs']
    27.     else: raise Exception('获取tbs错误!以下为返回数据:' + str(r))
    28. def fetch_likes(self):
    29.     self.rest = set()
    30.     self.already = set()
    31.     r = self.session.get('https://tieba.baidu.com/mo/q/newmoindex?').json()
    32.     if r['no'] == 0:
    33.         for forum in r['data']['like_forum']:
    34.             self.count[2] += 1
    35.             if forum['is_sign'] == 1:
    36.                 self.already.add(forum['forum_name'])
    37.             else:
    38.                 self.rest.add(forum['forum_name'])
    39.     else: raise Exception('获取关注贴吧错误!以下为返回数据:' + str(r))
    40. def sign(self, forum_name):
    41.     data = {
    42.         'kw': forum_name,
    43.         'tbs': self.tbs,
    44.         'sign': md5(f'kw={forum_name}tbs={self.tbs}tiebaclient!!!'.encode('utf8')).hexdigest()
    45.     }
    46.     r = self.session.post('http://c.tieba.baidu.com/c/c/forum/sign', data).json()
    47.     if r['error_code'] == '160002':
    48.         print(f'"{forum_name}"已签到!')
    49.         self.count[1] += 1
    50.         return True
    51.     elif r['error_code'] == '0':
    52.         print(f'"{forum_name}"签到成功,您是第{r["user_info"]["user_sign_rank"]}个签到的用户!') # Modify!
    53.         self.count[0] += 1
    54.         return True
    55.     else:
    56.         print(f'"{forum_name}"签到失败!以下为返回数据:{str(r)}')
    57.         return False
    58. def loop(self, n):
    59.     print(f'* 开始第{n}轮签到 *')
    60.     rest = set()
    61.     self.fetch_tbs()
    62.     for forum_name in self.rest:
    63.         sleep(random() * 3)
    64.         flag = self.sign(forum_name)
    65.         if not flag: rest.add(forum_name)
    66.     self.rest = rest
    67. def main(self, max):
    68.     self.set_cookie()
    69.     self.fetch_likes()
    70.     n = 0
    71.     if self.already:
    72.         print('* 已经签到的贴吧 *')
    73.         for forum_name in self.already:
    74.             print(f'"{forum_name}"已签到!')
    75.             self.count[1] += 1
    76.     while n < max and self.rest:
    77.         n += 1
    78.         self.loop(n)
    79.     print('* 本日签到报告 *')
    80.     print(f'共{self.count[2]}个贴吧,其中签到成功{self.count[0]}个,已经签到{self.count[1]}个,签到失败{len(self.rest)}个。')
    81.     if self.rest:
    82.         print('* 签到失败列表 *')
    83.         for forum_name in self.rest:
    84.             print(f'"{forum_name}"签到失败!')
    85. def main_handler(*args):
    86. with open('BDUSS.txt') as f: BDUSS = f.read()
    87. with open('STOKEN.txt') as f: STOKEN = f.read()
    88. task = Tieba(BDUSS, STOKEN)
    89. task.main(3)
    90. # 不需要推送的删除以下几行
    91. if task.rest:
    92.     message = f'以下为未完成列表:'
    93.     for forum in task.rest: message += '' + forum
    94.     data = {'text': '签到未完全完成!', 'desp': message}
    95.     post('https://sc.ftqq.com/你的key.send', data=data)```
    复制代码
    • 如图
    • 回到此界面,点击"测试"(应该会自动部署,如提示请先部署就先部署一下)
    • 如若成功,应该能看到“测试成功”,输出签到的详细信息,可以进入下一步;如若失败,查看是否复制粘贴出错,无误仍出错请参照附录。
    • 设置自动执行
      表达式:0 0 1 * * * *

    附录/Q&A
    • BDUSS及STOKEN的获取(以Edge浏览器为例)
      • 登录任一百度产品,例如百度一下
      • 如图打开cookie界面
      • 在"baidu.com/Cookie"下找到"BDUSS",复制其内容
      • 在"passport.baidu.com/Cookie"下找到"STOKEN",复制其内容
      • 注意:粘贴到txt文件中时只能一行,如果出现行号为"2"的空行请删除,否则会出错

    • 常见错误
      • 超时
        a. 是否进行了教程的步骤5?
        b. 尝试删除"index.py"的第65行(sleep(random() * 3))和第5行(from time import sleep)
        c. 仍然超时则关注贴吧个数过多,可以自行修改代码及增加触发器,分次签到,这里不再深入。
      • 获取关注贴吧错误
        a. 两个txt文件最后是否有空行
        b. 是否复制了正确的项到正确的txt,完成后有没有保存
        c. 如果这无法解决问题,那重新登录后再次获取
        d. 再不行的话我也没办法{:301_971:}
    更新日志6.27 添加未完成签到进行server酱通知功能
    后言如果觉得好用不要吝惜评分哦{:301_997:}

    转自52pj

    如图    回到此界面,点击"测试"(应该会自动部署,如提示请先部署就先部署一下)    如若成功,应该能看到“测试成功”,输出签到的详细信息,可以进入下一步;如若失败,查看是否复制粘贴出错,无误仍出错请参照附录。    设置自动执行    表达式:0 0 1 * * * *附录/Q&A
    [Rú tú    huí dào cǐ jièmiàn, diǎnjī"cèshì"(yīnggāi huì zìdòng bùshǔ, rú tíshì qǐng xiān bùshǔ jiù xiān bùshǔ yīxià)    rúruò chénggōng, yīnggāi néng kàn dào “cèshì chénggōng”, shūchū qiāndào de xiángxì xìnxī, kěyǐ jìnrù xià yībù; rúruò shībài, chákàn shìfǒu fùzhì zhāntiē chūcuò, wúwù réng chūcuò qǐng cānzhào fùlù.    Shèzhì zìdòng zhíxíng    biǎodá shì:0 0 1* * * *Fùlù/Q&A]


    Figure
        Back to this interface, click "Test" (should be automatically deployed, if prompted, please deploy first)
        If it is successful, you should see "Successful test success" and output the check-in details, you can go to the next step; if you fail, check whether copying paste is wrong, you still have an error, please refer to the appendix.
        Set automatic execution
        Expression: 0 0 1 * * * *

    Appendix / Q & A








    上一篇:2021年7月19日签到记录贴
    下一篇:2021年7月20日签到记录贴
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 |

    本版积分规则

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