HTTP 引擎
HTTP 重写

HTTP 重写

HTTP 重写允许用户通过正则表达式匹配 URL,拒绝或者重定向 HTTP(S) 请求,常用于去广告,避免隐私跟踪等目的。

配置格式:

http:
  # HTTP(S) 重写,支持header、302、307、reject多种策略
  url-rewrite:
    - ^http://g\.cn https://www.google.com transparent
    - ^https?://www\.google\.cn https://www.google.com 302 # 直接返回一个 302 重定向的响应
    - ^https?://ad\.example - reject # 拒绝请求
  header-rewrite:
    - ^http://g\.cn request-add DNT 1
    - ^http://g\.cn request-del DNT
    - ^http://g\.cn request-replace DNT 1
    - ^http://g\.cn request-replace-regex User-Agent Go-http-client curl
 
    - ^http://g\.cn response-add DNT 1
    - ^http://g\.cn response-del DNT
    - ^http://g\.cn response-replace DNT 1
    - ^http://g\.cn response-replace-regex User-Agent Go-http-client curl

URL 重写

transparent

拦截并修改请求的 URL,效果类似透明代理,应用对此无感知,支持重定向 HTTP / HTTPS。

302 / 307

HTTP 引擎会返回一个 3xx 状态码,并且会自动设置 Location 字段,以达到重定向的目的。

reject

返回 404 响应,和空的响应 body。

reject-200

返回 200 响应,和空的响应 body。

reject-img

返回 200 响应,和 1px gif 的响应 body。

reject-dict

返回 200 响应,和内容为 {} 的响应 body。

reject-array

返回 200 响应,和内容为 [] 的响应 body。

HTTP header 重写

header 重写允许用户增加、删除、替换 HTTP 请求 / 响应的任意 header。

request-add / response-add

对 HTTP 请求 / 响应新增 header。

request-del / response-del

对 HTTP 请求 / 响应删除 header。

request-replace / response-replace

对 HTTP 请求 / 响应替换 header 的值。

request-replace-regex / response-replace-regex

对 HTTP 请求 / 响应通过正则表达式替换 header 的值。

使用 JavaScript 引擎重写

如果上述功能无法满足需求,请参考使用 JavaScript 引擎重写 HTTP