吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 38129|回复: 268
收起左侧

[Python 转载] 某度贴吧签到脚本[云函数专用版](白嫖实现每日自动签到)

    [复制链接]
三滑稽甲苯 发表于 2020-4-13 13:20
本帖最后由 三滑稽甲苯 于 2021-6-19 14:41 编辑

上方是类似的脚本,如若此脚本出错,可试试它们。
V2模拟客户端已出,见https://www.52pojie.cn/thread-1461547-1-1.html
本脚本为某度贴吧签到脚本(https://www.52pojie.cn/thread-1152714-1-1.html)的云函数版本
相较于本地版本,此脚本新添了延时功能以防签到过快,并将代码放置在main函数中以提供入口(不再显示执行错误)
更多新添功能请查看日志。
源码:
[Python] 纯文本查看 复制代码
# -*- coding: utf8 -*-
from requests import Session
from time import sleep
def main(*args):
    # 数据
    like_url = 'https://tieba.baidu.com/mo/q/newmoindex?'
    sign_url = 'http://tieba.baidu.com/sign/add'
    tbs = '4fb45fea4498360d1547435295'
    head = {
        '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',
        'Cookie': 
'BDUSS=你的BDUSS;STOKEN=你的STOKEN',
        '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'}
    s = Session()
  
  
    # 获取关注的贴吧
    bars = []
    dic = s.get(like_url, headers=head).json()['data']['like_forum']
    for bar_info in dic:
        bars.append(bar_info['forum_name'])
  
  
    # 签到
    already_signed_code = 1101
    success_code = 0
    need_verify_code = 2150040
    already_signed = 0
    succees = 0
    failed_bar = []
    n = 0
    retry_count = 0
    max_retry = 5 # 因需要验证码而重试的最大次数
  
    while n < len(bars):
        sleep(0.5)
        bar = bars[n]
        data = {
            'ie': 'utf-8',
            'kw': bar,
            'tbs': tbs
        }
        try:
            r = s.post(sign_url, data=data, headers=head)
        except Exception as e:
            print(f'未能签到{bar}, 由于{e}。')
            failed_bar.append(bar)
            continue
        dic = r.json()
        msg = dic['no']
        if msg == already_signed_code: already_signed += 1; r = '已经签到过了!'
        elif msg == need_verify_code and retry_count <max_retry: n -= 1; retry_count += 1; r = f'需要验证码,即将重试!({retry_count}/{max_retry})'
        elif msg == need_verify_code: r = '验证码错误,跳过!'; retry_count = 0
        elif msg == success_code: r = f"签到成功!你是第{dic['data']['uinfo']['user_sign_rank']}个签到的吧友,共签到{dic['data']['uinfo']['total_sign_num']}天。"
        else: r = '未知错误!' + dic['error']
        print(f"{bar}:{r}")
        succees += 1
        n += 1
    l = len(bars)
    failed = "\n失败列表:"+'\n'.join(failed_bar) if len(failed_bar) else ''
    message = f'''共{l}个吧,其中{succees}个吧签到成功,{len(failed_bar)}个吧签到失败,{already_signed}个吧已经签到。失败列表:{failed}'''
    print(message)
    s.get(f"https://sc.ftqq.com/你的码.send?text={message}")# [未测试]Server酱推送,不需要则删除此行
    retry_count = 0
    max_retry = 5 # 因需要验证码而重试的最大次数
  
    while n < len(bars):
        sleep(0.5)
        bar = bars[n]
        data = {
            'ie': 'utf-8',
            'kw': bar,
            'tbs': tbs
        }
        try:
            r = s.post(sign_url, data=data, headers=head)
        except Exception as e:
            print(f'未能签到{bar}, 由于{e}。')
            failed_bar.append(bar)
            continue
        dic = r.json()
        msg = dic['no']
        if msg == already_signed_code: already_signed += 1; r = '已经签到过了!'
        elif msg == need_verify_code and retry_count <max_retry: n -= 1; retry_count += 1; r = f'需要验证码,即将重试!({retry_count}/{max_retry})'
        elif msg == need_verify_code: r = '验证码错误,跳过!'; retry_count = 0
        elif msg == success_code: r = f"签到成功!你是第{dic['data']['uinfo']['user_sign_rank']}个签到的吧友,共签到{dic['data']['uinfo']['total_sign_num']}天。"
        else: r = '未知错误!' + dic['error']
        print(f"{bar}:{r}")
        succees += 1
        n += 1
    l = len(bars)
    failed = "\n失败列表:"+'\n'.join(failed_bar) if len(failed_bar) else ''
    message = f'''共{l}个吧,其中{succees}个吧签到成功,{len(failed_bar)}个吧签到失败,{already_signed}个吧已经签到。失败列表:{failed}'''
    print(message)    s.get(f"https://sc.ftqq.com/你的SCKEY.send?text={message}")# [未测试]Server酱推送,不需要则删除此行


有了脚本就要挂到白嫖云服务器上来实现自动签到
Step1. 注册账号,过程略。网址:https://console.cloud.tencent.com/
Step2. 进入云函数控制台的函数服务:https://console.cloud.tencent.com/scf/index?rid=1

Step2

Step2

Step3. 单击“新建”
Step4.

Step4

Step4

Step5.

Step5

Step5

Step6.

Step6

Step6

Step7. 测试一下函数运行情况。如若成功则应该能看到“测试成功”,输出与图示相似;失败则检查cookie是否过期、填写错误以及网络状况。

Step7

Step7

Step8. 自动执行

Step8.1

Step8.1

注意下面Cron表达式中的空格(或者复制:0 0 1 * * * *)

Step8.2

Step8.2

Step9. 洗洗睡,明天早上起来后会发现已经签到了
Step10. 如若关注贴吧个数过多,请自行修改超时时间(大约为0.7s*关注个数)

a

a

b

b


日志(2020.4.18日起)
历史版本:https://ww.lanzouj.com/b00zgfori     密码:5dy3
2020
    4.18  可设置验证码错误的最大尝试次数;server酱推送更加详细;补充了云函数收费的说明。
    4.30  历史版本
    5.16  随机休眠几秒
    6.14  开始研究模拟客户端而非网页签到(遇到难以解决的“目录出错”问题,可能要咕很久)
    9.19  修改为@弗朗西斯-小明 (https://www.52pojie.cn/?530479)提供的脚本(https://www.52pojie.cn/forum.php ... 155287&pid=31442338)
2021
    6.17 感谢支持,高考已结束,开始重构脚本逻辑以及研究模拟客户端签到,成功后由于代码结构有较大改动将开新帖分享
    6.18 代码已编写完成,等明天可以再次签到时试试
F&Q(请阅读此栏目后再提问)
1.  出现module 'index' has no attribute 'main_handler'
解决方法:仔细查看教程Step5----是不是漏了一步?
2. 出现Task timed out after 3 seconds
解决方法:参照教程Step10.
3. 云函数收费吗?
云函数不收费,但是有流量限制。详情参见:https://cloud.tencent.com/document/product/583/17299

云函数计费说明

云函数计费说明

4. 能否做XXX的签到?
没时间,没能力做。
本人仅为贴吧的一个大氵笔,闲暇之余四处搜集信息拼凑成此脚本,并且最近在研究模拟客户端签到,故无精力和时间继续做此类脚本。
5. cookie相关
常见错误:KeyError: 'like_forum'
cookie大致格式为:BDUSS=XXXXX; TOKEN=XXXXXX
获取方法参考http://pandownload.com/faq/cookie.html,将网盘的TOKEN换成贴吧的TOKEN
# 2020.4.16补充:好人一生平安&#128591;由于pd被封,故无法查看教程,详细步骤可参阅本帖第61楼的方案:https://www.52pojie.cn/forum.php ... 155287&pid=31391633
# 2021.6.17补充:pd官网已可正常访问
由于cookie会过期,所以需要不定时查看签到是否失败,若失败请更换cookie。
神奇的是我的cookie用了几个月都还好用

点评

感谢大佬的白嫖并分享.跪求再来一个微博超话签到的.因为....我经常忘记  发表于 2020-4-13 22:06

免费评分

参与人数 45吾爱币 +44 热心值 +39 收起 理由
我困了先睡 + 1 + 1 谢谢@Thanks!
萌比君 + 1 谢谢@Thanks!
wu1234 + 1 热心回复!
天云尊者 + 1 + 1 我很赞同!
xiaomod + 1 + 1 谢谢@Thanks!
街角de幸福 + 1 + 1 大佬还会不会继续弄客户端的签到
隔页纸 + 1 正确代码在74楼!
日后提拔 + 1 + 1 谢谢@Thanks!
netspirit + 1 谢谢@Thanks!
ke8kui + 1 + 1 谢谢 @Thanks!
8686115 + 1 + 1 我很赞同!
lonely旅程 + 1 + 1 我很赞同!
smile0805 + 1 + 1 谢谢@Thanks!
Shmen + 1 谢谢@Thanks!
云随风2013 + 1 + 1 谢谢@Thanks!
天的信仰 + 1 + 1 我很赞同!
Cloudiver + 1 + 1 谢谢@Thanks!
悠度科技 + 1 + 1 用心讨论,共获提升!
yeeshao + 1 + 1 热心回复!
JMFANS + 1 + 1 我很赞同!
Mr_Symbian + 1 + 1 谢谢@Thanks!
anfanglajixueyu + 1 试了好几次,卡在bduss和stoken,今天仔细看发现用错浏览器了
冰炎 + 1 谢谢@Thanks! 百D贴把签到脚本
yzh_lh + 1 + 1 谢谢@Thanks!
王932123 + 1 + 1 我很赞同!
jtq1234 + 2 + 1 测试成功了
Se.缁壊骞绘兂 + 1 + 1 谢谢@Thanks!
w4526423 + 1 热心回复!
渐行渐远i + 1 + 1 谢谢@Thanks!
凉宫锦秋 + 1 + 1 我很赞同!
gmleeben + 1 + 1 用心讨论,共获提升!
down_drop + 1 + 1 我很赞同!
雨天掉线 + 1 + 1 谢谢@Thanks!
超音速DX + 1 + 1 谢谢@Thanks!
NorthBF + 1 + 1 用心讨论,共获提升!
vagrantear + 1 + 1 谢谢@Thanks!
xxxx96923 + 1 + 1 谢谢 @Thanks!
Zeno___Lee + 2 + 1 大佬,你要的我都给你,跪求微博超话签到
lm_chr + 1 + 1 谢谢@Thanks!
solomoon + 1 + 1 谢谢@Thanks!
姚啊姚0908 + 1 + 1 我很赞同!希望明早醒来已经签了···
Radianclass + 1 + 1 不错大佬 正好有一台
xiaochuan827 + 1 + 1 用心讨论,共获提升!
wapj... + 1 我很赞同!
s1732 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

  • · 雲方|主题: 27, 订阅: 25

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

弗朗西斯-小明 发表于 2020-4-19 15:02
正常运行的代码:

[Python] 纯文本查看 复制代码
# -*- coding: utf8 -*-
from requests import Session
from time import sleep
def main(*args):
    # 数据
    like_url = 'https://tieba.baidu.com/mo/q/newmoindex?'
    sign_url = 'http://tieba.baidu.com/sign/add'
    tbs = '4fb45fea4498360d1547435295'
    head = {
        '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',
        'Cookie': 
'BDUSS=你的BDUSS;STOKEN=你的STOKEN',
        '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'}
    s = Session()
 
 
    # 获取关注的贴吧
    bars = []
    dic = s.get(like_url, headers=head).json()['data']['like_forum']
    for bar_info in dic:
        bars.append(bar_info['forum_name'])
 
 
    # 签到
    already_signed_code = 1101
    success_code = 0
    need_verify_code = 2150040
    already_signed = 0
    succees = 0
    failed_bar = []
    n = 0
    retry_count = 0
    max_retry = 5 # 因需要验证码而重试的最大次数
 
    while n < len(bars):
        sleep(0.5)
        bar = bars[n]
        data = {
            'ie': 'utf-8',
            'kw': bar,
            'tbs': tbs
        }
        try:
            r = s.post(sign_url, data=data, headers=head)
        except Exception as e:
            print(f'未能签到{bar}, 由于{e}。')
            failed_bar.append(bar)
            continue
        dic = r.json()
        msg = dic['no']
        if msg == already_signed_code: already_signed += 1; r = '已经签到过了!'
        elif msg == need_verify_code and retry_count <max_retry: n -= 1; retry_count += 1; r = f'需要验证码,即将重试!({retry_count}/{max_retry})'
        elif msg == need_verify_code: r = '验证码错误,跳过!'; retry_count = 0
        elif msg == success_code: r = f"签到成功!你是第{dic['data']['uinfo']['user_sign_rank']}个签到的吧友,共签到{dic['data']['uinfo']['total_sign_num']}天。"
        else: r = '未知错误!' + dic['error']
        print(f"{bar}:{r}")
        succees += 1
        n += 1
    l = len(bars)
    failed = "\n失败列表:"+'\n'.join(failed_bar) if len(failed_bar) else ''
    message = f'''共{l}个吧,其中{succees}个吧签到成功,{len(failed_bar)}个吧签到失败,{already_signed}个吧已经签到。失败列表:{failed}'''
    print(message)
    s.get(f"https://sc.ftqq.com/你的码.send?text={message}")# [未测试]Server酱推送,不需要则删除此行
    retry_count = 0
    max_retry = 5 # 因需要验证码而重试的最大次数
 
    while n < len(bars):
        sleep(0.5)
        bar = bars[n]
        data = {
            'ie': 'utf-8',
            'kw': bar,
            'tbs': tbs
        }
        try:
            r = s.post(sign_url, data=data, headers=head)
        except Exception as e:
            print(f'未能签到{bar}, 由于{e}。')
            failed_bar.append(bar)
            continue
        dic = r.json()
        msg = dic['no']
        if msg == already_signed_code: already_signed += 1; r = '已经签到过了!'
        elif msg == need_verify_code and retry_count <max_retry: n -= 1; retry_count += 1; r = f'需要验证码,即将重试!({retry_count}/{max_retry})'
        elif msg == need_verify_code: r = '验证码错误,跳过!'; retry_count = 0
        elif msg == success_code: r = f"签到成功!你是第{dic['data']['uinfo']['user_sign_rank']}个签到的吧友,共签到{dic['data']['uinfo']['total_sign_num']}天。"
        else: r = '未知错误!' + dic['error']
        print(f"{bar}:{r}")
        succees += 1
        n += 1
    l = len(bars)
    failed = "\n失败列表:"+'\n'.join(failed_bar) if len(failed_bar) else ''
    message = f'''共{l}个吧,其中{succees}个吧签到成功,{len(failed_bar)}个吧签到失败,{already_signed}个吧已经签到。失败列表:{failed}'''
    print(message)
    s.get(f"https://sc.ftqq.com/你的SCKEY.send?text={message}")# [未测试]Server酱推送,不需要则删除此行

免费评分

参与人数 5吾爱币 +5 热心值 +4 收起 理由
三滑稽甲苯 + 1 + 1 用心讨论,共获提升!
qq308518933 + 1 + 1 我很赞同!
江沉晚吟时. + 1 谢谢@Thanks!
Weihetaken + 1 + 1 给劲
混球 + 1 + 1 你的脚本靠谱BDUSS和STOKEN之间要;要不一直错误

查看全部评分

gmleeben 发表于 2020-4-16 21:02
补充几点 由于pand*****ad被封 所以Cooike采集办法为 :1.打开贴吧,进入“贴吧个人中心” ;2.按下F12键;3.参考图片操作 (我用的是Chrome浏览器)

然后将采集到的数据按照:“BDUSS=********************************************
                                             STOKEN=********************************”
粘贴至第14行代码如图:

至此就可以测试  本人亲测有效...
lwwy1981 发表于 2020-6-6 22:23
终于搞好了,谢谢大佬 ,顺便说一句,cooks的正确写法是

'BDUSS=*******************;STOKEN=********************'

61楼的大佬 没加分号,让我弄了半天才搞明白,楼主把这个格式更新到顶楼吧
夏橙M兮 发表于 2021-2-19 16:23
三滑稽甲苯 发表于 2021-2-10 21:42
@Zeno___Lee
又来一个:https://www.52pojie.cn/thread-1369538-1-1.html

能不能做一个能发帖的功能,比如我有一个签到帖,我想每天自动签到,第**天 签到 这个能实现吗?
 楼主| 三滑稽甲苯 发表于 2020-6-6 22:03
adsxxhh 发表于 2020-6-6 21:25
请问一下,第五步是不是省略了好几百字呀。
这些知识属于哪个科目呀,我想去学习一下。

emm...
相关的例子看多后就会了
你可以多多研究有详解的抓包教程
52论坛有很多的
 楼主| 三滑稽甲苯 发表于 2020-4-18 17:23
旗袍妹妹 发表于 2020-4-18 02:43
发现一个问题:普通用户一次只能签到50个吧,当用户关注的吧超过50个之后,从第51个开始,日志重复出现
ht ...

已添加最大尝试次数功能

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
旗袍妹妹 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

 楼主| 三滑稽甲苯 发表于 2020-4-15 12:18
down_drop 发表于 2020-4-15 12:15
硬是没弄好啊,cookie好像填错了

返回结果

查看教程Step5
将执行方法改为index.main
lwwy1981 发表于 2020-6-8 10:00
这是手机客户端和手机网页端的PHP签到代码,楼主能否改造一下,毕竟模拟手机客户端的签到分数比电脑端高几倍

[PHP] 纯文本查看 复制代码
/**
	 * 50贴吧客户端一键签到
	 */
	public static function DoSign_Onekey($uid,$kw,$id,$pid,$fid,$ck) {
		$ch = new wcurl('http://c.tieba.baidu.com/c/c/forum/msign', array(
			'User-Agent: bdtb for Android 6.5.8'
		));	
		$ch->addcookie(array('BDUSS' => $ck));
		$temp = array(
			'BDUSS' => misc::getCookie($pid),
			'_client_id' => '03-00-DA-59-05-00-72-96-06-00-01-00-04-00-4C-43-01-00-34-F4-02-00-BC-25-09-00-4E-36',
			'_client_type' => '4',
			'_client_version' => '1.2.1.17',
			'_phone_imei' => '540b43b59d21b7a4824e1fd31b08e9a6',
			'fid' => $fid,
			'kw' => $kw,
			'net_type' => '3',
			'tbs' => misc::getTbs($uid,$ck)
		);
        self::addTiebaSign($temp);
		return $ch->post($temp);
	}

	/**
	 * 手机网页签到
	 */
	public static function DoSign_Mobile($uid,$kw,$id,$pid,$fid,$ck) {
		//没问题了
		$ch = new wcurl('http://tieba.baidu.com/mo/q/sign?tbs='.misc::getTbs($uid,$ck).'&kw='.urlencode($kw).'&is_like=1&fid='.$fid ,array('User-Agent: fuck phone','Referer: http://tieba.baidu.com/f?kw='.$kw , 'Host: tieba.baidu.com','X-Forwarded-For: 115.28.1.'.mt_rand(1,255), 'Origin: http://tieba.baidu.com', 'Connection: Keep-Alive'));
		$ch->addcookie(array('BDUSS' => $ck,'BAIDUID' => strtoupper(md5(time()))));
		return $ch->exec();
	}

	/**
	 * 网页签到
	 */
WuBuShanYan 发表于 2020-4-13 13:27
好东西啊,可惜我今天评分已经没有了
 楼主| 三滑稽甲苯 发表于 2020-4-13 13:32
WuBuShanYan 发表于 2020-4-13 13:27
好东西啊,可惜我今天评分已经没有了

明天成功后来评分也不错啊
yxwy516 发表于 2020-4-13 13:35
去试试在回来评论~~
空想昼夜 发表于 2020-4-13 13:41
之前也写过类似的扔到服务器上  楼主所见略同啊
solomoon 发表于 2020-4-13 13:56
楼主百度cookie 是BDUSS?
是直接那一长串的还是要加头
大手笔 发表于 2020-4-13 13:56
本帖最后由 大手笔 于 2020-4-13 14:11 编辑

<img style="width:50%;height:50%" src="https://attach.52pojie.cn//forum/202004/13/135453vnpf7azxzd7qmngq.jpg?">
QQ截图20200413140851.jpg
Cookie格式是这样吗   
QQ截图20200413135428.jpg
阿拉斯加的闪电 发表于 2020-4-13 13:56
百度贴吧等级高有什么用
hksnow 发表于 2020-4-13 14:02
厉害!想问一下这个云函数收费吗?
乄Spectre乄 发表于 2020-4-13 14:08
太高深,不懂!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 19:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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