学生黑客联盟-官网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 219|回复: 9

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

[复制链接]

该用户从未签到

6

主题

6

帖子

32

积分

新手上路

Rank: 1

积分
32
发表于 2021-9-14 08:41:22 | 显示全部楼层 |阅读模式
前言

如题,最近闲着没事,研究出了模拟客户端签到的脚本。
感谢@lwwy1981 提供的PHP签到样本。
TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(1)
使用

    注册账号,过程略。网址:https://console.cloud.tencent.com/进入云函数控制台的函数服务:https://console.cloud.tencent.com/scf/index?rid=1单击“新建”
  • 如图(BDUSS及STOKEN获取见附录,粘贴代码时留下它原来的第一行)
    TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(2)
    代码:(复制可能出错,建议从此,密码:i2nf下载txt然后复制)
    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 += '\n' + forum
    94.     data = {'text': '签到未完全完成!', 'desp': message}
    95.     post('https://sc.ftqq.com/你的key.send', data=data)```
    复制代码
    如图
    TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(3) 回到此界面,点击"测试"(应该会自动部署,如提示请先部署就先部署一下)
    TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(4) TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(5) 如若成功,应该能看到“测试成功”,输出签到的详细信息,可以进入下一步;如若失败,查看是否复制粘贴出错,无误仍出错请参照附录。设置自动执行
    表达式:0 0 1 * * * *
    TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(6) TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(7)
附录/Q&A

    BDUSS及STOKEN的获取(以Edge浏览器为例)
      登录任一百度产品,例如百度一下如图打开cookie界面
      TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(8) 在"baidu.com/Cookie"下找到"BDUSS",复制其内容
      TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(9) 在"passport.baidu.com/Cookie"下找到"STOKEN",复制其内容
      TBC新兵交流-前言如题,最近闲着没事,研究出了模拟客户端签到的脚本。感谢@lwwy1981 提供的PHP签到样本。使(10) 注意</strong>:粘贴到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:}

该用户从未签到

0

主题

1679

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-9-14 08:41:48 | 显示全部楼层
85行开始是主函数呀
[Python]  
  1. def main_handler(*args):
  2.     with open('BDUSS.txt') as f:
  3.         BDUSS = f.read()
  4.     with open('STOKEN.txt') as f:
  5.         STOKEN = f.read()
  6.     task = Tieba(BDUSS, STOKEN)
  7.     task.main(3)
复制代码
回复

使用道具 举报

该用户从未签到

0

主题

1679

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-9-14 08:42:31 | 显示全部楼层
你直接复制的吧?楼主可能是粘贴的时候代码格式动到了。class下边的所有行要再空两格



TBC新兵交流-你直接复制的吧?楼主可能是粘贴的时候代码格式动到了。class下边的所有行要再空两格(11)
回复

使用道具 举报

该用户从未签到

1

主题

1571

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
发表于 2021-9-14 08:42:47 | 显示全部楼层
不行,复制的代码部署的时候就显示一条错误,也照着附录设置了。
TBC新兵交流-不行,复制的代码部署的时候就显示一条错误,也照着附录设置了。(12)
回复

使用道具 举报

该用户从未签到

3

主题

1614

帖子

893

积分

高级会员

Rank: 4

积分
893
发表于 2021-9-14 08:43:22 | 显示全部楼层
把它提示的第6行截图出来看看,我放在云函数上没有错误提示
有可能是英文的冒号变成了中文
回复

使用道具 举报

该用户从未签到

0

主题

1679

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-9-14 08:43:30 | 显示全部楼层
有可能,我是直接复制楼主的
回复

使用道具 举报

该用户从未签到

0

主题

1679

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-9-14 08:43:39 | 显示全部楼层
没有呀,你看这是第6条
TBC新兵交流-没有呀,你看这是第6条(13)
回复

使用道具 举报

该用户从未签到

1

主题

1571

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
发表于 2021-9-14 08:44:18 | 显示全部楼层
我重新看了一下,还真没有空格了
TBC新兵交流-我重新看了一下,还真没有空格了(14)
回复

使用道具 举报

该用户从未签到

1

主题

1571

帖子

1045

积分

金牌会员

Rank: 6Rank: 6

积分
1045
发表于 2021-9-14 08:44:46 | 显示全部楼层
把你说的def后面的都加了空格,86-89行就出错了
TBC新兵交流-把你说的def后面的都加了空格,86-89行就出错了(15)
回复

使用道具 举报

该用户从未签到

3

主题

1614

帖子

893

积分

高级会员

Rank: 4

积分
893
发表于 2021-9-14 08:44:54 | 显示全部楼层
谢谢好兄弟,可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭Powered by ©科大讯飞语音云

QQ|Archiver|手机版|小黑屋|TBC ( 鄂ICP备19004742号(鄂ICP备19004742号-2) )|网站地图|鄂ICP备19004742号(鄂ICP备19004742号-2) 联系站长

GMT+8, 2021-9-23 14:06 , Processed in 0.859375 second(s), 70 queries .

Powered by TBC! X3.4

© 2001-2020 TBC.. 技术支持 by 复仇者黑客组织

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