Emby全平台开心版、认证服务器设置方法
Emby的一些问题:
Emby作为一款不错的Self-hosted播放器/媒体服务项目,我用了一段时间。这期间也尝试过开源版本的Jellyfin,和付费成为emby的会员。但是Emby的价格和服务让我感到不值,某些定价更让人困惑:Emby会员一个月$5,终身会员$120,这个价格已经比很多大型商业软件还要昂贵了。而Emby却大量使用开源工具,软件bug也多,收这个价格实在没有道理。另外就是Android客户端至少可以看视频,iOS客户端竟然要$5来激活,激活了也仅仅是能看视频而已,这个iOS的激活还不能带给服务器(服务器的激活可以带给iOS)。如此种种,让我想到了干脆破解算了。我支持开源软件,但是开发者不能这么瞎搞。如果iOS客户端能看视频,但某些高级功能花钱解锁,这还说得过去。要么就一视同仁,安卓端也收费。
破解思路:
很简单,Emby服务器、客户端都向 mb3admin.com
发送客户的key,获取返回的会员有效期等状态。搞一个假的验证服务器。
如果你只是要随便看看视频,那不需要再往下看了:
服务器端直接用别人破解好的docker:lovechen/embyserver 或者 xinjiawei1/emby_unlockd
配置兼容官方,只要把image换了,数据库等可以继承。
iOS端使用Surge、Shadowrocket等软件破解,方法见这篇文章。基本常见的代理软件就能实现。
Android端本来就不用交钱,凑合看看吧。
而我的要求是,在全平台(PC,Mac,Android,iOS,Web)和服务器实现免费使用会员功能,且不依赖于特定的软件(比如Shadowrocket)。
所以思路就是先搭建一个自己的认证服务器,然后所有设备统一找这个认证服务器认证。
需求:
1,对DNS有控制权
2,有一台http服务器(以nginx为例),内外网均可。
构造认证服务器 mb3admin.com
1,建立一个Nginx 反代服务器,如果没有Internet上的VPS,可以用内网的任意一台虚拟机。当然最简单的就是和Emby服务器共用一台机器,使用同一个Nginx反代就行了。
2,在你控制的DNS上,把 mb3admin.com
指向这台机器的IP。
3,nginx新建一个反向代理,主机名字就是 mb3admin.com,具体代到哪里都无所谓(反正又不是真的代),配置文件添加以下内容:
location /admin/service/registration/validateDevice {
default_type application/json;
return 200 '{"cacheExpirationDays": 3650,"message": "Device Valid","resultCode": "GOOD"}';
}
location /admin/service/registration/validate {
default_type application/json;
return 200 '{"featId":"","registered":true,"expDate":"2099-01-01","key":""}';
}
location /admin/service/registration/getStatus {
default_type application/json;
return 200 '{"deviceStatus":"","planType":"Lifetime","subscriptions":{}}';
}
location /admin/service/appstore/register {
default_type application/json;
return 200 '{"featId": "","registered": true,"expDate": "2099-01-01","key": ""}';
}
location /emby/Plugins/SecurityInfo {
default_type application/json;
return 200 '{SupporterKey: "", IsMBSupporter: true}';
}
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers *;
add_header Access-Control-Allow-Method *;
add_header Access-Control-Allow-Credentials true;
如果你是全容器化管理,那就用nginx-proxy-manager,新建一个Host,随便代理到哪里,最后在Custom里面输入这些内容。

Nginx-Proxy-Manager 添加自定义字段
先不要选择证书,先用http测试一遍:
http://mb3admin.com/admin/service/registration/validateDevice
如果返回:
{"cacheExpirationDays": 3650,"message": "Device Valid","resultCode": "GOOD"}
说明配置正确了。服务器返回了伪造的会员信息,剩余3650天。
*CORS 经过实测,仅为iOS设备要求,如果不需要iOS使用,可以不加CORS。
配置服务器CA、自签名证书
SSL/TLS的规则保证了我们无法获得真正的 mb3admin.com
的证书。因此我们需要自签发一套证书,并在设备上手工添加这些证书。由于当前各类设备的安全设置,通常不允许添加自签名证书,因此我们需要添加一个私有CA,用私有CA签发一套证书。
构建CA
需要一台linux主机,通常情况下可以使用emby本身的服务器,如果是NAS机器可能要 进入到”终端“。Mac或者微软系统需要安装openssl库,建议直接虚拟机安装一套Ubuntu一次性使用。
openssl genrsa -des3 -out rootCA.key 2048
#建立CA私钥,之后要求输入密码,记住密码。我这里设置为123456。
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem
#建立CA证书 有效期 3650天。注意:iOS不允许有效期超过825天。如果是iOS设备,应为:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 824 -out rootCA.pem
#iOS设备,有效期824天
openssl req -new -sha256 -nodes -out mb3admin.csr -newkey rsa:2048 -keyout mb3admin.key -config <(cat rootCA.csr.cnf)
#生成 mb3admin.com的CSR和私钥,使用 rootCA.csr.cnf 配置
openssl x509 -req -in mb3admin.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out mb3admin.crt -days 824 -sha256 -extfile v3.ext
#生成 mb3admin.com的证书,使用 v3.ext 中的配置指定服务器证书用途
其中, rootCA.scr.cnf
为CSR配置文件,内容为:
# rootCA.csr.cnf
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=US
ST=CA
L=LA
O=fuckemby
OU=fuckemby
[email protected]
CN = *.mb3admin.com
v3.ext 为服务器证书用途配置文件,内容为:
# v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
extendedKeyUsage=serverAuth
[alt_names]
DNS.1 = mb3admin.com
所有东西放在同一个目录里,操作下来,得到文件
rootCA.key, rootCA.pem, mb3admin.key, mb3admin.csr, mb3admin.crt
其中 mb3admin.key, mb3admin.csr
为我们使用自己的rootCA 制作的假的mb3admin.com的证书和私钥。
rootCA.pem
为rootCA的根证书,这里我给rootCA的根起名字叫”test“。
在Nginx中安装证书
把mb3admin.key, mb3admin.csr
添加到之前为mb3admin.com 设置的反代里。
接下来再各个设备中安装CA根证书。
Windows需要安装到受信任的根证书颁发机构
iOS需要添加为配置文件(办法是把rootCA.pem
想办法让手机去下载,或者通过邮件附件发给手机,然后会出现添加配置文件的说明),按照说明添加配置文件,添加证书信任。
Android同上,使用Android证书管理器加载证书并安装证书,信任。
安装后使用https协议访问刚才的API查询:
https://mb3admin.com/admin/service/registration/validateDevice


ping一下服务器:
C:\Users\user>ping mb3admin.com
正在 Ping mb3admin.com [192.168.1.200] 具有 32 字节的数据:
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
这说明我们已经通过虚假的DNS把mb3admin.com成功指向了虚假的服务器,并用假证书成功完成了握手。
(知道为什么一定要吊销CNNIC的根证书了吗?——)
验证
iOS
进入iOS客户端后,点击会员验证,如果不出来就关掉重新开一下APP

注意这个验证有效期很长,就算离开了本局域网还能用很久。如果登出会要求重新验证。
Android同上,解锁后可以用所有功能,包括歌曲播放和歌词显示。
Win、Mac
Win和Mac 都要在系统里安装完证书后(Mac安装根证书方法不赘述),打开客户端验证一遍。客户端我用的是emby在github上的安装包,不是官网的安装程序。
Web
Web的权限,在PC或Mac等桌面环境下是跟随服务器的,服务器有会员权限,Web就有会员权限。
Web在iOS上(只要User-Agent为iOS)就必须额外要会员(神经病),要么改掉UA,要么也在同一个局域网里一起被破解掉。
注意Web的Session有时限,被退出了,会要求再要验证会员,不过反正都在这一局域网了,还怕它个啥…
服务器的破解
因为现在大多数情况都是用容器安装了,所以破解起来比较麻烦,大多数情况可以使用上面提到的两款已经破解好的容器。如果怕被删了,可以commit到自己的docker账号里哦。
如果一定要自己破解容器,先下载官方容器。
思路1,替换掉官方的某些文件,直接指向一个假的验证服务器(都不需要证书)。
思路2,进到容器里,添加根证书,修改DNS,出来,commit容器,上传保存,再开。
也可以用bind挂载破解文件进容器,参考这篇
这样就实现了内网中全平台的Emby开心版,类似于内网中的KMS服务器一样。设备在获取了有效期(比如999天或者3650天)后,应该不会再向服务器请求有效期,除非登出了emby播放服务器。除了Web需要保持在内网环境中,其他设备也可以在其他地方正常使用。
iOS必须在nginx中加入CORS设定。
参考资料:
使用 Docker Compose 编排整合 emby 伪站授权
tiagofreire-pt/self-signed-certificate-with-custom-ca-for-home-assistant.md
This message is used to verify that this feed (feedId:72854398912017408) belongs to me (userId:72849687412769792). Join me in enjoying the next generation information browser https://follow.is.
Yes! Finally someone writes about flycapeair com schedules.
hey there and thank you for your information – I’ve definitely picked up anything new from right here.
I did however expertise some technical points using this
web site, as I experienced to reload the website a lot of times previous to I could get it to
load properly. I had been wondering if your hosting is OK?
Not that I’m complaining, but sluggish loading instances times will
sometimes affect your placement in google and can damage your quaqlity score if ads and marketing with
Adwords. Anyway I’m adding this RSS to my e-mail and can look out for much more of your
respective fascinating content. Make sure you update this again very soon.