rosynirvana / douyu_cli

Broken
MIT License
36 stars 6 forks source link

A workaround for you #4

Closed rosynirvana closed 7 years ago

rosynirvana commented 7 years ago

因为有人真的很需要这个

首先登陆,然后打开开发者工具

访问 DevTools 在 Windows 上 在 Mac 上
打开 Developer Tools F12、Ctrl + Shift + I Cmd + Opt + I

选择Network / 网络一栏,在左上角的搜索框里输入lapi/live 能看到一个筛选结果,没看到刷新页面

然后右键,copy as curl

如果环境里面没有curl,安装curl curl for windows 其他桌面环境自带curl

拷贝到终端里,windows的cmd,OS X的 其他/终端,运行 然后从返回结果里找到rtmp_url和rtmp_live两项,去掉rtmp_live中的转义字符,和rtmp_url中间用一个/连接起来,就是需要的url

{
    "error": 0,
    "data": {
        "mixed_live": "",
        "rtmp_cdn": "tct",
        "mixed_url": "",
        "rtmp_url": "http:\/\/tc-tct.douyucdn.cn\/dyliveflv3a",
        "ggad": {
            "play4": "",
            "play1": "",
            "videop": "",
            "play2": "",
            "play5": "",
            "play3": ""
        },
        "inNA": 0,
        "room_id": "557448",
        "rtmp_live": "557448rbwmEBQXFr_900.flv?wsAuth=598e5774052777595648db9ae6a2edd1&token=web-douyu-69458384-557448-21d04d26d7482d8a96dbb5857c3a0587&logo=0&expire=0&did=222B07A70764C98982D4114F786CE6F2&ver=2017071351",
        "is_mixed": false,
        "rateSwitch": 1
    }
}

Q & A:

lki2019 commented 7 years ago

大神,可不可以先弄个下载标清和调用mpv 本地观看斗鱼标清的,

@lki2019 只拿标清的话,用h5的接口就够了,目前是可以用的curl 'https://m.douyu.com/html5/live?roomId=2532616' -H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/602.1.38 (KHTML, like Gecko) Version/10.0 Mobile/14A300 Safari/602.1"{"error":0,"data":{"hls_url":"http://hls3.douyucdn.cn/live/2532616r63nY0kyr_550/playlist.m3u8?wsSecret=4d14ce4d3440607c3f1c6f2e4cf4aee0&wsTime=1500354950&did=&ver="}}

--

别人的评论,说H5接口就能解析标清?

那现在把你的脚本先改一下,可以解析标清,下载和本地播放被

毕竟你这个py脚本 可以直接一键播放和一键下载 很方便

至于高清 超清 现在没接口那就等等吧

再反馈下,我之前那个收费版的我今天传优酷时看了下,竟然有超清和高清的 也有标清的

不知道他接口怎么弄的 就是aid=dytool2 那个

lki2019 commented 7 years ago

curl for windows

额,32位还是收费的

下载不下来

rosynirvana commented 7 years ago

html5的只能看5分钟 你要看可能没问题,录大概就不行了吧

rosynirvana commented 7 years ago

收费的是with auto updates and sftp 本身不要收费的

lki2019 commented 7 years ago

我看见下面都是buy now

rosynirvana commented 7 years ago

buy now上面的三个按钮可以点

这个网站界面有点老式了

lki2019 commented 7 years ago

我知道,那几个点了 都下载不了 ··

rosynirvana commented 7 years ago

要先点左上角的recaptcha验证 不行就用curl自己的binary吧 https://curl.haxx.se/download.html https://curl.haxx.se/dlwiz/?type=bin&os=Win32&flav=-&ver=-

lki2019 commented 7 years ago

好像挺复杂的

qq 20170719152943

第5和第6个 都试了一下

cmd下运行了

返回的一堆东西 有乱码什么的 好像没你说的

lki2019 commented 7 years ago
403 Forbidden

403 Forbidden


nginx

D:\下载\curl-7.54.1\I386>

qq 20170719153240

lki2019 commented 7 years ago

这方法不是我等小白用户,

lki2019 commented 7 years ago

qq 20170719160007 本着研究的精神

我换了个猎豹浏览器 正常返回结果了

地址我自己组合了下,如何让返回结果排版成上面的样子? 把curl的结果pipe给js-beautify

不太懂你说的这个意思

地址得到了,我放到vlc和pot播放器都无法播放啊

lki2019 commented 7 years ago

大神向你反馈一下,我找到解决办法了。

urlhelper3.45 安装这个嗅探

嗅探出来的地址 和你这个办法类似

地址有了,如何下载和播放呢?

我测试了,IDM 维棠 都不行 ··

我用的旋风下载 可以下载,怎么播放呢,

把生成的文件 拖到pot 播放器里可以看····

rosynirvana commented 7 years ago

你sniff的是api的地址,从里面拼的url 还是直接sniff到flv的地址?

lki2019 commented 7 years ago

没有拼 直接得到的地址

2段

http://111.202.83.212/hdl1a.douyucdn.cn/live/446321rPuf1ED9C8_900.flv?wsAuth=b3aee634eafa86ab8566d93b47f6af00&token=web-douyu-113817806-446321-7b3c52331f28d518f91af58114b6183a&logo=0&expire=0&did=701917587FC32BCE0B4D2938C6C46B67&ver=2017071351&wshc_tag=0&wsts_tag=596f2872&wsid_tag=3a1240ec&wsiphost=ipdbm

http://hdl1a.douyucdn.cn/live/446321rPuf1ED9C8_900.flv?wsAuth=b3aee634eafa86ab8566d93b47f6af00&token=web-douyu-113817806-446321-7b3c52331f28d518f91af58114b6183a&logo=0&expire=0&did=701917587FC32BCE0B4D2938C6C46B67&ver=2017071351

复制的第1段到旋风上直接下载的

lki2019 commented 7 years ago

然后我又用这个嗅探软件 嗅了下 那个收费的录像软件

http://api.douyutv.com/api/v1/room/156277?aid=dytool2&time=1500459546&auth=a226240b8f6e62a5034384c7fcdd9ea8

【备注 auth=a226240b8f6e62a5034384c7fcdd9ea8 这个值如果主播没开播 几秒会自动变一下】

http://hdla.douyucdn.cn/live/156277r30pTWPXI4.flv?wsAuth=ae81fdbdc6dad4a58b2324355c8a6b4f&token=app-dytool2-0-156277-19d1df5afd98b506533e73d7d7cdab7c&logo=0&expire=0

http://60.5.252.73/hdla.douyucdn.cn/live/156277r30pTWPXI4.flv?wsAuth=ae81fdbdc6dad4a58b2324355c8a6b4f&token=app-dytool2-0-156277-19d1df5afd98b506533e73d7d7cdab7c&logo=0&expire=0&wshc_tag=0&wsts_tag=596f325d&wsid_tag=3a1240ec&wsiphost=ipdbm

lki2019 commented 7 years ago

所以我感觉 方法应该是类似的 只是收费的用的接口好像是token=app-dytool2-0-

正常抓到的是token=web-douyu-

rosynirvana commented 7 years ago

不明白 我的或别人的测试结果,一个cdn url只能访问一次 但你那里似乎不遵循这个限制

lki2019 commented 7 years ago

qq 20170719183944

复制那个前面有IP的 才可以下载,复制第一个无法下载

但是呢 这个60开的IP 我这里是无法下载的,别人用软件嗅出来的地址 IP是50开 或者其他开

然后发给我,我正常下载···

可能前面这个IP 有些会有限制 ,有些是不限制的?

可能是各个地区的用户 自动分配不同的服务器?

lki2019 commented 7 years ago

然后呢 我去嗅别的直播间 我就把第2个地址复制出来 然后吧前面的IP修改成我可以正常下载的IP比如50开的

后面一长串不变

这样正常下载了

说明还是前面那个IP 很关键····

rosynirvana commented 7 years ago

你之前用potplayer看的是哪种地址?

lki2019 commented 7 years ago

qq 20170719192425

7月8号之前都是用ydkl 解析出来的地址 直接pot上看的 ,9号就不行了

lki2019 commented 7 years ago

今天嗅探出来的地址 我也试着在pot VLC上看,都看不了···

只能下载 不能看,

现在观看 只能通过生成的录像文件打开看,和直播有5 ,6妙的延时···

lki2019 commented 7 years ago

在给你反馈一下我的测试

qq 20170719193149 qq 20170719193053

直接IDM嗅探出的地址 ,我开第一个直播间前面IP是202开的 无法下载

换了个直播间 是58开的 点下载 会出现无法下载 然后从下载栏右键继续下载 就可以了

地址是这个http://58.55.123.50/hdl3a.douyucdn.cn/live/68632rqNrKO4NwmJ_900.flv?wsAuth=f9837502e71020c88c152c94fd4736fa&token=web-douyu-113817806-68632-da12c6e083cc11df18f5f4419d74848d&logo=0&expire=0&did=701917587FC32BCE0B4D2938C6C46B67&ver=2017071351&wshc_tag=0&wsts_tag=596f4322&wsid_tag=1b48424&wsiphost=ipdbm

rosynirvana commented 7 years ago

斗鱼有三种服务器

type url pattern stateful or stateless 验证内容
api https://www.douyu.com/lapi/live/getPlay/ stateless 只验证payload中的checksum
dispatcher http://*/douyucdn.cn/ stateful 验证token,token在验证后失效
cdn http://{IP_ADDR}/*/ stateless 可能验证UA和其他,也可能不验证

你描述的以IP开头的url是第三种,有些软件能访问,有些不行,可以访问多次,这些属于预期内 为什么之前potplayer能访问dispatcher就不知道了

lki2019 commented 7 years ago

我在大胆推测下,

我是联通,

这个58开 和上次那个50开 我查了下都是电信IP

而我无法下载的 那几个IP我看了下是联通IP,我把联通IP前缀换成电信IP就正常下载了

有什么猫腻么?

lki2019 commented 7 years ago

根据 以上的测试,

大神能否吧py脚本修改一下,可以下载呢?这样我批处理直接一键就可以录制了

播放目前测试的情况好像都不能直接用地址播放,只能从生成的录像文件传到播放器这样看

rosynirvana commented 7 years ago

修改脚本要有一个能用的接口啊

至于你的有些软件能用有些软件不能用,看上面那个表格吧

lki2019 commented 7 years ago

在反馈一下,

我传到网盘那个那个录像软件 就是只可以录制标清的

我抓了下

http://hls3.douyucdn.cn/live/10903rd9qlyyWL6p_550/playlist.m3u8?wsSecret=5c02ebdd79aa3a8e184cd321095ece10&wsTime=1500462345&did=&ver=

http://hls3.douyucdn.cn/live/10903rd9qlyyWL6p_550/507356.ts?wsApp=HLS&wsMonitor=-1

http://hls3.douyucdn.cn/live/10903rd9qlyyWL6p_550/507357.ts?wsApp=HLS&wsMonitor=-1


http://hls3.douyucdn.cn/live/10903rd9qlyyWL6p_550/playlist.m3u8?wsSecret=5c02ebdd79aa3a8e184cd321095ece10&wsTime=1500462345&did=&ver=

http://hls1a.douyucdn.cn/live/431972rWhhgguw35_550/playlist.m3u8?wsSecret=c5cb0d7d031662d123214988c8495103&wsTime=1500462531&did=&ver=

http://hls1a.douyucdn.cn/live/431972rWhhgguw35_550/507415.ts?wsApp=HLS&wsMonitor=-1

http://hls1a.douyucdn.cn/live/431972rWhhgguw35_550/playlist.m3u8?wsSecret=c5cb0d7d031662d123214988c8495103&wsTime=1500462531&did=&ver=

2个房间 格式类似··

他这个是利用的什么?

rosynirvana commented 7 years ago

html5 你用这个能超过5分钟吗?

lki2019 commented 7 years ago

可以的,

lki2019 commented 7 years ago

![Uploading QQ图片20170719201733.png…]() 11111

222222222222

3333333333

111111111111122222

我前几天我就测试了,录制1个多小时也没问题··

Justsoos commented 7 years ago

@lki2019 是另一个次元,发生很多不一样的事。哈哈哈

其实你自己可以改一下脚本,从F12里copy curl的东西就是可用地址

lki2019 commented 7 years ago

@Justsoos 我我从17号那天大部分录像软件GG时,我手里依然有2款可以录制的,

只是想命令行下方便点,一键本地播放或者录制,所以才给大神们提供点测试呀

Justsoos commented 7 years ago

@lki2019 也许你运气好了那么2,3天,正赶上斗鱼全面部署的窗口,多用几天。窗口一过,你也一样被封了。

lki2019 commented 7 years ago

@Justsoos 额,今天196无头怪的粉丝已经更新出来了

作者:网盘已更新2.0.1版本, 仅作了针对本次加密算法变动的修复。32位版本暂无, 因为弄环境比较麻烦, 不打算花那个时间..

qq 20170719202835

rosynirvana commented 7 years ago

更新了 不过我这里是5分钟限制

lki2019 commented 7 years ago

我用你更新的这个 也是5分钟录制就不行了 可是我用传网盘那个是可以一直录制的,我上面也截图了, 什么原因呢?

rosynirvana commented 7 years ago

你是用ffmpeg录的吗,还是软件内部的功能

lki2019 commented 7 years ago

打开软件 添加网址,解析 录制

lki2019 commented 7 years ago

wsTime=1500462531 他的是这个

你的是这个wsTime=1500465213

其他格式都是类似的

rosynirvana commented 7 years ago

因为斗鱼CDN的验证机制是傻的…… 甚至可以拿到原画质的……

http://hls3.douyucdn.cn/live/3484r6QnwW1QEoxu/508284.ts?wsApp=HLS&sMonitor=-1

lki2019 commented 7 years ago

链接: https://pan.baidu.com/s/1pLRsXsv 密码: ctz6

你测试下吧,

我看格式都是类似的啊,为什么你的智能录制5分钟 我看他也是用ffmpeg的 因为目录下有

打开软件任务,新建任务 https://www.douyu.com/2135293 这个正在直播 就拿这个测试

8999999 54331111 123444

rosynirvana commented 7 years ago

我知道怎么做,但是不知道是不是可靠

lki2019 commented 7 years ago

恩 等你更新我在帮你测试

Justsoos commented 7 years ago

如一楼试了,不行,返回都是 403

curl "https://www.douyu.com/lapi/live/getPlay/262877" -H "Pragma: no-cache" -H "Origin: https://www.douyu.com" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Langua ge: zh-CN,zh;q=0.8,en;q=0.6" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: */*" -H "Cache-Control: no-cache" -H "X-Requested-With: ShockwaveFlash/26.0.0.137" -H "Cookie: acf_devid=1a0889fc4c7452e227dc6ab68ca7f704; CNZZDATA1257184460=1807295081-1483674156-http^%^253A^%^252F^%^252Fwww.jianshu.com^%^252F^%^7C1488158673; acf_ditchName=bbt; acf_auth=99aftP7Ag^%^2FzmDXRrNzHzvFrUttWh8R3qxubKbOrga5RPBys4WZqAYNEE5oF2MaO^%^2BWL8OCadcyeGJAgc0CtAwB4wdygKDj^%^2BcUBX24LgU1I18e0FVnwWHi3to; wan_auth37wan=d5c392386fa3sBCSpXUeyL5nbGxCeTJ5sr9SwULZDRPwYz0kOx^%^2BDKZukmasBjhXuS2yGkfeHF8BqHSNXXcVdxnv1k8EQ0Q7aOfHSLdixyGll^%^2BSqT; acf_uid=1973891; acf_username=qq_bx7Z9H43; acf_nickname=^%^E5^%^93^%^A6^%^E5^%^93^%^A6^%^E5^%^93^%^A6^%^E5^%^93^%^A6^%^E5^%^93^%^A6^%^E6^%^81^%^A9; acf_own_room=0; acf_groupid=1; acf_phonestatus=1; acf_ct=0; acf_ltkid=82044920; acf_biz=1; acf_stk=24638be6041ace95; PHPSESSID=g0v36euvpntg165ps9qe2smh47; _dys_lastPageCode=page_studio_dzh,page_studio_dzh; _dys_refer_action_code=init_page_studio_dzh; smidV2=20170719204646ca8585f2b7e7e60cc04571758c2c1bf03533fcce88a671260; acf_did=10393286487835C67A6638DC955E6D18; Hm_lvt_e99aee90ec1b2106afe7ec3b199020a7=1500312020,1500386558,1500390521,1500467954; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=1500468821" -H "Connection: keep-alive" -H "Referer: https://www.douyu.com/DGR666" -H "DNT: 1" --data "cptl=0001^&did=10393286487835C67A6638DC955E6D18^&rate=2^&cdn=^&sign=0f510ff7b6c130e9c943088d9d63ff42^&ver=2017071351^&tt=25007813" --compressed

lki2019 commented 7 years ago

@Justsoos 大哥我上面说的很清楚啊,谷歌浏览器不行,返回403 至于为什么 我不清楚 换个浏览器就返回正常了,我换的猎豹浏览器,

Justsoos commented 7 years ago

猎豹就是抄的chrome 代码啊,国产流氓,金山全家桶。 试着装了一下猎豹,对比了一下,的确能用了: curl "http://www.douyu.com/lapi/live/getPlay/262877" -H "Cookie: smidV2=201707192134308666f4d352b6bb4a2829009d3f174608ecac59a94a6a24680; _dys_lastPageCode=page_studio_dzh,; _dys_refer_action_code=init_page_studio_dzh; acf_did=CF6B11E8BC329EFD6098EF74DBDD2F93" -H "Origin: http://www.douyu.com" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.8" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 LBBROWSER" -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: */*" -H "Referer: http://www.douyu.com/DGR666" -H "X-Requested-With: ShockwaveFlash/20.0.0.306" -H "Connection: keep-alive" --data "cdn=&ver=2017071351&sign=57fb38be1af9f331de285b075e74e7e3&rate=0&tt=25007854&cptl=0001&did=CF6B11E8BC329EFD6098EF74DBDD2F93" --compressed

lki2019 commented 7 years ago

所以我也不清楚为啥谷歌浏览器会返回403 猎豹就反正正常 但是这样方法得到的地址,你也无法播放和下载啊

Justsoos commented 7 years ago

其实这个就是 swf 内部加密之后返回的 api 地址,但一般来说,这个 api 是带token的,只能用一次 -- 被浏览器内的 swf 用过了 -- 所以chrome 返回403 不奇怪,猎豹能返回数据就奇怪了。

@lki2019 返回数据拼接起来,就是可用的下载或者mpv播放链接了。