吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8434|回复: 83
收起左侧

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

  [复制链接]
三滑稽甲苯 发表于 2021-6-19 14:01
本帖最后由 三滑稽甲苯 于 2021-8-2 08:52 编辑

前言

如题,最近闲着没事,研究出了模拟客户端签到的脚本。
感谢@lwwy1981 提供的PHP签到样本
credit.png

使用

  1. 注册账号,过程略。网址:https://console.cloud.tencent.com/
  2. 进入云函数控制台的函数服务:https://console.cloud.tencent.com/scf/index?rid=1
  3. 单击“新建”
  4. 如图(BDUSS及STOKEN获取见附录,粘贴代码时留下它原来的第一行)
    a.png
    代码:(复制可能出错,建议从,密码:i2nf下载txt然后复制)
    
    from requests import session
    from hashlib import md5
    from random import random
    from time import sleep
    class Tieba():
    def __init__(self, BDUSS, STOKEN):
        self.BDUSS = BDUSS
        self.STOKEN = STOKEN
        self.count = [0, 0, 0] # 签到成功, 已经签到, 总
        self.session = session()
        self.session.headers.update(
            {'Accept': 'text/html, */*; q=0.01',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
            'Connection': 'keep-alive',
            'Host': 'tieba.baidu.com',
            'Referer': 'http://tieba.baidu.com/i/i/forum',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
            'Chrome/71.0.3578.98 Safari/537.36',
            'X-Requested-With': 'XMLHttpRequest'}
        )
    def set_cookie(self):
        self.session.cookies.update({'BDUSS': self.BDUSS, 'STOKEN': self.STOKEN})
    def fetch_tbs(self):
        r = self.session.get('http://tieba.baidu.com/dc/common/tbs').json()
        if r['is_login'] == 1: self.tbs = r['tbs']
        else: raise Exception('获取tbs错误!以下为返回数据:' + str(r))
    def fetch_likes(self):
        self.rest = set()
        self.already = set()
        r = self.session.get('https://tieba.baidu.com/mo/q/newmoindex?').json()
        if r['no'] == 0:
            for forum in r['data']['like_forum']:
                self.count[2] += 1
                if forum['is_sign'] == 1:
                    self.already.add(forum['forum_name'])
                else:
                    self.rest.add(forum['forum_name'])
        else: raise Exception('获取关注贴吧错误!以下为返回数据:' + str(r))
    def sign(self, forum_name):
        data = {
            'kw': forum_name,
            'tbs': self.tbs,
            'sign': md5(f'kw={forum_name}tbs={self.tbs}tiebaclient!!!'.encode('utf8')).hexdigest()
        }
        r = self.session.post('http://c.tieba.baidu.com/c/c/forum/sign', data).json()
        if r['error_code'] == '160002':
            print(f'"{forum_name}"已签到!')
            self.count[1] += 1
            return True
        elif r['error_code'] == '0':
            print(f'"{forum_name}"签到成功,您是第{r["user_info"]["user_sign_rank"]}个签到的用户!') # Modify!
            self.count[0] += 1
            return True
        else:
            print(f'"{forum_name}"签到失败!以下为返回数据:{str(r)}')
            return False
    def loop(self, n):
        print(f'* 开始第{n}轮签到 *')
        rest = set()
        self.fetch_tbs()
        for forum_name in self.rest:
            sleep(random() * 3)
            flag = self.sign(forum_name)
            if not flag: rest.add(forum_name)
        self.rest = rest
    def main(self, max):
        self.set_cookie()
        self.fetch_likes()
        n = 0
        if self.already:
            print('* 已经签到的贴吧 *')
            for forum_name in self.already:
                print(f'"{forum_name}"已签到!')
                self.count[1] += 1
        while n < max and self.rest:
            n += 1
            self.loop(n)
        print('* 本日签到报告 *')
        print(f'共{self.count[2]}个贴吧,其中签到成功{self.count[0]}个,已经签到{self.count[1]}个,签到失败{len(self.rest)}个。')
        if self.rest:
            print('* 签到失败列表 *')
            for forum_name in self.rest:
                print(f'"{forum_name}"签到失败!')
    def main_handler(*args):
    with open('BDUSS.txt') as f: BDUSS = f.read()
    with open('STOKEN.txt') as f: STOKEN = f.read()
    task = Tieba(BDUSS, STOKEN)
    task.main(3)
    # 不需要推送的删除以下几行
    if task.rest:
        message = f'以下为未完成列表:'
        for forum in task.rest: message += '\n' + forum
        data = {'text': '签到未完全完成!', 'desp': message}
        post('https://sc.ftqq.com/你的key.send', data=data)```
  5. 如图
    b.png
  6. 回到此界面,点击"测试"(应该会自动部署,如提示请先部署就先部署一下)
    b-1.png b-2.png
  7. 如若成功,应该能看到“测试成功”,输出签到的详细信息,可以进入下一步;如若失败,查看是否复制粘贴出错,无误仍出错请参照附录。
  8. 设置自动执行
    表达式:0 0 1 * * * *
    c.png d.png

附录/Q&A

  1. BDUSS及STOKEN的获取(以Edge浏览器为例)

    1. 登录任一百度产品,例如百度一下
    2. 如图打开cookie界面
      e.png
    3. 在"baidu.com/Cookie"下找到"BDUSS",复制其内容
      f.png
    4. 在"passport.baidu.com/Cookie"下找到"STOKEN",复制其内容
      g.png
    5. [b]注意:粘贴到txt文件中时只能一行,如果出现行号为"2"的空行请删除,否则会出错
  2. 常见错误

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

更新日志

6.27 添加未完成签到进行server酱通知功能

后言

如果觉得好用不要吝惜评分哦{:301_997:}


免费评分

参与人数 23吾爱币 +30 热心值 +22 收起 理由
cjs2004 + 1 + 1 亲测,真是有效,谢谢!
HyggePeach + 1 用心讨论,共获提升!
坏坏LLLLLLLL + 1 + 1 用心讨论,共获提升!
xianghao14521 + 1 我很赞同!
HoDada + 1 + 1 谢谢@Thanks!
赤赤山的大当家 + 1 我很赞同!
a145356 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Wnieb + 1 + 1 谢谢,教程很详细,小白操作没有压力
星辰潋羽 + 1 + 1 谢谢@Thanks!
王932123 + 1 + 1 用心讨论,共获提升!
ads大伟 + 3 + 1 我很赞同!
sszaa + 1 + 1 很好使,大部分贴吧都成功了
君子如龙 + 1 + 1 谢谢@Thanks!
beizi1754 + 1 + 1 谢谢@Thanks!
mzq123000 + 1 + 1 居然搞好了
黑粉青羽 + 3 + 1 谢谢@Thanks!
fisherpau + 1 + 1 谢谢@Thanks!
442614870 + 1 一次部署成功,感谢分享!~
开始123 + 1 + 1 刚需产品
那一年的白洁啊 + 1 + 1 感谢楼主,测试成功。论坛的内嵌代码好像有bug,class下的函数给去掉开头的.
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yuehanoo + 1 + 1 谢谢@Thanks!
SnakeJohn + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

那一年的白洁啊 发表于 2021-6-19 18:00
言如初心不遇卿言 发表于 2021-6-19 17:51
把你说的def后面的都加了空格,86-89行就出错了

85行开始是主函数呀
[Python] 纯文本查看 复制代码
def main_handler(*args):
    with open('BDUSS.txt') as f:
        BDUSS = f.read()
    with open('STOKEN.txt') as f:
        STOKEN = f.read()
    task = Tieba(BDUSS, STOKEN)
    task.main(3)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
言如初心不遇卿言 + 1 + 1 热心回复!

查看全部评分

 楼主| 三滑稽甲苯 发表于 2021-6-28 17:24
毁我容颜 发表于 2021-6-28 15:48
能弄个52破解的自动签到吗,飘云的也搞搞

以前有人发过52的
我倒是有一个进入52网站自动点击签到的脚本,可以看看
https://www.52pojie.cn/thread-1414808-1-1.html
那一年的白洁啊 发表于 2021-6-19 17:04
言如初心不遇卿言 发表于 2021-6-19 15:27
不行,复制的代码部署的时候就显示一条错误,也照着附录设置了。

你直接复制的吧?楼主可能是粘贴的时候代码格式动到了。class下边的所有行要再空两格


image.png
言如初心不遇卿言 发表于 2021-6-19 15:27
本帖最后由 言如初心不遇卿言 于 2021-6-19 15:56 编辑

不行,复制的代码部署的时候就显示一条错误,也照着附录设置了。
BXQ)X)57Y~OKJ~{V[`%T%H3.png
 楼主| 三滑稽甲苯 发表于 2021-6-19 16:26
本帖最后由 三滑稽甲苯 于 2021-6-19 16:28 编辑
言如初心不遇卿言 发表于 2021-6-19 15:27
不行,复制的代码部署的时候就显示一条错误,也照着附录设置了。

把它提示的第6行截图出来看看,我放在云函数上没有错误提示
有可能是英文的冒号变成了中文
言如初心不遇卿言 发表于 2021-6-19 17:34
那一年的白洁啊 发表于 2021-6-19 17:04
你直接复制的吧?楼主可能是粘贴的时候代码格式动到了。class下边的所有行要再空两格

有可能,我是直接复制楼主的
言如初心不遇卿言 发表于 2021-6-19 17:41
三滑稽甲苯 发表于 2021-6-19 16:26
把它提示的第6行截图出来看看,我放在云函数上没有错误提示
有可能是英文的冒号变成了中文

没有呀,你看这是第6条
SUZFN~DVF%KI@6UKOY`KBU3.png
言如初心不遇卿言 发表于 2021-6-19 17:42
本帖最后由 言如初心不遇卿言 于 2021-6-19 17:44 编辑
那一年的白洁啊 发表于 2021-6-19 17:04
你直接复制的吧?楼主可能是粘贴的时候代码格式动到了。class下边的所有行要再空两格

我重新看了一下,还真没有空格了
image.png
言如初心不遇卿言 发表于 2021-6-19 17:51
那一年的白洁啊 发表于 2021-6-19 17:04
你直接复制的吧?楼主可能是粘贴的时候代码格式动到了。class下边的所有行要再空两格

把你说的def后面的都加了空格,86-89行就出错了
image.png
言如初心不遇卿言 发表于 2021-6-19 18:06
那一年的白洁啊 发表于 2021-6-19 18:00
85行开始是主函数呀
[mw_shl_code=python,true]
def main_handler(*args):

谢谢好兄弟,可以了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 00:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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