Giter VIP home page Giter VIP logo

real-url-proxy-server's Introduction

real-url-proxy-server

说明

通过斗鱼、虎牙及Bilibili房间号直接访问直播源的代理服务器。

运行

python3 real-url-proxy-server.py [-h] -p PORT -r REFRESH [-l LOG_FILE]
PORT: 端口号,服务器将监听于 0.0.0.0:PORT。
REFRESH: 自动刷新间隔(秒),0表示禁止自动刷新。
LOG_FILE: 日志文件路径,为空则仅输出至控制台。

访问

斗鱼
  8M:http://xxx.xxx.xxx.xxx:xxxx/douyu/房间号
  4M:http://xxx.xxx.xxx.xxx:xxxx/douyu/房间号/4000
  2M:http://xxx.xxx.xxx.xxx:xxxx/douyu/房间号/2000

虎牙
  4M:http://xxx.xxx.xxx.xxx:xxxx/huya/房间号
  2M:http://xxx.xxx.xxx.xxx:xxxx/huya/房间号/2000p

Bilibili
  http://xxx.xxx.xxx.xxx:xxxx/bilibili/房间号

刷新

程序首次获取到实际直播源地址后会缓存下来,后续访问会使用缓存地址。在指定的时间间隔后会自动刷新实际直播源地址,或者通过访问 http://xxx.xxx.xxx.xxx:xxxx/douyu/房间号/refreshhttp://xxx.xxx.xxx.xxx:xxxx/huya/房间号/refresh 来手动刷新。

其它

获取到的实际地址会以301跳转或EXTM3U形式返回,播放端得到播放地址后,后续正常播放过程中不会再次访问代理服务器,因此服务器负载和流量均很低。本人在家中将其部署于刷了Padavan的小米路由器上,并通过OTT盒子进行观看。(斗鱼,bilibili是301跳转,虎牙会一直访问代理服务器返回#EXTM3U)

感谢

获取直播源地址使用的douyu.py、huya.py及bilibili.py代码来自于Real-Url项目,在此表示由衷的感谢!

real-url-proxy-server's People

Contributors

cniop avatar rain-dl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

real-url-proxy-server's Issues

douyu有些房间解析404

你好,作者。
目前我使用最新版的real-url-proxy-server,在解析一些douyu的房间的时候,出现404错误。解析环境。
极路由2 padavan,Python 3.9.0,错误代码:
image
播放器测试效果:
image

而后我在windows测试,
Python 3.9.1
能正常解析出来。
image
之前还有一台centos8的服务器,测试情况和极路由2一样。 由于机器已销毁,暂时没有详细的报错内容。
测试参数均为:python3 real-url-proxy-server.py -p 20098 -r 60
测试房间:/douyu/1392210
测试期间,斗鱼房间正常播放,且能通过浏览器正常访问。
最后请指教一下是否是我的使用不当导致的。
最后,感谢您开发维护分享这个项目。

请问下一下参数在哪运行呢

本人纯小白 刚刚把python3和模块装好 可以打开douyu.py文件获得直播源,但是以下参数不懂在哪里输入来获得直播源
python3 real-url-proxy-server.py [-h] -p PORT -r REFRESH 打开real-url-proxy-server.py直接提示错误 望开发大佬不吝赐教

跨域问题

部署在服务器上,使用浏览器播放会有跨域问题,不知道是否有解决方法

关于在路由器上的搭建问题

您好,关于这个怎么部署在路由器上呀,家里也有一台刷过相同固件的路由器,但是不知道应该怎么搭建,希望可以指导一下。

huya 会有问题,麻烦有时间帮忙看一下我哪错了。

bilibili和斗鱼是成功的,虎牙起初第一次的时候成功了,后来不知道为什么就会报错,重启运行也没能解决

2022-10-30 17:59:39,027 - INFO: failed to extract real url
2022-10-30 18:28:48,868 - INFO: extracted url: http://hw.hls.huya.com/src/71862053-2624801668-11273437322546249728-3590850040-10057-A-0-1.m3u8
2022-10-30 18:28:49,119 - INFO: failed to extract real url
2022-10-30 18:29:21,836 - INFO: extracted url: None
2022-10-30 18:29:39,475 - INFO: failed to extract real url
2022-10-30 18:58:49,500 - INFO: failed to extract real url
2022-10-30 18:59:39,953 - INFO: failed to extract real url
2022-10-30 19:08:50,028 - INFO: provider: huya, room: 20641, bit_rate: None
192.168.123.227 - - [30/Oct/2022 19:08:50] "GET /huya/20641 HTTP/1.1" 200 -
2022-10-30 19:08:50,029 - ERROR: Failed to proxy huya hls stream! Error: local variable 'm3u8_content' referenced before assignment
192.168.123.227 - - [30/Oct/2022 19:08:50] "GET /huya/20641 HTTP/1.1" 404 -
2022-10-30 19:08:54,758 - INFO: provider: bilibili, room: 94277, bit_rate: None
2022-10-30 19:08:54,758 - ERROR: Failed to extract bilibili real url! Error: 'str' object has no attribute 'values'

关于real-url-proxy-server放到docker中使用

感谢分享这么好用的工具。
由于之前路由器性能不够,现在讲real-url-proxy-server放置到python的容器(python:slim-bullseye和python:alpine)内。 其中,bilibili和虎牙都正常使用。
但是使用douyu的时候,出现异常。 解析出来为404 NOT FOUND。
容器python版本,Python 3.10.0
具体报错内容如下:

2022-03-26 12:57:51,334 - INFO: Serving HTTP on 0.0.0.0 port 7000...
2022-03-26 12:57:59,291 - INFO: provider: douyu, room: 276200, bit_rate: None
2022-03-26 12:58:00,137 - INFO: failed to extract real url
192.168.123.186 - - [26/Mar/2022 12:58:00] "GET /douyu/276200 HTTP/1.1" 404 -

在容器里单独使用douyu.py,报错内容如下:

root@37283904918d:/real-url-proxy-server# python3 douyu.py
输入斗鱼直播间号:
276200
Traceback (most recent call last):
File "/real-url-proxy-server/douyu.py", line 141, in
print(s.get_real_url())
File "/real-url-proxy-server/douyu.py", line 132, in get_real_url
key, url = self.get_js()
File "/real-url-proxy-server/douyu.py", line 73, in get_js
js = execjs.compile(func_ub9)
File "/usr/local/lib/python3.10/site-packages/execjs/init.py", line 61, in compile
return get().compile(source, cwd)
File "/usr/local/lib/python3.10/site-packages/execjs/_runtimes.py", line 21, in get
return get_from_environment() or _find_available_runtime()
File "/usr/local/lib/python3.10/site-packages/execjs/_runtimes.py", line 49, in _find_available_runtime
raise exceptions.RuntimeUnavailableError("Could not find an available JavaScript runtime.")
execjs._exceptions.RuntimeUnavailableError: Could not find an available JavaScript runtime.

对比测试:
windows直接执行脚本:Python 3.9.4

2022-03-26 20:58:59,324 - INFO: provider: douyu, room: 276200, bit_rate: None
2022-03-26 20:59:01,517 - INFO: extracted url: {'900p': 'https://hlstct.douyucdn
2.cn/dyliveflv1a/276200rlrXB2EEfX_900.m3u8?txSecret=a838db267f4ead4eab004fadf8c8
8207&txTime=623f2a31&token=web-douyu-0-276200-eb70e6469530d79af16d71572114b509&d
id=10000000000000000000000000001501&ver=2018061203&st=0&preview=1&pt=3&origin=tc
t', '2000p': 'http://hlstct.douyucdn2.cn/dyliveflv1a/276200rlrXB2EEfX_2000.m3u8?
txSecret=540164545934c9536327ae6263ecd338&txTime=623f2a33&token=h5-douyu-0-27620
0-4a812b9ab504da1c138852663586aef9&did=10000000000000000000000000001501&origin=t
ct&vhost=play2'}
127.0.0.1 - - [26/Mar/2022 20:59:01] "GET /douyu/276200 HTTP/1.1" 301 -

我1台加拿大的VPS测试情况:Python 3.6.8

[root@test-ca real-url-proxy-server]# python3 real-url-proxy-server.py -p 7000 -r 300
2022-03-26 21:04:08,124 - INFO: Serving HTTP on 0.0.0.0 port 7000...
2022-03-26 21:04:21,745 - INFO: provider: douyu, room: 276200, bit_rate: None
2022-03-26 21:04:23,479 - INFO: failed to extract real url
104.129.180.49 - - [26/Mar/2022 21:04:23] "GET /douyu/276200 HTTP/1.1" 404 -
2022-03-26 21:06:55,042 - INFO: failed to extract real url
2022-03-26 21:09:26,502 - INFO: failed to extract real url
2022-03-26 21:11:58,225 - INFO: failed to extract real url

[root@test-ca real-url-proxy-server]# python3 douyu.py
输入斗鱼直播间号:
276200
Traceback (most recent call last):
File "douyu.py", line 141, in
print(s.get_real_url())
File "douyu.py", line 132, in get_real_url
key, url = self.get_js()
File "douyu.py", line 73, in get_js
js = execjs.compile(func_ub9)
File "/usr/local/lib/python3.6/site-packages/execjs/init.py", line 61, in compile
return get().compile(source, cwd)
File "/usr/local/lib/python3.6/site-packages/execjs/_runtimes.py", line 21, in get
return get_from_environment() or _find_available_runtime()
File "/usr/local/lib/python3.6/site-packages/execjs/_runtimes.py", line 49, in _find_available_runtime
raise exceptions.RuntimeUnavailableError("Could not find an available JavaScript runtime.")
execjs._exceptions.RuntimeUnavailableError: Could not find an available JavaScript runtime.

不知道能否给分析一下,谢谢。

请问可以禁用缓存吗

自己家用,不暴露在公网,请问有什么办法可以禁用缓存,我设置了3600s的自动刷新,但是它好像不起作用,手动刷新需要指定房间号,太过于麻烦

bilibili无法播放

测试环境

windows linux(docker)

测试版本

557bdb9

测试情况

2022-10-02 06:45:06,727 - INFO: Serving HTTP on 0.0.0.0 port 10082...
2022-10-02 06:45:47,616 - INFO: provider: bilibili, room: 23841942, bit_rate: None
2022-10-02 06:45:48,101 - INFO: extracted url: {'flv_url': 'https://cn-hnld-ct-01-47.bilivideo.com/live-bvc/627617/live_605712278_17308620.flv?expires=1664696807&len=0&oi=2882738964&pt=web&qn=10000&trid=1000c5c80516672f4686a9f2ed9ff2d612a4&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha01&sign=192dcc4440ffe9e3461d4e1081bd5206&sk=491b2eef09decdba27f5188b1feaa619&p2p_type=0&src=57345&sl=1&free_type=0&sid=cn-hnld-ct-01-47&chash=1&sche=ban&score=2&pp=rtmp&source=one&site=e22a3ab4545a6437f94fa9228092181b&order=1', 'hls_url': 'https://cn-hnld-ct-01-47.bilivideo.com/live-bvc/252371/live_605712278_17308620.m3u8?expires=1664696808&len=0&oi=2882738964&pt=h5&qn=10000&trid=100393658b58f4c84ca5a6216e02a002f433&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha01&sign=391dd4b9c13dec58c576609ccab8c702&sk=491b2eef09decdba27f5188b1feaa619&p2p_type=0&src=57345&sl=1&free_type=0&sid=cn-hnld-ct-01-47&chash=1&sche=ban&score=2&pp=rtmp&source=one&site=29e72daf84090ddd253b2421c0768226&order=1'}
192.168.123.186 - - [02/Oct/2022 06:45:48] "GET /bilibili/23841942 HTTP/1.1" 301 -
2022-10-02 06:45:53,649 - INFO: provider: bilibili, room: 23841942, bit_rate: None
192.168.123.186 - - [02/Oct/2022 06:45:53] "GET /bilibili/23841942 HTTP/1.1" 301 -
2022-10-02 06:45:54,121 - INFO: provider: bilibili, room: 23841942, bit_rate: None
192.168.123.186 - - [02/Oct/2022 06:45:54] "GET /bilibili/23841942 HTTP/1.1" 301 -
2022-10-02 06:45:55,629 - INFO: provider: bilibili, room: 23841942, bit_rate: None
192.168.123.186 - - [02/Oct/2022 06:45:55] "GET /bilibili/23841942 HTTP/1.1" 301 -
2022-10-02 06:45:56,173 - INFO: provider: bilibili, room: 23841942, bit_rate: None
192.168.123.186 - - [02/Oct/2022 06:45:56] "GET /bilibili/23841942 HTTP/1.1" 301 -

windows docker测试的情况类似。
image

补充

斗鱼和虎牙播放都正常。

请辛苦给看下是什么情况,谢谢。

b站获取到的直播源似乎又失效了

我不确定是否是b站的反爬机制,我用postman和程序获取拼接的直播源并不相同,postman得到的可以播放,但是程序获取的就不可以,暂不清楚是什么原因

bilibili 服务挂掉了

bilibili.py 脚本无法使用,需要在s.get 中添加headers ,请求才能通过。
header参考:
self.header = {
'User-Agent': 'Mozilla/5.0 (iPod; CPU iPhone OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/87.0.4280.163 Mobile/15E148 Safari/604.1',
}
param 参数内容也有调整,
param内容参考:
params = {
'device': 'pc',
'platform': 'h5',
'scale': 0,
'build': '10000',
'protocol': '0,1',
'format': '0,1,2',
'codec': '0,1',
'room_id': room_id,
'qn': 10000
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.