开发一个 Chrome 请求代理修改插件(也称为浏览器扩展),可以通过 Chrome 的扩展开发框架(Chrome Extensions API)实现。这类插件通常使用 chrome.webRequest API 来拦截、修改或重定向 HTTP/HTTPS 请求。
以下是开发一个简单的 Chrome 请求代理修改插件的步骤:
1. 创建项目结构首先,创建一个文件夹作为插件的根目录,并在其中创建以下文件:
my-proxy-extension/
├── manifest.json
├── background.js
├── content.js
└── icons/
└── icon.png 2. 编写 manifest.jsonmanifest.json 是 Chrome 扩展的配置文件,定义了扩展的基本信息和权限。
{
"manifest_version": 3,
"name": "Request Proxy Modifier",
"version": "1.0",
"description": "A Chrome extension to intercept and modify HTTP/HTTPS requests.",
"permissions": [
"webRequest",
"webRequestBlocking",
"storage",
"tabs",
"<all_urls>"
],
"background": {
"service_worker": "background.js"
},
"icons": {
"48": "icons/icon.png",
"128": "icons/icon.png"
},
"host_permissions": [
"<all_urls>"
]
} 关键点:webRequest 和 webRequestBlocking:用于拦截和修改请求。<all_urls>:允许扩展对所有 URL 进行操作。background.js:后台脚本,用于处理请求拦截和修改。3. 编写 background.jsbackground.js 是扩展的核心逻辑,负责拦截和修改请求。
// 监听所有请求
chrome.webRequest.onBeforeRequest.addListener(
function (details) {
// 打印请求信息
console.log("Intercepted request:", details);
// 示例:修改请求 URL
if (details.url.includes("example.com")) {
return {
redirectUrl: "https://new-example.com"
};
}
// 示例:阻止请求
if (details.url.includes("block-this-site.com")) {
return {
cancel: true
};
}
// 返回空对象,表示不修改请求
return {};
},
{
urls: ["<all_urls>"] // 监听所有 URL
},
["blocking"] // 需要 blocking 权限来修改请求
); 关键点:onBeforeRequest:在请求发送之前拦截请求。redirectUrl:将请求重定向到新的 URL。cancel:阻止请求。blocking:需要此权限才能修改或阻止请求。4. 测试扩展打开 Chrome 浏览器,输入 chrome://extensions/。打开右上角的 开发者模式。点击 加载已解压的扩展程序,选择你的扩展文件夹(my-proxy-extension)。扩展会被加载,你可以开始测试。5. 高级功能(可选)5.1 修改请求头你可以使用 chrome.webRequest.onBeforeSendHeaders 来修改请求头。
chrome.webRequest.onBeforeSendHeaders.addListener(
function (details) {
// 添加或修改请求头
details.requestHeaders.push({
name: "X-Custom-Header",
value: "MyValue"
});
return {
requestHeaders: details.requestHeaders
};
},
{
urls: ["<all_urls>"]
},
["blocking", "requestHeaders"]
); 5.2 修改响应内容你可以使用 chrome.webRequest.onHeadersReceived 来修改响应头,或结合 content.js 修改响应内容。
chrome.webRequest.onHeadersReceived.addListener(
function (details) {
// 修改响应头
details.responseHeaders.push({
name: "X-Custom-Response-Header",
value: "MyResponseValue"
});
return {
responseHeaders: details.responseHeaders
};
},
{
urls: ["<all_urls>"]
},
["blocking", "responseHeaders"]
); 6. 打包和发布在 chrome://extensions/ 页面,点击 打包扩展程序,选择你的扩展文件夹。生成 .crx 文件后,可以上传到 Chrome Web Store 发布。总结通过 Chrome 的 webRequest API,你可以轻松开发一个请求代理修改插件。核心步骤包括:
配置 manifest.json 文件。使用 background.js 拦截和修改请求。测试并打包扩展。如果你需要更复杂的功能(如动态修改、UI 交互等),可以结合 content.js 和 popup.html 实现。
网友回复


