Chrome 扩展开发 API实战:Proxy(七)

十念  金牌会员 | 2025-3-14 20:13:30 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 990|帖子 990|积分 2970



1. 引言

在现代浏览器生态中,代理设置是提升网络访问速度、保障隐私安全的重要手段。对于开发者而言,掌握如安在 Chrome 扩展程序中设置代理功能,不仅能满足特定的网络需求,还能为用户提供更灵活的上网体验。本文将以通俗易懂的语言,详细介绍如安在 Chrome 扩展程序中使用 chrome.proxy API 设置代理。
2. 初识 chrome.proxy API

chrome.proxy API 是 Chrome 浏览器提供的用于管理代理设置的接口。通过该 API,开发者可以在扩展程序中动态地设置和控制浏览器的代理举动。要使用此 API,首先需要在扩展程序的清单文件 (manifest.json)中声明相应的权限。
2.1 设置清单文件

在 manifest.json 中,需要添加 proxy 权限,以答应扩展程序使用代理设置 API。此外,还需指定配景脚本 (background)或服务工作线程 (service_worker),用于处理代理设置逻辑。
  1. {
  2.   "manifest_version": 3,
  3.   "name": "代理设置扩展",
  4.   "version": "1.0",
  5.   "permissions": [
  6.     "proxy",
  7.     "storage"
  8.   ],
  9.   "background": {
  10.     "service_worker": "background.js"
  11.   },
  12.   "action": {
  13.     "default_popup": "popup.html",
  14.     "default_icon": {
  15.       "16": "icon.png",
  16.       "48": "icon.png",
  17.       "128": "icon.png"
  18.     }
  19.   },
  20.   "icons": {
  21.     "16": "icon.png",
  22.     "48": "icon.png",
  23.     "128": "icon.png"
  24.   }
  25. }
复制代码
2.2 设置代理模式

chrome.proxy API 支持多种代理模式,包括:


  • direct:直接毗连,不使用代理。
  • auto_detect:自动检测代理设置。
  • pac_script:使用指定的 PAC (自动设置) 脚本。
  • fixed_servers:使用固定的代理服务器。
  • system:使用体系代理设置。
2.3 代理模式详解

2.3.1 direct 直连模式

  1. chrome.proxy.settings.set({ value: { mode: "direct" }, scope: "regular" });
复制代码
实用于无需使用代理的情况,浏览器会直接毗连目的服务器。
2.3.2 auto_detect 自动检测模式

  1. chrome.proxy.settings.set({ value: { mode: "auto_detect" }, scope: "regular" });
复制代码
实用于浏览器自动检测网络环境并选择最佳代理的情况。
2.3.3 pac_script PAC 脚本模式

  1. chrome.proxy.settings.set({
  2.   value: {
  3.     mode: "pac_script",
  4.     pacScript: {
  5.       data: "function FindProxyForURL(url, host) { return 'PROXY 127.0.0.1:8080'; }"
  6.     }
  7.   },
  8.   scope: "regular"
  9. });
复制代码
使用 PAC 脚本进行更高级的代理设置,实用于复杂的网络代理环境。
2.3.4 fixed_servers 固定服务器模式

  1. chrome.proxy.settings.set({
  2.   value: {
  3.     mode: "fixed_servers",
  4.     rules: {
  5.       singleProxy: {
  6.         scheme: "http",
  7.         host: "192.168.1.1",
  8.         port: 3128
  9.       }
  10.     }
  11.   },
  12.   scope: "regular"
  13. });
复制代码
指定固定的代理服务器,实用于明白的代理环境。
2.3.5 system 体系代理模式

  1. chrome.proxy.settings.set({ value: { mode: "system" }, scope: "regular" });
复制代码
使用操纵体系默认的代理设置。
3. 监听代理设置事件

在某些情况下,我们希望在代理设置变更时实行特定操纵,比如通知用户或者记录日记。Chrome 提供了 chrome.proxy.settings.onChange 事件用于监听代理设置的变化。
3.1 监听代理变化

  1. chrome.proxy.settings.onChange.addListener(function(details) {
  2.   console.log("代理设置已更改:", details);
  3. });
复制代码
3.2 获取当前代理设置

偶然候,我们需要获取当前的代理设置,比如在扩展的 UI 中显示当前代理信息。可以使用 chrome.proxy.settings.get 方法来实现:
  1. chrome.proxy.settings.get({
  2.   incognito: false
  3. }, function(config) {
  4.   console.log("当前代理设置:", config);
  5. });
复制代码
4. 代理身份验证

某些代理服务器需要身份验证,Chrome 扩展程序可以监听 onAuthRequired 事件并提供用户凭据。
  1. chrome.webRequest.onAuthRequired.addListener(
  2.   function(details, callback) {
  3.     callback({
  4.       authCredentials: {
  5.         username: "your-username",
  6.         password: "your-password"
  7.       }
  8.     });
  9.   },
  10.   { urls: ["<all_urls>"] },
  11.   ["asyncBlocking"]
  12. );
复制代码
5. 总结

通过此文,我们介绍了 Chrome 扩展程序中怎样设置代理,并提供了不同代理模式的使用示例。我们还讨论了怎样监听代理变化事件,并在代理服务器需要身份验证时提供用户凭据。使用 chrome.proxy API,开发者可以在扩展中实现自定义代理,以适应不同网络环境下的需求。在下一篇文章中,我们将进一步探讨怎样通过 PAC 脚本实现高级代理设置。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表