HFrost0 / bilix

⚡️Lightning-fast async download tool for bilibili and more
Apache License 2.0
1.6k stars 166 forks source link

部分浏览器的SESSDATA需要encode #112

Closed boholder closed 1 year ago

boholder commented 1 year ago
bilix s --cookie "****" https://www.bilibili.com/bangumi/play/ep21265 --debug
DEBUG    Debug on, more information will be shown
DEBUG    CLI KEY METHOD and OPTIONS: {'cookie': '****', 'method': 's', 'keys':
         ('https://www.bilibili.com/bangumi/play/ep21265',), 'videos_dir': 'videos', 'quality': 0, 'video_concurrency':
         3, 'part_concurrency': 10, 'days': 7, 'num': 10, 'order': 'pubdate', 'keyword': None, 'series': True,
         'hierarchy': True, 'image': False, 'subtitle': False, 'dm': False, 'only_audio': False, 'p_range': None,
         'codec': '', 'speed_limit': None, 'stream_retry': 5}
DEBUG    kwarg speed_limit:None has been drop due to type hint missmatch
DEBUG    auto assemble <bound method DownloaderBilibili.get_series of
         <bilix.download.downloader_bilibili.DownloaderBilibili object at 0x0000025CE274FE50>> by {'quality': 0,
         'hierarchy': True, 'image': False, 'subtitle': False, 'dm': False, 'only_audio': False, 'p_range': None,
         'codec': ''}
WARNING  轻音少女 第一季:第4话 住宿集训!-4 需要大会员或该地区不支持
......

现在输入大会员cookie后,Bilibili会只下载非会员也能看的第一集,其他集数则响应需要大会员或该地区不支持。我进行了以下排查:

  1. 我的SESSDATA不够新?刚买的大会员。操作:登出,清浏览器缓存,登录。确实换到了新SESSDATA值,但报错依旧。
  2. 连接走了代理?关代理,报错依旧,开全局,下载第一集也会报需要大会员或该地区不支持。看来我的规则没错,连Bili是直连的。

基于此我怀疑校验机制变了,但我不知道怎么进一步研究,故报告一下,望有兴趣的朋友继续研究。

HFrost0 commented 1 year ago

我没能复现,首先检查一下你使用的终端是不是windows的命令提示符

boholder commented 1 year ago

我没能复现,首先检查一下你使用的终端是不是windows的命令提示符

是的,是cmd.exe。就很迷惑,等我过几天再试试?没准儿今天买的大会员,他们内部要跑个批量任务做权限同步呢?

HFrost0 commented 1 year ago

不,这不是b站的问题,因为命令提示符不支持引号包裹,你的cookie用引号包裹了,所以正确的cookie没有被传入client。解决办法就是使用powershell(如果用windows terminal可以更美观)

类似 #53 #104

boholder commented 1 year ago

不,这不是b站的问题,因为命令提示符不支持引号包裹,你的cookie用引号包裹了,所以正确的cookie没有被传入client。解决办法就是使用powershell(如果用windows terminal可以美观)

PS ..\bilix> bilix s --cookie "9***2" https://www.bilibili.com/bangumi/play/ep21266 --debug
DEBUG    Debug on, more information will be shown
DEBUG    CLI KEY METHOD and OPTIONS: {'cookie': '9***2', 'method': 's', 'keys':
         ('https://www.bilibili.com/bangumi/play/ep21266',), 'videos_dir': 'videos', 'quality': 0, 'video_concurrency':
         3, 'part_concurrency': 10, 'days': 7, 'num': 10, 'order': 'pubdate', 'keyword': None, 'series': True,
         'hierarchy': True, 'image': False, 'subtitle': False, 'dm': False, 'only_audio': False, 'p_range': None,
         'codec': '', 'speed_limit': None, 'stream_retry': 5}
DEBUG    kwarg speed_limit:None has been drop due to type hint missmatch
DEBUG    auto assemble <bound method DownloaderBilibili.get_series of
         <bilix.download.downloader_bilibili.DownloaderBilibili object at 0x0000019578FA1090>> by {'quality': 0,
         'hierarchy': True, 'image': False, 'subtitle': False, 'dm': False, 'only_audio': False, 'p_range': None,
         'codec': ''}
WARNING  轻音少女 第一季:第2话 乐器!-2 需要大会员或该地区不支持
WARNING  轻音少女 第一季:第3话 特训!-3 需要大会员或该地区不支持
WARNING  轻音少女 第一季:第4话 住宿集训!-4 需要大会员或该地区不支持
WARNING  轻音少女 第一季:第5话 顾问!-5 需要大会员或该地区不支持
INFO     提示:用户中断,重复执行命令可继续下载

嗯。。。换ps不行

boholder commented 1 year ago

要不我用python调包debug看看?但是加了--debug也没有报红,感觉没出exception吧。

HFrost0 commented 1 year ago

先看看网页端能否正常播放,不行的话就等等吧,因为我也不知道咋回事了😂

boholder commented 1 year ago

先看看网页端能否正常播放,不行的话就等等吧,因为我也不知道咋回事了😂

网页端是能的,我再看看吧,反正就当15块钱帮bili垫点运营商专线费用了。。

HFrost0 commented 1 year ago

这个问题实际上就是bilix/api/bilibili:get_video_info中没有解析到vedio_info.dash引发的,有能力可以debug下

boholder commented 1 year ago

这个问题实际上就是bilix/api/bilibili:get_video_info中没有解析到vedio_info.dash引发的,有能力可以debug下

debug结果(多测试了几部:https://www.bilibili.com/bangumi/play/ep429349, https://www.bilibili.com/bangumi/play/ep21265):

🤔算了,过几天再试试

boholder commented 1 year ago

@HFrost0 破案了,是SESSDATA要传URL encode格式的。昨天的值encode之后也成功了。要不你改下README说明一下这个? 是这样,我平时用Firefox,它的dev tool里cookie是非encode格式的。今天换Chrome,它的dev tool里的cookie是encode。。

HFrost0 commented 1 year ago

可以开个PR补充一下文档