匹配 YouTube 视频流

导读:

  1. 基本语法格式
  2. 核心规则与语法
  3. 实用配置示例
  4. 重要注意事项
  5. 进阶技巧

在 Shadowrocket(小火箭)中,正则表达式主要用于 URL-REGEX 规则类型,用于匹配请求的完整 URL(包括协议、域名、路径和参数),实现精细化的流量分流。

基本语法格式

URL-REGEX,正则表达式,策略(Proxy/Direct/Reject等)

核心规则与语法

基础匹配规则

  • 无需分隔符:直接写正则内容,不需要 /pattern//pattern/g
  • 匹配对象:完整的 URL 字符串(如 https://api.example.com/v1/user?id=123
  • 默认行为:部分匹配(即正则匹配 URL 的任意部分即生效)

常用元字符

符号 含义 示例
^ 开头锚点 ^https:// 匹配所有 https 请求
结尾锚点 \.jpg$ 匹配以 jpg 结尾的 URL
任意字符(0或多个) .*google.* 匹配包含 google 的 URL
\. 转义点号 \.com 匹配 .com 而非任意字符
\d 数字 \d+ 匹配一个或多个数字
分组 (jpg\|png) 匹配 jpg 或 png

实用配置示例

媒体平台匹配


# 匹配 Netflix 相关域名
URL-REGEX,^https?:\/\/.*\.netflix\.com,Proxy
# 匹配 Spotify
URL-REGEX,^https?:\/\/.*\.(spotify\.com\|scdn\.co),Proxy

广告拦截

# 拦截常见广告域名
URL-REGEX,^https?:\/\/.*\.(doubleclick\.net\|googleadservices\.com),REJECT
# 拦截带广告参数的请求
URL-REGEX,^https?:\/\/.*\?.*ad.*=,REJECT

文件类型分流

# 图片直连(避免代理浪费流量)
URL-REGEX,^https?:\/\/.*\.(jpg\|jpeg\|png\|gif\|webp\|svg)$,DIRECT
# 视频文件代理
URL-REGEX,^https?:\/\/.*\.(mp4\|m3u8\|ts\|flv)$,Proxy

API 特定路径

# 特定 API 走代理
URL-REGEX,^https?:\/\/api\.github\.com\/.*,Proxy
# 特定路径直连
URL-REGEX,^https?:\/\/.*\.example\.com\/(static\|assets)\/.*,DIRECT

重要注意事项

性能优化(关键)

  • 避免过度使用:正则匹配比 DOMAINDOMAIN-SUFFIX 慢 10-100 倍

  • 优先使用简单规则

    # 推荐(高效)
    DOMAIN-SUFFIX,google.com,Proxy
    # 避免(低效)
    URL-REGEX,^https?:\/\/.*\.google\.com,Proxy

转义字符

  • URL 中的 需要转义为 \/
  • 需要转义为 \.(否则匹配任意字符)
  • 需要转义为 \?(否则表示可选)

iOS 限制

  • 避免使用过于复杂的正则(如嵌套分组过多)
  • 正则长度建议控制在 200 字符以内
  • 不支持正则表达式修饰符(如 i 忽略大小写需用 (?i)

调试技巧

在 Shadowrocket 中开启日志记录(设置 → 日志),查看实际请求的 URL 是否被规则匹配:

  • 绿色 = 匹配成功
  • 灰色 = 未匹配

进阶技巧

排除特定路径

# 匹配 google.com 但不匹配 /maps
URL-REGEX,^https?:\/\/[^\/]*google\.com\/(?!maps),Proxy

匹配特定 User-Agent(结合使用)

虽然 URL-REGEX 只匹配 URL,但可以配合 USER-AGENT 规则:

# 先匹配 UA,再匹配 URL
USER-AGENT,*AppName*,Proxy
URL-REGEX,^https?:\/\/api\.specific\.com\/.*,Proxy

大小写不敏感

# 使用 (?i) 修饰符(部分版本支持)
URL-REGEX,(?i)^https?:\/\/.*\.google\.com,Proxy

建议:仅在无法通过 DOMAINDOMAIN-SUFFIXDOMAIN-KEYWORD 实现需求时,才使用 URL-REGEX,以保证代理效率。

您可以还会对下面的文章感兴趣: