转载:
http://430.io/-xie-dou-yu-tv-web-api-some-douyutv-api/

写在最前
去年TI5前开发了dotaonly.com,网站需要用到各个直播平台API。不像国外网站Twitch那样开放,都有现成的API可用,国内网站都很封闭,对开发者不太友好。本文所涉及API皆抓取自斗鱼IOS手机客户端。

首先是不需要登录的API
获取当前全部直播
请求地址:

http://capi.douyucdn.cn/api/v1/live?limit=20&offset=0 

参数:
limit: 一次获取的个数
offset:起始位置,比如要获取前20个之后的 offset=20, 下同
返回数据

{"error": 0,"data": [{"room_id": "16101","room_src": "http://rpic.douyucdn.cn/z1602/22/16/16101_160222165702.jpg","cate_id": "1","room_name": "微笑:  过节就应该带妹!","show_status": "1","subject": "","show_time": "1456126421","owner_uid": "391270","specific_catalog": "weixiao","specific_status": "1","vod_quality": "0","nickname": "微笑","online": 1075780,"url": "/weixiao","game_url": "/directory/game/LOL","game_name": "英雄联盟","child_id": "28","fans": "936235"}]
}

获取父频道
请求地址:

http://capi.douyucdn.cn/api/v1/getColumnList

部分返回数据:

 {"error": 0,"data": [{"cate_id": "1","cate_name": "游戏","short_name": "game","orderdisplay": "1","is_relate": "1","is_del": "0","push_ios": "1","push_show": "0"},{"cate_id": "9","cate_name": "手机游戏","short_name": "sjyx","orderdisplay": "2","is_relate": "1","is_del": "0","push_ios": "1","push_show": "0"}]}

获取子频道
请求地址:

http://capi.douyucdn.cn/api/v1/getColumnDetail?shortName=game

参数:
shortName: 父频道名字,来自上一个请求返回数据中的short_name
部分返回数据:

{"error": 0,"data": [{"tag_id": "134","short_name": "wsm","tag_name": "玩数码","pic_name": "7c855c7fa9c8c03697ee61748999d112.jpg","icon_name": "a3f49c62bd6156b358a275a07a5b95dd.jpg","orderdisplay": "126","rank_score": "0","night_rank_score": "0","nums": "0","push_ios": "1","push_home": "1","is_game_cate": "0","cate_id": "3","is_del": "0","is_relate": "1","pic_url": "http://staticlive.douyutv.com/upload/game_cate/7c855c7fa9c8c03697ee61748999d112.jpg","url": "/directory/game/wsm","icon_url": "http://staticlive.douyutv.com/upload/game_cate/a3f49c62bd6156b358a275a07a5b95dd.jpg","count": 15,"count_ios": 8},{"tag_id": "136","short_name": "car","tag_name": "玩汽车","pic_name": "6b83cf650fb4ba62881c9c528ab602d5.jpg","icon_name": "ade2b45ee56831c3b100a436b8c2f624.jpg","orderdisplay": "127","rank_score": "0","night_rank_score": "0","nums": "0","push_ios": "1","push_home": "1","is_game_cate": "0","cate_id": "3","is_del": "0","is_relate": "1","pic_url": "http://staticlive.douyutv.com/upload/game_cate/6b83cf650fb4ba62881c9c528ab602d5.jpg","url": "/directory/game/car","icon_url": "http://staticlive.douyutv.com/upload/game_cate/ade2b45ee56831c3b100a436b8c2f624.jpg","count": 4,"count_ios": 2}]
}

获取父频道所有直播列表
请求地址:
http://capi.douyucdn.cn/api/v1/getColumnRoom/?limit=20&offset=0
参数:
cate_id: 父频道id
limit
offset
返回数据:

{"error": 0,"data": [{"room_id": "536341","room_src": "http://rpic.douyucdn.cn/z1602/22/17/536341_160222172043.jpg","cate_id": "134","room_name": "22日晚5点30分MWC现场探馆看产品","show_status": "1","subject": "","show_time": "1456132678","owner_uid": "38598100","specific_catalog": "","specific_status": "0","vod_quality": "0","nickname": "ZOL中关村在线","online": 1969,"child_id": "0"},{"room_id": "279558","room_src": "http://rpic.douyucdn.cn/z1602/22/17/279558_160222171918.jpg","cate_id": "136","room_name": "[24H斗鱼第一专业车评]陈震YYP选车","show_status": "1","subject": "","show_time": "1455963983","owner_uid": "18462494","specific_catalog": "","specific_status": "0","vod_quality": "0","nickname": "金叔2015","online": 12304,"child_id": "0"}]
}

获取子频道直播列表
请求地址:
http://capi.douyucdn.cn/api/v1/live/?&limit=1&offset=0
参数:
tag_id: 子频道id
limit
offset
返回数据:

{
"error": 0,
"data": [
{
"room_id": "536341",
"room_src": "http://rpic.douyucdn.cn/z1602/22/17/536341_160222172043.jpg",
"cate_id": "134",
"room_name": "22日晚5点30分MWC现场探馆看产品",
"show_status": "1",
"subject": "",
"show_time": "1456132678",
"owner_uid": "38598100",
"specific_catalog": "",
"specific_status": "0",
"vod_quality": "0",
"nickname": "ZOL中关村在线",
"online": 5700,
"url": "/536341",
"game_url": "/directory/game/wsm",
"game_name": "玩数码",
"child_id": "0",
"fans": "4084"
}
]
}

获取房间信息
请求地址:
http://capi.douyucdn.cn/api/v1/room/?aid=android&client_sys=android&time=&auth=c0a6170a754ca187e8a52a3343ecf273
参数:
roomid: 房间ID
time: unixtime/1000
auth: md5(“room/”+roomid+”?aid=android&clientsys=android&time=”+1231) 注意:time要和上面一致,android也不能改成ios
插曲[不重要可以跳过不看]:为了查找auth的算法,我先是反编译了斗鱼的apk,结果他们把算法藏在了JNI里,随后尝试反汇编找出来的Share Object,无果。然后在斗鱼网页里的javascript里各种找,也没有,不过发现网页里也有一条类似的API,是从swf里发出的。之后去逐个反编译斗鱼网页里的swf,发现核心的core.swf是被加密了的,好在webroom.swf里找到了解密逻辑。解密后找到一个算sign/auth的function,然而没看懂,是一种变形的C。。最后的最后我在github上搜了一下之前解密用的key,发现之前果然有大神找到了auth算法,附链接。拿到算法,玩了一圈发现必须是这个格式才行,把android换成ios就会验证失败。
返回数据:

{"error": 0,"data": {"room_id": "58428","room_src": "http://rpic.douyucdn.cn/z1602/23/23/58428_160223234559.jpg","cate_id": "3","room_name": "yyf直播间  电子竞技只有锤!","vod_quality": "0","show_status": "2","show_time": "1456221459","owner_uid": "236231","specific_catalog": "","specific_status": "1","online": 0,   // 这个是在线人数,虽然比较虚"nickname": "yyfyyf","url": "/58428","game_url": "/directory/game/DOTA2","game_name": "DOTA2","game_icon_url": "http://staticlive.douyutv.com/upload/game_cate/bfe845a28fef8106cf645ed3b83aa375.jpg","rtmp_url": "",   //如果再直播会有,我抓这个时候鱼鱼枫已经被怼的下播了"rtmp_live": "","rtmp_cdn": "","rtmp_multi_bitrate": [],"hls_url": "","servers": [   //这个就比较重要了,这个是弹幕验证服务器列表!弹幕相关的socket加密解密源代码我也找到了。如有需求请留言,我看情况发出来。{"ip": "119.90.49.93","port": "8063"},....略],"use_p2p": "0","room_dm_delay": 30,"black": [],"show_details": "yyf贴吧: http://tieba.baidu.com/f?kw=yyf&fr=ala0&tpl=5\n新浪微博: http://www.weibo.com/u/2176141495/home?wvr=5","owner_avatar": "http://uc.douyutv.com/avatar.php?uid=236231&size=big","cdns": [],"owner_weight": "304.67t",   //主播体重"fans": "492867",             //这个应该是关注数。"gift": [                  //一些礼物信息{"id": "59","name": "火箭","pc": "50000","type": "2","gx": 5000,"desc": "赠送网站广播并派送出神秘宝箱","intro": "我们的征途是星辰大海","ef": 1,"pimg": "http://staticlive.douyutv.com/upload/dygift/447b61f6c0d6890d4490a90d0bdbf8bc.png","mimg": "http://staticlive.douyutv.com/upload/dygift/ab957377200959761121a3791a54b9b7.png","cimg": "http://staticlive.douyutv.com/upload/dygift/7dce6b2170eebecf85596b47370217ce.gif","himg": "http://staticlive.douyutv.com/upload/dygift/7f0643700d331aca31a6f6ea255e323e.gif","stay_time": 200000,"drgb": "","urgb": "#732909","grgb": "#732909","brgb": "#5861b5","pdbimg": "http://staticlive.douyutv.com/upload/dygift/005786105dd86e3964732e7fc2fc2085.png","pdhimg": "http://staticlive.douyutv.com/upload/dygift/6ffb9bc8d35d315943ae117dc788824e.gif","small_effect_icon": "http://staticlive.douyutv.com/upload/dygift/75e55aae938fc703d977e8c966fef91d.png","big_effect_icon": "http://staticlive.douyutv.com/upload/dygift/40f964e70faa46923dcc4c4931bbac8f.gif","pad_big_effect_icon": "http://staticlive.douyutv.com/upload/dygift/ccffe8c6453074a68be1730802203241.gif"},...略]}
}

搜索直播间
请求地址:
http://capi.douyucdn.cn/api/v1/searchNew//1?limit=1&offset=0
参数:
search_string: 要搜索的内容,房间id或者房间名
limit: offset:
返回数据:

{"error": 0,"data": {"count": 299,"room": [{"room_id": "73327","room_src": "http://rpic.douyucdn.cn/z1602/24/02/73327_160224021924.jpg","cate_id": "134","room_name": "返回Windows写个博客","show_status": "1","subject": "","show_time": "1456244441","owner_uid": "2154075","specific_catalog": "dotaonly","specific_status": "1","vod_quality": "0","nickname": "ShaneX","online": 5,"child_id": "0","url": "/dotaonly","game_url": "/directory/game/wsm","game_name": "玩数码","fans": "2490"}]}
}

以上就是我觉着有用的不用登陆可获取API,下面是需要登陆的

需登陆可用的API
获取登陆token
请求地址:
http://capi.douyucdn.cn/api/v1/login?username=&password=
参数:
username: 用户名
passwordmd5: 密码的md5
返回数据:

{"error": 0,"data": {"uid": "2154075","username": "auto_beKEugHSJv","nickname": "ShaneX","email": "245****@qq.com",  //不知道斗鱼为何要遮蔽邮箱以及下面的电话"qq": "","mobile_phone": "150****3913","phone_status": "1","email_status": "1","lastlogin": "1455383420","avatar": {  //头像"small": "http://uc.douyutv.com/avatar.php?uid=2154075&size=small","middle": "http://uc.douyutv.com/avatar.php?uid=2154075&size=middle","big": "http://uc.douyutv.com/avatar.php?uid=2154075&size=big"},"has_room": "1", //是否是直播"groupid": "1","is_own_room": "1","gold1": "4772",  //鱼丸数"score": "117020", //经验值"level": {"current": {"lv": 12,"pic": "user12.gif","mpic": "gold05.png","name": "黄金5","pic_url": "http://staticlive.douyutv.com/common/douyu/images/classimg/user12.gif?v=v26185","score": 100000},"next": {"lv": 13,"pic": "user13.gif","mpic": "gold04.png","name": "黄金4","pic_url": "http://staticlive.douyutv.com/common/douyu/images/classimg/user13.gif?v=v26185","score": 150000}},"follow": "35","ios_gold_switch": 1,"gold": "372.4", //鱼翅"token": "a**********a",  //token!"token_exp": 1457111772 //过期时间,十天}
}

获取个人信息
请求地址:
http://capi.douyucdn.cn/api/v1/my_info?token=
参数:
token: 登陆token
返回数据:

和上面的一毛一样。

获取关注列表
请求地址:
http://capi.douyucdn.cn/api/v1/remind_list?token=&limit=1&offset=1
参数:
token:
limit:
offset:
请求地址2:
http://capi.douyucdn.cn/api/v1/followRoom?token=&live=1
参数:
token:
live: 1是正在直播的,0是没开直播的
返回数据:

{
"error": 0,
"data": [{"id": "163643","room_id": "163643","room_src": "http://rpic.douyucdn.cn/z1602/24/00/163643_160224001525.jpg","cate_id": "26","nickname": "蓝天上的流云","show_status": "2","owner_uid": "4773042","name": "【流云红警】一个人默默地直播,5555~","game_tag_id": "26","game_tag_name": "怀旧游戏","owner": "蓝天上的流云","owner_avatar_small": "http://uc.douyutv.com/avatar.php?uid=4773042&size=small","owner_avatar_middle": "http://uc.douyutv.com/avatar.php?uid=4773042&size=middle","owner_avatar_big": "http://uc.douyutv.com/avatar.php?uid=4773042&size=big","remind_status": "0","live_status": "2","online": 0,"show_time": "1456238974","fans": "47425"}
]
}

取消关注
【POST】请求地址:
http://capi.douyucdn.cn/api/v1/follow/del

参数:
ids: 要取消关注的列表, e.g.:123,321,132
返回数据:

{"error": 0,"data": [20360, 184219]
}

获取观看历史
请求地址:
http://capi.douyucdn.cn/api/v1/history?token=
参数:
token:
返回数据:

{"error": 0,"data": [{"room_id": "73327","room_src": "http://rpic.douyucdn.cn/z1602/24/01/73327_160224015628.jpg","cate_id": "134","room_name": "返回Windows写个博客","show_status": "1","subject": "","show_time": "1456244441","owner_uid": "2154075","specific_catalog": "dotaonly","specific_status": "1","vod_quality": "0","nickname": "ShaneX","online": 4,"child_id": "0","url": "/dotaonly","game_url": "/directory/game/wsm","game_name": "玩数码","rid": "73327","oid": "2154075","n": "返回Windows写个博客","lt": "1456246497","uc": "5","ls": "1","on": "ShaneX","fans": "2489"}]
}

斗鱼TV Web API相关推荐

  1. 用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传...

    第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三 ...

  2. 高仿斗鱼TV直播APP源码推荐

    菜鸟窝官网实战课程文章编辑招募中,如有兴趣加入可免费学习实战课程,联系方式:添加菜鸟君微信:keely-jzx 高仿斗鱼TV项目, 项目架构采用MVP模式,使用Retorfit2.0+RxJava1. ...

  3. Web Api学习一

    接触WebApi读的第一篇文章: ASP.NET Web API(一):使用初探,GET和POST数据 实践过程中,用的Fiddler模拟Post请求时收到的对象总是为空null 解决:将文章中的内容 ...

  4. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

  5. (四)Asp.net web api中的坑-【api的返回值】

    (四)Asp.net web api中的坑-[api的返回值] 原文:(四)Asp.net web api中的坑-[api的返回值] void无返回值 IHttpActionResult HttpRe ...

  6. WCF 和 ASP.NET Web API

    地址:https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/wcf-and-aspnet-web-api WCF 是 Microsoft 为生成面 ...

  7. 【Web API系列教程】1.2 — Web API 2中的Action Results

    前言 本节的主题是ASP.NET Web API怎样将控制器动作的返回值转换成HTTP的响应消息. Web API控制器动作能够返回下列的不论什么值: 1. void 2. HttpResponseM ...

  8. Dynamics CRM2016 Web API之创建记录

    前篇介绍了通过primary key来查询记录,那query的知识点里面还有很多需要学习的,这个有待后面挖掘,本篇来简单介绍下用web api的创建记录. 直接上代码,这里的entity的属性我列了几 ...

  9. ASP.NET Web API自身对CORS的支持:从实例开始

    在<通过扩展让ASP.NET Web API支持W3C的CORS规范>中我们通过自定义的HttpMessageHandler为ASP.NET Web API赋予了跨域资源共享的能力,具体来 ...

  10. oracle web API,在Web API程序中使用Swagger做接口文档

    #### 创建Web API程序 在VS2019中创建一个ASP.NET Web应用程序,选择Web API来创建RESTful的HTTP服务项目,构选MVC和Web API核心引用. #### 安装 ...

最新文章

  1. 浅析「扣减库存」的方案设计
  2. PICRUSt2:OTU或ASV等16S随便预测宏基因组且数据库增加10倍
  3. 怎样用modelsim做后仿真
  4. 浙江理工大学2019年1月赛
  5. 2022年Python数据分析的宝藏地带
  6. 【接口测试】【postman】postman通过脚本获取Token并自动加入请求头实现Token的参数化
  7. sybase数据库导出mysql_使用BCP从Sybase远程数据库中导出数据
  8. 华为虚拟一键部署服务器,一键部署云服务器
  9. 《剑指Offer》52:两个链表的第一个公共节点
  10. WordPress5.7版本下载及更新内容
  11. RK3308(2) --- 上手教程
  12. Iterator(迭代器)-对象行为型模式
  13. Bugku 杂项刷题日常1--21:
  14. 云中漫步——迎接云计算时代的到来
  15. 进程,线程,协程的区别与联系
  16. Python在数学建模中的简单运用
  17. 谈谈我对《ThoughtWorks文集》中多语言开发部分的看法
  18. matlab幂级数展开的收敛区间,常见函数的幂级数展开式收敛区间的快速确定法.pdf...
  19. 超高频RFID通道门禁 仓储物流收发货系统应用
  20. B站视频保存到本地电脑的步骤

热门文章

  1. 小米路由pro php,小米路由器开启frp
  2. web系统服务器登录不上去,宝塔面板严重错误登录不上怎么办
  3. 做好固定资产管理,提升行政的工作绩效
  4. 人工智能十大算法_【读书】人工智能和大数据:新智能的诞生/人工智能科学与技术丛书...
  5. python获取快手无水印demo
  6. 【python技能树】python编码规范
  7. 国内外学术期刊的一些基本常识情况--A类B类--核心期刊普刊--分区等
  8. 图像质量评估(4) -- 色差(Chromatic Aberration)
  9. log4j实现日志脱敏
  10. 社交App系统架构--自己亲手写的App系统(含github源码)