请教 Chrome 扩展下怎么拿到类似 Firefox 里的 detail.originUrl?

2020-10-25 09:27:55 +08:00
 AmItheRobot

几年前开始有这个需求:

拦截https://example.com/author/.* 源页面上,发出的对 https://vod.cdn.cn/img/.* 的资源(例如图片)请求
但是放行 https://example.com/others/.* 等其它页面上,发出的对 https://vod.cdn.cn/img/.* 的资源请求

这个需求 uBlock 满足不了(恳求仔细、慢一点读需求),全网也没找到能做到的扩展。

后来找到一个偏方歪法(当时用的 Firefox ),用 Header Editor 来做,重定向请求+自定义函数

if(detail.type.endsWith('_frame'))
  return null;
if(/https:\/\/example\.com\/author\/.*/.test(detail.originUrl))
  return '_header_editor_cancel_';

通过 Firefox Addon API 提供的 details.originUrl 来判断源页面。这个方法非常好用!

但是最近换成 Chrome 了,虽然 Chrome 也有扩展 Header Editor,但是上面的自定义函数在 Chrome 下用不了。所以请教一下开发大佬:

2020 次点击
所在节点    Chrome
4 条回复
AngryPanda
2020-10-25 10:34:52 +08:00
OnBeforeSendHeadersOptions
sneezry
2020-10-25 13:48:57 +08:00
感觉可以通过判断 referer ?之前我向 v2ex-plus 贡献过一段正常显示微博图片的代码,是删除掉这个 header 。你可以改为判断这个 header,如果符合你的规则,就进行拦截。https://github.com/sciooga/v2ex-plus/blob/53f8d25f890f8d2b23f890bd4b4be03ae48603b7/background.js#L636
iNaru
2020-10-25 14:19:47 +08:00
@sneezry referer 已经不带 path 了。
AmItheRobot
2020-10-25 17:38:46 +08:00
@sneezry #2 谢谢:) 确实 chrome 现在 referer 不带路径了。而且 HE 自定义函数里,要拿 header 只能在响应时拿,请求阶段拿不了,贼尴尬 =_=|
https://he.firefoxcn.net/zh-CN/custom-function.html#detail 对象

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/718318

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX