Closed FinBird closed 1 year ago
用json版客户端接口 靠后的页数本就会随机多或少出现一些主题帖 可能是那些主题帖已经被吞了
用json版客户端接口 靠后的页数本就会随机多或少出现一些主题帖 可能是那些主题帖已经被吞了
上面例子的37和57页,一直取不到主题贴大概是因为这两页有投票贴存在。即get_threads
取不到投票贴
吐槽:度娘真辣鸡,API更新版本就各种break。还不稳定
哦阁下说的是12年引入的网页端投票主题帖
,他本来就只会显示于网页端
因为这么多年来的贴吧客户端团队从未实现过在客户端里正确渲染网页端投票主题帖
的投票表单(网页端上现在都还是嵌入flash投票呢,所以现在实际上基本没人能投票了,发网页端投票贴
的入口前几年好像也砍了)
而后来可能18年左右客户端团队又终于自己搞了个客户端投票贴
,按照对等待遇(实际上是没人想去给网页端加功能),网页端也无法显示客户端投票贴
,不论是在吧首页主题帖列表
(过滤掉客户端投票贴
)中还是直接访问该主题帖tid
(1L只能看到空白)
但仅靠网页端投票主题帖
是无法解释阁下所遇到的不能稳定取到正确的主题帖数量,需要调用多次才能返回正确的值
只能解释靠后的页数中为什么第57页尝试30次仍无法取得正确贴数,应为49实际为48
,因为在那些页的确是网页端投票贴
一直占着所以不可能靠不断重试来使得数量匹配
另外阁下爬这么多页是想完全备份一个贴吧吗?阁下可以参考 https://n0099.net/v/d/3280
之前看到了,多谢提示。另外问下您还有别的交流工具么?你首页的q群之前找到了群号但我加不进去。 另外我不用slack群组@n0099
四叶主群292311751
都被封了快两年了
您可以问伊欧神 @langyo 他管理着四叶qq分群
或 @BANKA2017 和 @kokoro-aya 他们管理着四叶tg分部 https://t.me/n0099_tg https://t.me/n0099official
https://www.v2ex.com/t/908083#r_12566585 对此早有预言:
建议深入学习贯彻泛银河系格雷科技分部邪恶组织四叶重工炼铜本部叶独头子叶独群组联合体陈意志第三帝国元首炼铜傻狗橙猫领导下的四叶 TG 本部( https://t.me/n0099_tg https://t.me/n0099official )话语体系文风: https://sora.ink/archives/1574 https://github.com/n0099/TiebaMonitor/issues/24 https://github.com/Starry-OvO/aiotieba/issues/64
我不用slack群组
实际上是UX类似slack的zulip,但并不是slack、discord、qq频道
但仅靠
网页端投票主题帖
是无法解释阁下所遇到的不能稳定取到正确的主题帖数量,需要调用多次才能返回正确的值
是的,只剩这个问题了 嗯,以前的贴吧我也了解过一些。
嗯,以前的贴吧我也了解过一些。
看看您的贴吧ID https://tieba.baidu.com/home/main?id=tb.1.c3bc6401.cuFllz86fDotNQKqB4WJ2Q 建议立即致电03年12月(贴吧创立一个月后)就开始使用百度贴吧的贴吧客户端内测资格用户ID吃圈老资历云南贵族郭楠furry男同556神 https://tieba.baidu.com/home/main?un=556
或许纯粹就是系统不稳定?
测试代码
import asyncio
import time
import aiotieba as tb
async def main():
async with tb.Client('starry') as brow:
pn = 17
threads = await brow.get_threads('flowers', pn, rn=50)
prev_thread_set = set(threads)
for i in range(10):
threads = await brow.get_threads('flowers', pn=17, rn=50)
print(f"iter: {i} len:{len(threads)}")
curr_thread_set = set(threads)
print(prev_thread_set ^ curr_thread_set)
prev_thread_set = curr_thread_set
time.sleep(2.0)
asyncio.run(main())
iter: 0 len:46
{{'tid': 7540486498, 'pid': 141308918165, 'user': 'w伪物w', 'text': '谁有沙沙贵姐妹版本的chaleur资源吗\n'}, {'tid': 7545075701, 'pid': 141350946814, 'user': '_____没道理', 'text': '萌新看完冬有槽不吐不快~~\n花绝对不只是圣母在上的精神续作吧。\n绝对有致敬白2的成分在里面吧(尼美苦逼)\n最开始春里的等边三角形反
而和白学不同\n但是TM的“三人的歌”这种简直直接快进到雪菜真结局。\n从这个思路思考秋对应冬马真结局非常合理,两人背叛一切离开圣彗星兰和两个人背叛一切离开日本(精神错乱\n继续推理下去春的等边三角形真的太好了(高兴)(dogshit),不然就会是:明明。。。和擅自跑到。。。和想出这种酷刑。。。\n这么说来志水你还真是温柔的人
呀(made志水给爷死)'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}}
iter: 1 len:45
{{'tid': 7540486498, 'pid': 141308918165, 'user': 'w伪物w', 'text': '谁有沙沙贵姐妹版本的chaleur资源吗\n'}, {'tid': 7562784179, 'pid': 141530994096, 'user': 'xjinda', 'text': '求问La chaleur du corut这广播剧有汉化什么的\nRT,我在阿b和A站都找不到这种广播剧的存在,还是看萌白才发现的\n还有我怎么发现我们没吧主
了'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}}
iter: 2 len:47
{{'tid': 7550013656, 'pid': 141403176244, 'user': '大雪天泡温泉', 'text': 'flowers春\n春篇每次卸载重装,cg图,结局都没有了,有什么解决办法吗'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}}
iter: 3 len:47
{{'tid': 7562784179, 'pid': 141530994096, 'user': 'xjinda', 'text': '求问La chaleur du corut这广播剧有汉化什么的\nRT,我在阿b和A站都找不到这种广播剧的存在,还是看萌白才发现的\n还有我怎么发现我们没吧主了'}, {'tid': 7550013656, 'pid': 141403176244, 'user': '大雪天泡温泉', 'text': 'flowers春\n春篇每次卸载重装
,cg图,结局都没有了,有什么解决办法吗'}, {'tid': 7545075701, 'pid': 141350946814, 'user': '_____没道理', 'text': '萌新看完冬有槽不吐不快~~\n花绝对不只是圣母在上的精神续作吧。\n绝对有致敬白2的成分在里面吧(尼美苦逼)\n最开始春里的等边三角形反而和白学不同\n但是TM的“三人的歌”这种简直直接快进到雪菜真结局。\n从
这个思路思考秋对应冬马真结局非常合理,两人背叛一切离开圣彗星兰和两个人背叛一切离开日本(精神错乱\n继续推理下去春的等边三角形真的太好了(高兴)(dogshit),不然就会是:明明。。。和擅自跑到。。。和想出这种酷刑。。。\n这么说来志水你还真是温柔的人呀(made志水给爷死)'}, {'tid': 7538578741, 'pid': 141289501668, 'user': '承认吧不如他们', 'text': '长期蹲收周边\n四季fanbooks 初回等等'}}
iter: 4 len:46
{{'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}}
iter: 5 len:44
{{'tid': 7545075701, 'pid': 141350946814, 'user': '_____没道理', 'text': '萌新看完冬有槽不吐不快~~\n花绝对不只是圣母在上的精神续作吧。\n绝对有致敬白2的成分在里面吧(尼美苦逼)\n最开始春里的等边三角形反而和白学不同\n但是TM的“三人的歌”这种简直直接快进到雪菜真结局。\n从这个思路思考秋对应冬马真结局非常合理,两人
背叛一切离开圣彗星兰和两个人背叛一切离开日本(精神错乱\n继续推理下去春的等边三角形真的太好了(高兴)(dogshit),不然就会是:明明。。。和擅自跑到。。。和想出这种酷刑。。。\n这么说来志水你还真是温柔的人呀(made志水给爷死)'}, {'tid': 7538578741, 'pid': 141289501668, 'user': '承认吧不如他们', 'text': '长期蹲收
周边\n四季fanbooks 初回等等'}}
iter: 6 len:46
{{'tid': 7562784179, 'pid': 141530994096, 'user': 'xjinda', 'text': '求问La chaleur du corut这广播剧有汉化什么的\nRT,我在阿b和A站都找不到这种广播剧的存在,还是看萌白才发现的\n还有我怎么发现我们没吧主了'}, {'tid': 7550013656, 'pid': 141403176244, 'user': '大雪天泡温泉', 'text': 'flowers春\n春篇每次卸载重装
,cg图,结局都没有了,有什么解决办法吗'}}
iter: 7 len:47
{{'tid': 7550013656, 'pid': 141403176244, 'user': '大雪天泡温泉', 'text': 'flowers春\n春篇每次卸载重装,cg图,结局都没有了,有什么解决办法吗'}, {'tid': 7538578741, 'pid': 141289501668, 'user': '承认吧不如他们', 'text': '长期蹲收周边\n四季fanbooks 初回等等'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}}
iter: 8 len:44
{{'tid': 7562784179, 'pid': 141530994096, 'user': 'xjinda', 'text': '求问La chaleur du corut这广播剧有汉化什么的\nRT,我在阿b和A站都找不到这种广播剧的存在,还是看萌白才发现的\n还有我怎么发现我们没吧主了'}, {'tid': 7538578741, 'pid': 141289501668, 'user': '承认吧不如他们', 'text': '长期蹲收周边\n四季fanbooks 初回等等'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}}
iter: 9 len:44
set()
建议反复请求接口然后对每页的所有tid集合排序去重做sequence equal以找出不同的tid
或许纯粹就是系统不稳定?
测试代码
import asyncio import time import aiotieba as tb async def main(): async with tb.Client('starry') as brow: pn = 17 threads = await brow.get_threads('flowers', pn, rn=50) prev_thread_set = set(threads) for i in range(10): threads = await brow.get_threads('flowers', pn=17, rn=50) print(f"iter: {i} len:{len(threads)}") curr_thread_set = set(threads) print(prev_thread_set ^ curr_thread_set) prev_thread_set = curr_thread_set time.sleep(2.0) asyncio.run(main())
iter: 0 len:46 {{'tid': 7540486498, 'pid': 141308918165, 'user': 'w伪物w', 'text': '谁有沙沙贵姐妹版本的chaleur资源吗\n'}, {'tid': 7545075701, 'pid': 141350946814, 'user': '_____没道理', 'text': '萌新看完冬有槽不吐不快~~\n花绝对不只是圣母在上的精神续作吧。\n绝对有致敬白2的成分在里面吧(尼美苦逼)\n最开始春里的等边三角形反 而和白学不同\n但是TM的“三人的歌”这种简直直接快进到雪菜真结局。\n从这个思路思考秋对应冬马真结局非常合理,两人背叛一切离开圣彗星兰和两个人背叛一切离开日本(精神错乱\n继续推理下去春的等边三角形真的太好了(高兴)(dogshit),不然就会是:明明。。。和擅自跑到。。。和想出这种酷刑。。。\n这么说来志水你还真是温柔的人 呀(made志水给爷死)'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}} iter: 1 len:45 {{'tid': 7540486498, 'pid': 141308918165, 'user': 'w伪物w', 'text': '谁有沙沙贵姐妹版本的chaleur资源吗\n'}, {'tid': 7562784179, 'pid': 141530994096, 'user': 'xjinda', 'text': '求问La chaleur du corut这广播剧有汉化什么的\nRT,我在阿b和A站都找不到这种广播剧的存在,还是看萌白才发现的\n还有我怎么发现我们没吧主 了'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}} iter: 2 len:47 {{'tid': 7550013656, 'pid': 141403176244, 'user': '大雪天泡温泉', 'text': 'flowers春\n春篇每次卸载重装,cg图,结局都没有了,有什么解决办法吗'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}} iter: 3 len:47 {{'tid': 7562784179, 'pid': 141530994096, 'user': 'xjinda', 'text': '求问La chaleur du corut这广播剧有汉化什么的\nRT,我在阿b和A站都找不到这种广播剧的存在,还是看萌白才发现的\n还有我怎么发现我们没吧主了'}, {'tid': 7550013656, 'pid': 141403176244, 'user': '大雪天泡温泉', 'text': 'flowers春\n春篇每次卸载重装 ,cg图,结局都没有了,有什么解决办法吗'}, {'tid': 7545075701, 'pid': 141350946814, 'user': '_____没道理', 'text': '萌新看完冬有槽不吐不快~~\n花绝对不只是圣母在上的精神续作吧。\n绝对有致敬白2的成分在里面吧(尼美苦逼)\n最开始春里的等边三角形反而和白学不同\n但是TM的“三人的歌”这种简直直接快进到雪菜真结局。\n从 这个思路思考秋对应冬马真结局非常合理,两人背叛一切离开圣彗星兰和两个人背叛一切离开日本(精神错乱\n继续推理下去春的等边三角形真的太好了(高兴)(dogshit),不然就会是:明明。。。和擅自跑到。。。和想出这种酷刑。。。\n这么说来志水你还真是温柔的人呀(made志水给爷死)'}, {'tid': 7538578741, 'pid': 141289501668, 'user': '承认吧不如他们', 'text': '长期蹲收周边\n四季fanbooks 初回等等'}} iter: 4 len:46 {{'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}} iter: 5 len:44 {{'tid': 7545075701, 'pid': 141350946814, 'user': '_____没道理', 'text': '萌新看完冬有槽不吐不快~~\n花绝对不只是圣母在上的精神续作吧。\n绝对有致敬白2的成分在里面吧(尼美苦逼)\n最开始春里的等边三角形反而和白学不同\n但是TM的“三人的歌”这种简直直接快进到雪菜真结局。\n从这个思路思考秋对应冬马真结局非常合理,两人 背叛一切离开圣彗星兰和两个人背叛一切离开日本(精神错乱\n继续推理下去春的等边三角形真的太好了(高兴)(dogshit),不然就会是:明明。。。和擅自跑到。。。和想出这种酷刑。。。\n这么说来志水你还真是温柔的人呀(made志水给爷死)'}, {'tid': 7538578741, 'pid': 141289501668, 'user': '承认吧不如他们', 'text': '长期蹲收 周边\n四季fanbooks 初回等等'}} iter: 6 len:46 {{'tid': 7562784179, 'pid': 141530994096, 'user': 'xjinda', 'text': '求问La chaleur du corut这广播剧有汉化什么的\nRT,我在阿b和A站都找不到这种广播剧的存在,还是看萌白才发现的\n还有我怎么发现我们没吧主了'}, {'tid': 7550013656, 'pid': 141403176244, 'user': '大雪天泡温泉', 'text': 'flowers春\n春篇每次卸载重装 ,cg图,结局都没有了,有什么解决办法吗'}} iter: 7 len:47 {{'tid': 7550013656, 'pid': 141403176244, 'user': '大雪天泡温泉', 'text': 'flowers春\n春篇每次卸载重装,cg图,结局都没有了,有什么解决办法吗'}, {'tid': 7538578741, 'pid': 141289501668, 'user': '承认吧不如他们', 'text': '长期蹲收周边\n四季fanbooks 初回等等'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}} iter: 8 len:44 {{'tid': 7562784179, 'pid': 141530994096, 'user': 'xjinda', 'text': '求问La chaleur du corut这广播剧有汉化什么的\nRT,我在阿b和A站都找不到这种广播剧的存在,还是看萌白才发现的\n还有我怎么发现我们没吧主了'}, {'tid': 7538578741, 'pid': 141289501668, 'user': '承认吧不如他们', 'text': '长期蹲收周边\n四季fanbooks 初回等等'}, {'tid': 7562646364, 'pid': 141529198191, 'user': 'xjinda', 'text': '求问La chaleur du corut这个广播剧有汉化吗\n其实不止汉化,我去阿b找都找不到这个广播剧'}} iter: 9 len:44 set()
大概是了,锑度日常技术力不足导致用户体验低下。建议库内部两套api(网页&客户端)相互校验帖子数量好了,我这几天写爬虫校验数据实在是蛋疼。再加上上一条issue还要忙,Starry-OvO辛苦了
网页端实在太恐怖了...验证码就是最大的问题
验证码就是最大的问题
然而我们的圣starry神的大手早已于半年前发威以土澳应用统计学带手子
@ControlNet 最爱的ML DL为抓手赋能从20年开始部署于百度各个网页端服务的图片旋转验证码系统: https://github.com/Starry-OvO/Rotate-Captcha-Crack/issues/4#issuecomment-1274054089
我这几天写爬虫校验数据实在是蛋疼
有没有可能,6年前我刚学php时就业已实现了对特定贴吧进行全员备份的需求(当时还没有19年4月b吧事件后增加的吧首页最多翻到10000主题帖hard limit): https://tieba.baidu.com/p/5016857216 而十几年前还有着 @索引越界 所开发的贴吧SQL统计工具: https://tieba.baidu.com/p/1220029153 https://tieba.baidu.com/p/1541534317 以及鸡血神 @bakasnow 所在的贴吧工具组织血色圣光联盟所开发的各种水贴爆吧机和早期贴吧管理器原型
因此我们不过是在重复十几年前8u们摸过的石头以重新挽回早已失传的古早失落文明
建议反复请求接口然后对每页的所有tid集合排序去重做sequence equal以找出不同的tid
或许纯粹就是系统不稳定?
事实核查:我这边也写了类似的:
(NOT EXISTS IN 1st/cur
的文本写反了,cur应该是1st,反之亦然,下同)
然而在500次尝试后都没有在rn=50
的第17页下找到不同请求之间的不同tid:
所以请问 @Starry-OvO 阁下请求的是POST c/f/frs/page?cmd=301001 { "data": { "kw": "flowers", "rn": 90, "rnNeed": 50, "qType": 2, "pn": 17, "common": { "ClientType": 2, "ClientVersion": "12.26.1.0" }, "sortType": 5 } }
吗?
然而我在改成Rn = 50, RnNeed = 50
后成功复现了类似starry神和finbrid所遇到的pattern:
None, NOT EXISTS IN 1st: 7545075701
None, NOT EXISTS IN cur: 7538578741
None, NOT EXISTS IN cur: 7538578741,7540486498
None, NOT EXISTS IN cur: 7538578741,7540486498,7550013656
None, NOT EXISTS IN cur: 7538578741,7540486498,7550013656,7562646364
None, NOT EXISTS IN cur: 7538578741,7540486498,7562784179
None, NOT EXISTS IN cur: 7538578741,7550013656
None, NOT EXISTS IN cur: 7538578741,7562646364
None, NOT EXISTS IN cur: 7540486498
None, NOT EXISTS IN cur: 7540486498,7550013656,7562784179
None, NOT EXISTS IN cur: 7540486498,7562646364
None, NOT EXISTS IN cur: 7540486498,7562646364,7562784179
None, NOT EXISTS IN cur: 7540486498,7562784179
None, NOT EXISTS IN cur: 7550013656
None, NOT EXISTS IN cur: 7550013656,7562646364
None, NOT EXISTS IN cur: 7550013656,7562784179
None, NOT EXISTS IN cur: 7562646364
None, NOT EXISTS IN cur: 7562784179
所以 @FinBird 贵吧的的这6个tid7545075701,7538578741,7540486498,7550013656,7562646364,7562784179
有什么特别之处吗?又是网页端/客户端投票贴那种区分?
或者说必须得让 $\text{rn\_need}>\text{rn}$ 才能保证不会这样随机分页?
req_proto.data.rn_need = rn if rn > 0 else 1
不要让 $rn\_need=rn$ ,我试出来的不就是Rn = 50, RnNeed = 50
吗?
rn (int, optional): 请求的条目数. Defaults to 30. Max to 100.
以及阁下试出来贴吧至多只返回100条主题帖了?
验证码就是最大的问题
然而我们的圣starry神的大手早已于半年前发威以
土澳应用统计学带手子
@ControlNet 最爱的ML DL为抓手赋能从20年开始部署于百度各个网页端服务的图片旋转验证码系统: Starry-OvO/Rotate-Captcha-Crack#4 (comment)
感觉好像挺强的,好好学习一下
req_proto.data.rn_need = rn if rn > 0 else 1
不要让 $rn\_need=rn$ ,我试出来的不就是
Rn = 50, RnNeed = 50
吗?
rn (int, optional): 请求的条目数. Defaults to 30. Max to 100.
以及阁下试出来贴吧至多只返回100条主题帖了?
v3.1.0仍然有问题,我这边rn=50时,取到吧里最后一页has_more==False ,统计出的threads数量差不多是原来的一半。治标不治本( @Starry-OvO
因为他写的req_proto.data.rn_need = rn if rn > 0 else 1
所以请求的是我试出来会遇到阁下最初遇到的状况的Rn = 50, RnNeed = 50
验证码就是最大的问题
然而我们的圣starry神的大手早已于半年前发威以
土澳应用统计学带手子
@ControlNet 最爱的ML DL为抓手赋能从20年开始部署于百度各个网页端服务的图片旋转验证码系统: Starry-OvO/Rotate-Captcha-Crack#4 (comment)感觉好像挺强的,好好学习一下
稍微小改了一下,误差从20°降低到了13°。 #rotate-captcha-crack/issues/6
土澳应用统计学家带手子文科生CN神发威了!
简要描述这个bug
get_threads
函数不能稳定取到正确的主题帖数量,需要调用多次才能返回正确的值。 部分页面甚至永远取不到正确的主题帖数量,且xpath.log没有任何输出。如何复现 下面以flowers吧前72页为例,在个人电脑以web端数据为参照,复现该问题:
你希望程序作出何种行为 get_page_thread_count('flowers', 57) == fuck('flowers', 57)
截图(可选)
...