Nginx+Dnsmasq解锁Netflix

# 碎碎念

流媒体解锁呢很早就想弄,不过一直比较懒似乎也没太大需求,毕竟中转就能曲线救国。

一般市面上用的都是sniproxy反代HTTPS流量,反正就是某古早脚本。sniproxy配置比较简单就是会占用443。使用sniproxy就可以实现反代,简单的来说就是sniproxy服务器收到信息然后去访问b站等等流媒体,然后把网站数据原封不动的返回给你,就是解锁区域限制了。本文“借鉴”大佬的文章,并稍作修改,使用Nginx的stream实现sniproxy的功能,可以让解锁与HTTPS网站共存。

这里不得不骂一下Netflix封IP的行为,反正财报会越来越难看,反正有Disney+这个强有力的竞争对手,另外我选择盗版。本文能够类比实现各种流媒体解锁,有强迫症的还能配合ipset做一个全解锁小鸡(x。

# 安装Nginx与Dnsmasq

1
apt install nginx dnsmasq -y

# 配置Nginx

编辑文件 /etc/nginx/nginx.conf,添加 steam区域,里面加一个 server 用来“反代” HTTPS 数据流,再加一组正则映射规则通过 SNI 过滤域名,只允许 Netflix 域名的 SNI。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
stream {
    # 加一组 map,根据规则过滤 $ssl_preread_server_name (也就是请求的 SNI)
    # 将过滤过的 SNI 存入自定义变量 $filtered_sni_name,
    # 如果没有匹配到任何规则,则默认为一个 443 端口没有服务的本地回环。
    # 加 map 来过滤流量的意义在于防止服务器被滥用成任意网站的反代
    map $ssl_preread_server_name $ssl_target {
        ~^ipv4-(?<suffix>.*)    ipv6-${suffix}:443;
        #~^(.*|)fast\.com    $ssl_preread_server_name:443;
        ~^(.*|)netflix\.ca    $ssl_preread_server_name:443;
        ~^(.*|)netflix\.com    $ssl_preread_server_name:443;
        ~^(.*|)netflix\.net    $ssl_preread_server_name:443;
        ~^(.*|)netflixinvestor\.com    $ssl_preread_server_name:443;
        ~^(.*|)netflixtechblog\.com    $ssl_preread_server_name:443;
        ~^(.*|)nflxext\.com    $ssl_preread_server_name:443;
        ~^(.*|)nflximg\.com    $ssl_preread_server_name:443;
        ~^(.*|)nflximg\.net    $ssl_preread_server_name:443;
        ~^(.*|)nflxsearch\.net    $ssl_preread_server_name:443;
        ~^(.*|)nflxso\.net    $ssl_preread_server_name:443;
        ~^(.*|)nflxvideo\.net    $ssl_preread_server_name:443;
        default    "127.255.255.255";
    }

    server {
        listen 443;
        #access_log /var/log/nginx/stream_access.log main;
        resolver 1.1.1.1 ipv6=on;
        resolver_timeout 1s;
        # 只代理经过 SNI 过滤的流量,
        # 其他流量都被丢入不存在的地址
        proxy_pass $ssl_target;
        ssl_preread on;
    }
}

重载:

1
systemctl reload nginx

当然可以直接在Nginx配置白名单,或是使用UFW、IPT等

1
2
allow your-ip;
deny all;

# 配置Dnsmasq

编辑 /etc/dnsmasq.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
listen-address=your-ip

#address=/fast.com/your-ip
address=/netflix.ca/your-ip
address=/netflix.com/your-ip
address=/netflix.net/your-ip
address=/netflixinvestor.com/your-ip
address=/netflixtechblog.com/your-ip
address=/nflxext.com/your-ip
address=/nflximg.com/your-ip
address=/nflximg.net/your-ip
address=/nflxsearch.net/your-ip
address=/nflxso.net/your-ip
address=/nflxvideo.net/your-ip

重启:

1
systemctl restart dnsmasq

# 配置代理

略,你要是不会的话估计没有该需求🤪

# 引用

Nginx + Dnsmasq 解锁 Netflix

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计