利用 Quantumult X 替换URL链接实现请求重定向.jpg

I. 主理人说

工欲善其事,必先利其器。先思考,在进行运用,多运用。不消一刻钟,你便已经入门到精通。

II. 重写类型

打开 Quantumultx - 点击右下角三菱按钮 - 划至重写模块 - 点击添加按钮 - OK,你会看到很多有意思的重写类型 ,每一个都值得学习;本文将就 302/307/reject的用法进行着重介绍;

正则表达式

正规表示式(英语:Regular Expression,常简写为regex、regexp或RE),又称正规表达式、正规表示法、规则运算式、常规表示法,是电脑科学的一个概念。正规表示式使用单个字串来描述、符合一系列符合某个句法规则的字串。在很多文字编辑器裡,正则表达式通常被用来检索、替换那些符合某个模式的文字

许多程式设计语言都支援利用正则表达式进行字串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软体(例如sed和grep)普及开的。

via 维基百科

302/307

302 Found,原始描述短语为 Moved Temporarily ,是HTTP协议中的一个状态码(Status Code)。可以简单的理解为该资源原本确实存在,但已经被临时改变了位置;换而言之,就是请求的资源暂时驻留在不同的URI下1,故而除非特别指定了缓存头部指示,该状态码不可缓存。

对于服务器,通常会给浏览器发送HTTP Location头部来重定向到新的新位置。

via 维基百科307

正则表达式学习资料

1.正则表达式30分钟入门指南
2.正则表达式在线测试工具

下面,就开始正式的入门工作;

III. 302/307 URL重写范例参考

参考范例(神机规则)

以下这个范例是援引自神机规则YouTube去广告重写-引用https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/Block/YouTubeAds.conf

hostname = *.googlevideo.com
(^https?:\/\/[\w-]+\.googlevideo\.com\/.+)(ctier=L)(&.+) url 302 $1$3
^https?:\/\/[\w-]+\.googlevideo\.com\/.+&(oad|ctier) url reject

(^https?:\/\/[\w-]+\.googlevideo\.com\/.+)(ctier=L)(&.+) 这是一条正常的正则表达式,用以匹配YouTubeAPP中广告加载的URL;

这里将要进行匹配的URL用括号分成3个组成部分或更多,如(^https?:\/\/[\w-]+\.googlevideo\.com\/.+)(ctier=L)(&.+)

这是一条正常的YouTube广告加载请求URL:

https://r1---sn-i3b7knlk.googlevideo.com/videoplayback?expire=1611647818&ei=6nYPYO26CcfEgQPvl4UI&ip=233.233.243.82&id=o-AAYWEfm0qcXADt3IZOzXgQrsYfjj9dz0qlGHrIEn1mvK&itag=140&source=youtube&requiressl=yes&mh=hk&mm=31,26&mn=sn-i3b7knlk,sn-npoeened&ms=au,onr&mv=m&mvi=1&pl=20&ctier=L&pcm2=no&initcwndbps=1290000&vprv=1&mime=audio/mp4&gir=yes&clen=520095&dur=32.089&lmt=1607802685243373&mt=1611625971&fvip=1&keepalive=yes&c=IOS&txp=5531432&sparams=expire,ei,ip,id,itag,source,requiressl,ctier,pcm2,vprv,mime,gir,clen,dur,lmt&sig=AOq0QJ8wRQIhAMVBpVYLydfU9WGXQT_Zdo5reHwPmFC8CUVjkF12bjnyAiByIeUHXQJhiJHkV5ymKM2LqtSg8zk3M4DNELm8ApbKDw%3D%3D&lsparams=mh,mm,mn,ms,mv,mvi,pl,initcwndbps&lsig=AG3C_xAwRQIgTVN8mRdR5IFmOp6K0W4RADE_k5KMOn0sEZzCy91S-cUCIQDIyukdXCLtUOKxkXgS5_FKeGLYSTrjVw_J2PR-HGfOAw%3D%3D&cpn=ulLevXW2cYp_h-jp&rn=1&ump=1&range=0-711

现在我们用正则表达式去匹配这条URL;
在线正则表达式测试工具:https://tool.oschina.net/regex/

正则表达式-利用 Quantumult X 替换URL链接实现请求重定向

Get it?

将原本的$1$2$3,替换成$1

回到

hostname = *.googlevideo.com
(^https?:\/\/[\w-]+\.googlevideo\.com\/.+)(ctier=L)(&.+) url 302 $1$3
^https?:\/\/[\w-]+\.googlevideo\.com\/.+&(oad|ctier) url reject

中,将$1$2$3重定向为$1$3;少了$2;

正则表达式-利用 Quantumult X 替换URL链接实现请求重定向

而$2即,(^https?:\/\/[\w-]+\.googlevideo\.com\/.+)(ctier=L)(&.+)正则表达式中的(ctier=L)部分匹配结果;

自此,URL请求从

https://r1---sn-i3b7knlk.googlevideo.com/videoplayback?expire=1611647818&ei=6nYPYO26CcfEgQPvl4UI&ip=233.233.243.82&id=o-AAYWEfm0qcXADt3IZOzXgQrsYfjj9dz0qlGHrIEn1mvK&itag=140&source=youtube&requiressl=yes&mh=hk&mm=31,26&mn=sn-i3b7knlk,sn-npoeened&ms=au,onr&mv=m&mvi=1&pl=20&ctier=L&pcm2=no&initcwndbps=1290000&vprv=1&mime=audio/mp4&gir=yes&clen=520095&dur=32.089&lmt=1607802685243373&mt=1611625971&fvip=1&keepalive=yes&c=IOS&txp=5531432&sparams=expire,ei,ip,id,itag,source,requiressl,ctier,pcm2,vprv,mime,gir,clen,dur,lmt&sig=AOq0QJ8wRQIhAMVBpVYLydfU9WGXQT_Zdo5reHwPmFC8CUVjkF12bjnyAiByIeUHXQJhiJHkV5ymKM2LqtSg8zk3M4DNELm8ApbKDw%3D%3D&lsparams=mh,mm,mn,ms,mv,mvi,pl,initcwndbps&lsig=AG3C_xAwRQIgTVN8mRdR5IFmOp6K0W4RADE_k5KMOn0sEZzCy91S-cUCIQDIyukdXCLtUOKxkXgS5_FKeGLYSTrjVw_J2PR-HGfOAw%3D%3D&cpn=ulLevXW2cYp_h-jp&rn=1&ump=1&range=0-711

替换为:

https://r1---sn-i3b7knlk.googlevideo.com/videoplayback?expire=1611647818&ei=6nYPYO26CcfEgQPvl4UI&ip=233.233.243.82&id=o-AAYWEfm0qcXADt3IZOzXgQrsYfjj9dz0qlGHrIEn1mvK&itag=140&source=youtube&requiressl=yes&mh=hk&mm=31,26&mn=sn-i3b7knlk,sn-npoeened&ms=au,onr&mv=m&mvi=1&pl=20&&pcm2=no&initcwndbps=1290000&vprv=1&mime=audio/mp4&gir=yes&clen=520095&dur=32.089&lmt=1607802685243373&mt=1611625971&fvip=1&keepalive=yes&c=IOS&txp=5531432&sparams=expire,ei,ip,id,itag,source,requiressl,ctier,pcm2,vprv,mime,gir,clen,dur,lmt&sig=AOq0QJ8wRQIhAMVBpVYLydfU9WGXQT_Zdo5reHwPmFC8CUVjkF12bjnyAiByIeUHXQJhiJHkV5ymKM2LqtSg8zk3M4DNELm8ApbKDw%3D%3D&lsparams=mh,mm,mn,ms,mv,mvi,pl,initcwndbps&lsig=AG3C_xAwRQIgTVN8mRdR5IFmOp6K0W4RADE_k5KMOn0sEZzCy91S-cUCIQDIyukdXCLtUOKxkXgS5_FKeGLYSTrjVw_J2PR-HGfOAw%3D%3D&cpn=ulLevXW2cYp_h-jp&rn=1&ump=1&range=0-711

以上。

IV. 更多用法

广告元素替换

你需要记住的是 参数 url 后 可以任意字母数字、域名(仍需遵循正则表达式规范);你可以根据你的需求,将匹配到的URL(结果)进行任意重写、结果组合,例如把该请求重定向到 https://limbopro.xyz

hostname = *.googlevideo.com
(^https?:\/\/[\w-]+\.googlevideo\.com\/.+)(ctier=L)(&.+) url 302 https://limbopro.xyz
(^https?:\/\/[\w-]+\.googlevideo\.com\/.+)(ctier=L)(&.+) url 302 $1

利用 Quantumult X 替换URL链接实现请求重定向.png

reject

不想替换,想屏蔽,那就使用参数 reject。

hostname = *.googlevideo.com
(^https?:\/\/[\w-]+\.googlevideo\.com\/.+)(ctier=L)(&.+) url 302 $1$3
^https?:\/\/[\w-]+\.googlevideo\.com\/.+&(oad|ctier) url reject

^https?:\/\/[\w-]+\.googlevideo\.com\/.+&(oad|ctier) url reject

真香。

V. 实践运用

在此示例中,正则表达式用于匹配你想要匹配的URL,url 后面接 重写类型
现在,假设你想 屏蔽/替换 一个 jpg 图片?
应该怎么做?

https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png 谷歌首页logo 为例:

hostname = *.google.com
https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png url 302 https://limbopro.xyz/favicon.ico

有没有很简单?

正则表达式妙在哪里呢?可以精准匹配(如上述https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png,完全匹配),也可以抹除某些可能存在变数的细节再进行匹配;

hostname = *.google.com
^https://.*google\.com/.*?googlelogo.*?\.png url 302 https://limbopro.xyz/favicon.ico

^https://.*google\.com/.*?googlelogo.*?\.png 仍能匹配得到 https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png,且能匹配得到更多。

VI. 复写生效检查

VII. 附注

最后修改:2021 年 03 月 12 日 02 : 42 AM