字
字节笔记本
2026年2月19日
Bing Chat for All Browsers - 跨浏览器访问 Bing Chat 的开源扩展
本文介绍 Bing Chat for All Browsers,一个开源的浏览器扩展项目,它可以让 Chrome 和 Firefox 用户使用 Bing ChatGPT 功能。该项目通过修改 User-Agent 绕过微软对浏览器的限制,实现了跨浏览器访问 Bing Chat 的功能。
项目简介
Bing Chat for All Browsers 是一个由 anaclumos 开发的浏览器扩展,旨在打破微软对 Bing Chat 的浏览器限制。在 Bing Chat 刚推出时,微软仅允许 Microsoft Edge 浏览器访问该功能,而该扩展通过技术手段让 Chrome 和 Firefox 用户也能使用。
注意:该项目已于 2023 年 6 月 30 日被作者归档,目前处于只读状态。
核心特性
- 跨浏览器支持:支持 Chrome 和 Firefox 浏览器
- User-Agent 伪装:通过修改请求头中的 User-Agent 绕过浏览器检测
- 移动端适配:同时支持桌面端和移动端 User-Agent 切换
- 轻量级实现:核心功能仅需少量代码实现
- 开源免费:MIT 许可证,可自由使用和修改
技术栈
- TypeScript (96.2%) - 主要开发语言
- HTML (2.8%) - 扩展界面
- JavaScript (1.0%) - 配置和脚本
- Webpack - 构建工具
工作原理
该扩展的核心原理是通过 Chrome 扩展的 webRequest API 拦截发往 Bing 的请求,并修改请求头中的 User-Agent 字段:
typescript
// Microsoft Edge 的 User-Agent 后缀
const MOBILE_UA_SUFFIX = 'EdgA/42.0.0.2057'
const DESKTOP_UA_SUFFIX = 'Edg/112.0.1722.48'
// 构建伪造的 User-Agent
const uaMaker = (isMobile: boolean): string => {
if (firefox) {
// Firefox 使用完整的 Chrome User-Agent + Edge 后缀
if (isMobile) {
return `${MOBILE_UA_PREFIX} ${MOBILE_UA_SUFFIX}`
}
}
return `${DESKTOP_UA_PREFIX} ${DESKTOP_UA_SUFFIX}`
}
// 监听请求并修改请求头
chrome.webRequest.onBeforeSendHeaders.addListener(
(details) => {
const { requestHeaders } = details
if (!requestHeaders) return undefined
const newHeaders = requestHeaders.map((header) => {
if (header.name.toLowerCase() === 'user-agent') {
const isMobile = header.value?.toLowerCase().includes('mobile') ?? false
header.value = uaMaker(isMobile)
}
return header
})
return { requestHeaders: newHeaders }
},
{ urls: ['*://*.bing.com/*'] },
['blocking', 'requestHeaders']
)技术要点
- 浏览器检测:微软通过检查 User-Agent 中的
Edg/或EdgA/后缀来识别 Edge 浏览器 - User-Agent 构造:扩展根据原浏览器的 User-Agent 添加 Edge 后缀,使其通过验证
- 移动端处理:针对移动设备使用不同的 User-Agent 前缀和后缀
安装指南
Chrome 浏览器
- 访问 Chrome Web Store 安装扩展
- 安装完成后,访问 Bing Chat 即可使用
Firefox 浏览器
- 下载 Firefox 版本的扩展文件
- 在 Firefox 中打开
about:addons - 选择 "从文件安装附加组件"
- 选择下载的扩展文件进行安装
手动安装(开发者)
bash
# 克隆仓库
git clone https://github.com/anaclumos/bing-chat-for-all-browsers.git
cd bing-chat-for-all-browsers
# 安装依赖
pnpm install
# 构建扩展
pnpm build
# 加载到浏览器
# Chrome: 打开 chrome://extensions/,启用开发者模式,加载已解压的扩展
# Firefox: 打开 about:debugging,加载临时附加组件项目结构
text
bing-chat-for-all-browsers/
├── src/
│ ├── background.ts # 核心后台脚本(User-Agent 修改逻辑)
│ └── popup.tsx # 扩展弹出界面
├── public/ # 静态资源(图标等)
├── release/ # 构建输出
├── webpack/ # Webpack 配置
├── package.json # 项目配置
├── tsconfig.json # TypeScript 配置
├── rules.json # 扩展权限配置
├── install.md # 安装说明
└── uninstall.md # 卸载说明代码解析
background.ts 核心逻辑
typescript
declare var firefox: boolean | undefined;
// Edge 浏览器的 User-Agent 后缀
const MOBILE_UA_SUFFIX = 'EdgA/42.0.0.2057'
const DESKTOP_UA_SUFFIX = 'Edg/112.0.1722.48'
// Chrome User-Agent 模板
const DESKTOP_UA_PREFIX = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
const MOBILE_UA_PREFIX = 'Mozilla/5.0 (Linux; Android 8.1.0; Pixel Build/OPM4.171019.021.D1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36'
// 构建伪造的 User-Agent
const uaMaker = (isMobile: boolean): string => {
if (firefox) {
// Firefox 需要替换整个 User-Agent
if (isMobile) {
return `${MOBILE_UA_PREFIX} ${MOBILE_UA_SUFFIX}`
}
}
return `${DESKTOP_UA_PREFIX} ${DESKTOP_UA_SUFFIX}`
}
// 安装时打开安装说明
chrome.runtime.onInstalled.addListener((object) => {
let install = 'http://github.com/anaclumos/bing-chat-for-all-browsers/tree/main/install.md'
if (object.reason.toLowerCase().includes('install')) {
chrome.tabs.create({ url: install })
}
})
// 设置卸载跳转链接
chrome.runtime.setUninstallURL('http://github.com/anaclumos/bing-chat-for-all-browsers/tree/main/uninstall.md')项目统计
- GitHub Stars: 1.5k
- Forks: 103
- 主要语言: TypeScript (96.2%)
- 许可证: MIT
- 贡献者: 5 人
注意事项
- 项目已归档:该项目已于 2023 年 6 月 30 日被作者归档,不再维护
- 功能可能失效:随着 Bing Chat 的更新,该扩展可能已不再有效
- 仅供学习参考:该项目展示了浏览器扩展开发的基本原理和技术实现
项目链接
分享: