究竟是什么,可以篡改浏览器的所有跨域请求头?

》书接上一回:突然发现B站进不去了…… - 讨论分享 - 小众软件官方论坛

  • 我分别在“正常”状况和“登录信息获取失败”状况(下称“异常”状况)下,对出问题的网络请求进行了对比:(两图非同一请求,但不影响结果)
    正常请求头:image
    异常请求头:image
    (异常请求头上码掉的大部分是cookie 内容;图片重新上传,异常状况时上传了有问题)

  • 关键是请求头的 OriginReferer 都被篡改成了某网站(内容不健康,故也码掉),这造成相关请求返回403报错,造成“登录信息获取失败”的问题。

  • 不止B站,在异常状况下,观察者网、甚至本站某些图床(包括 h1.appinn.me)的图片(如在 记一次老旧 U 盘数据救援过程(以及关于光盘救援的请教) 中的)都无法显示,查看无法载入的链接的网络请求头,也发现是同样的被篡改的情况。

  • 再进一步检查,发现只要属性 Sec-Fetch-Modecors 的请求头,就会被这样篡改,即使其中有些请求并没被403。

    • 查了下,CORS是“跨来源资源共享”,即这些请求是跨域请求,会受到服务器的隐私安全策略筛查,不符合服务器来源规则的会被拒绝。
  • 在“异常”状况下,打开 Chrome 浏览器浏览观察者网,没重现该状况,请求头也没被篡改,也就是这并不是网络或系统的问题,影响范围缩小到Firefox浏览器。

    • (不过 Chrome 的开发者工具中请求头的信息很少,没找到上一条中的属性)
    • (而且我不主用 Chrome ,所以上面扩展、脚本、网站访问情况等环境完全不可比)
  • 回到开头,被篡改后的网站的确是我最近访问过的网站,出现异常状况的时间回忆上也和访问该网站的时间大抵相符;最近在重启浏览器确保是正常状况后,浏览了一段时间该网站也的确触发了异常状况。

    • (但在上述的 Chrome 中访问该网站后并没在观察者网上复现异常状况)
  • 脚本和扩展我都基本上排查过了,没有与嫌疑网站相关的,(至少明面的)功能上也不可能造成这种异常状况。

  • 所以,

    • 如果这是该嫌疑网站造成的,它是怎么实现篡改其他网站的跨域请求头的?
    • 如果这是浏览器的 bug ,怎么两个多月都没被修复?
    • 如果这是某扩展(甚至脚本)的 bug (或恶意代码),又怎么仅会通过对该嫌疑网站的访问来触发?
2 个赞

脚本扩展可以改。
通过windivert.sys等方式也可以篡改。

先用隐身模式看看,排除下插件问题

2 个赞

有没有安装广告过滤之类的软件啊?

在隐私模式中仅保留三个扩展,含TamperMonkey,初步测试没出现异常状况,也就是排除了脚本的嫌疑。


有 uBlock Origin,但试过禁用它也能触发异常状况。


接下来要排除扩展的话,也够头痛的,因为“功能上”没谁存在嫌疑……

目前启用的扩展▼

篡改猴
快乐右键2
链接提取
猫抓
梦想划词翻译—聚合词典搜索
图片转换base64
找回已关闭的标签页
Auto Tab Discard
Autofill
cookies.txt
Copy Link Text
Copy Selected Links
Copy URL
CopyTables
CopyTabTitleUrl
Country Flags & IP Whois
Date Today
Drag-Select Link Text
Emojis table
Evenscroll
Find in Page with Preview
Font Adjuster
Forecastfox (fix version)
Format Link
get-set, Fetch! web scraper
HeadingsMap
History Master
Hyper Drag
Ignore X-Frame-Options
Image Data
Image Max URL
Imagus mod
Improved History
Javascript Switcher
JSONView
Just Read
Last Visited Toolip
Link Visitor
Load Background Tabs Lazily
MarkDownload - Markdown Web Clipper
Open bookmarks in new tab
Open Multiple Addresses
Parent Path
Paste and Go Key
Popup Bookmarks
QR Lite
Redirect YouTube Shorts to YouTube
Save Page WE
Scrapebold
Search Site WE
Shortkeys (Custom Keyboard Shortcuts)
Sidebery
simple-modify-headers
SingleFile
Slick Viewer
SmartProxy
Snap Links
Stylus
Tab Position Options
Textarea Cache
TransOver
uBlock Origin
Update bookmark
User-Agent Switcher and Manager
Web Scraper - Free Web Scraping
Website History Browser
Yank It!

隐私模式不会禁用全局代理类型的扩展,试试看用开发者版的ff来排除扩展还是ff自身的原因

没看懂,为什么不全部禁用,你这个测试有什么意义。

没异常就是好了?好了还排除了?

1 个赞

这句话就不对,功能上谁都有嫌疑,Chromium系的扩展基本没有权限管理,谁都可以改请求头。隐私模式没事,可以确定问题就出在这些扩展了。

的确如此,不过那嫌疑网站也需要代理来访问
(我不理解,为啥只有这一个网站会触发这种异常状况……)

没禁用的三个扩展应该是以前就设置成允许隐私模式启用的,不是故意这样设的。意义是也排除了Firefox本身和该三个扩展的嫌疑。
也就是可以用隐私模式开这网站来避免异常状况(但没记录历史也会带来不便)

我说“功能上”就是指不会是扩展明面上的功能和我的设置造成的问题 :joy:
所以剩下只能是一个一个排查

这个时候你就需要这个帮你排查了

经过一段时间的测试排查,报告一下最新进展:

  • 又发现一个(也同样不健康且需要代理连接)的网站能触发这样的异常,也就是说,要么这些网站都使用了某个漏洞,或者;这些网站的跨域安全设置触发了某扩展的“功能/设计失误”从而以这些网站的设置替换了所有跨域访问请求头的特定属性值。
  • 在禁用了一堆扩展,留下了“印象中”“应该没问题”的一些扩展后,异常依然重现;怀疑罪魁是 Ignore X-Frame-Options 扩展,因为其功能涉及修改安全设置(虽然异常不涉及iframe这样的框架),结果禁用了依然能重现异常。
  • 而且异常不是访问那些网站立马触发的,而是不知什么时候(起码访问5-10分钟后)才出现,使得排查扩展难度和耗时增加。
  • “二分法”虽然科学,但我的扩展基本都不更新的,所以一些“眼熟”的、在异常出现前一直用的扩展基本可以信任,于是我采取的准则是,先把【印象中不怎么用到/基本已经没使用需求/能够被替代/不涉及改变使用习惯】的扩展都禁用了,如果异常依然存在再逐一排查。
  • 最终,如下一批次扩展被禁用且测试一天后,异常终于没再重现了:

Autofill (自动填表;貌似要填的最多是登录信息,用Firefox记住密码就够了)
CopyTables (网页右键菜单,复制整个 table 元素)
CopyTabTitleUrl (标签页右键菜单,复制当前网址和标题;有油猴脚本替代了)
Emojis table (按钮,展开表情包图标列表,点击复制图标供输入;没用过几次,主要是缺搜索功能不甚方便)
Evenscroll (网页中插入虚拟滚动条,可以用较少鼠标移动距离来实现多种滚动效果;设计挺巧妙的,但得培养出习惯,用不到时又感到碍眼)
Format Link (右键菜单,将链接地址按特定格式复制;极少用到)
MarkDownload - Markdown Web Clipper (被推介后安装的没用过)

  • 看起来谁都不像是会与请求头扯上关系的样子,对吧?
  • 谁是真正罪魁我没兴趣深究了,这异常也算解决了,暂告一段落吧。