Skip to content

Instantly share code, notes, and snippets.

@dodying
Last active November 12, 2024 07:45
Show Gist options
  • Save dodying/82a78ae34838696729ebe49e7668e507 to your computer and use it in GitHub Desktop.
Save dodying/82a78ae34838696729ebe49e7668e507 to your computer and use it in GitHub Desktop.
[Firefox - Chrome 迁移手册] #firefox #chrome

说明

这里列一些我自己经常用的扩展,更多更全面的请参考firefox-webext-list

列表
下载脚本可从这里下载,注意需要登录
Chromium Note Firefox Note
用户脚本
Violentmonkey 开源
[x] Tampermonkey 更成熟
视频
Video DownloadHelper 视频嗅探下载
Flash Video Downloader 已下架 视频嗅探下载
猫抓
Windowed 视频弹窗,开源
通过替换原生全屏事件所以支持很多网站
[x] Video Speed Controller 视频播放速度调整,开源,
支持记忆速度
第三方Fork修改上传
书签
[x] BookmarkHub 书签同步
内置右键存书签 Bookmark Tab Here
Selective Bookmarks Export Tool
Selection Context Search 已下架
[x] Context Search Origin
账户管理
[x] Bitwarden 密码管理器,开源(TOTP需会员)
LastPass 密码管理器
Microsoft 自动填充
身份验证器 生成二步认证代码
Vim
Vimium 键盘控制,开源
[x] Vimium C 键盘控制,开源,且更多设置
保存网页
[x] Web Clipper 同,但版本落后
Joplin Web Clipper
OneNote Web Clipper
Save Page WE 保持网页为单文件(html格式)
[x] Print Edit WE
SingleFile 保持网页为单文件(html格式),可保存到本地/GitHub/WebDAV/Google Drive/SingleFile Companion
MarkDownload 保持网页为单文件(md格式)
Save All Resources
Cookies
Cookie Editor 同名
Open Cookies.txt cookies.txt
EditThisCookie EditThisCookie2
[x] Proxy SwitchyOmega 代理
KProxy Extension
多选
Multi Link Opener 已下架 批量打开网页 Snap Links Plus
Linkclump
自动化
Headless Recorder
Katalon Recorder (Selenium tests generator)
UI.Vision RPA 浏览器自动化工具
截图
内置
Nimbus Screenshot 截图,缺点,自带ffmpeg,非常大
FireShot
固定标签
Pin Tabs 已下架 自动固定标签页 new-tab pinned
[x] Tab pinner 自动固定标签页,需设置
开发者工具
Servistate HTTP Editor 已下架 RESTer
CSS Selector Helper for Chrome™ 根据元素获取选择器 ChroPath 功能有所不同,但基本满足
远程下载
Remote Transmission++ Transmitter for Transmission
Transmission easy client
专注
StayFocusd
LeechBlock NG
---
[x] uBlock Origin 广告过滤,开源 同,需翻
[x] Disable JavaScript
Open-as-Popup PopUp 切换回标签时无法聚焦标签,但其他功能更丰富
Popup!-Popup! 切换回标签时聚焦标签
PubMedy AFYA DOIMaster 各有优势
[x] SimpleExtManager Firefox不允许扩展管理其他扩展
[x] IDM Integration Module
osmos::memo
TabCopy CopyTabTitleUrl
Dwij NewTab KanbanTab
IEability IE View WE
Image Search Options Search by Image
IP Domain Country Flag Flagfox
Bookmarks Checker [ ] Checkmarks
内置翻译 To Google Translate 谷歌快译
[x] 划词翻译
CentBrowser内置二维码 [x] 二维码助手 可以置于地址栏
Ultimate QR-code Generator 功能更足,但只能通过点击图标来使用
[x] Hatsune miku Dream killer 主题
内置下者管理器 [x] Elite Download Manager 高颜值
Download Statusbar 下载状态栏
Downloads sidebar 下者侧边栏
[x] JSON Viewer 内置
EDGE 内置 Tree Style Tab
CentBrowser 内置(小号标签页) Firefox Multi-Account Containers
Link Status Redux
自建
[x] One Click Clean
[x] Search By Bookmark

浏览器使用历史

  • 小学时(小五~): 傲游浏览器
  • 初中: 360安全浏览器 360应该还是IE内核的
  • 高中: Firefox 使用ucjs各种定制,曾向好友安利过Firefox,失败
  • 大学~22-11: CentBrowser 当时Flash开始走向末路 Firefox上某个可以弹出视频窗口的插件(popup啥的)基本失效 因为转换浏览器需要成本(脚本、手势、外观),试了一些浏览器,选择了CentBrowser
  • 22-11~: Firefox Quantum

CentBrowser问题:

  • 第三方,更新慢()

成本与利好

  • 手势,但我有先见之明,早已转移到了全局手势,成本0(使用StrokesPlus.net)
  • 设置:CentBrowser因为方便定制,所以有很多设置,但Firefox基本设置很少,而about:config上的设置又很少用到,成本1
  • 搜索引擎: 成本∞(已使用附加组件实现)
  • 样式:0-1(已使用油猴脚本)
  • 扩展:10-∞(已找到多数替代附加组件)
  • 密码:我基本上用内置密码箱保存密码,所以成本大,但一旦迁移完成,可以同时在ios端同步使用,此外可以直接用第三方密码管理器同步(已迁移到Bitwarden)

Firefox问题:

  • 无法 inspect nodejs(已使用vscode)
  • 调试扩展,安装扩展麻烦(要安装web-ext,调试时没有单独的log)
  • 固定的标签页无法用ctrl+w关闭 (习惯所有标签页都固定)(已通过userChrome.css实现)
  • 无法快速启用禁用扩展(Firefox没有相关API),打开扩展的设置(Chromium,右键默认有选项)(已通过userChromeJS实现)
  • 右键时弹出的菜单背景万年不变,字体过小,丑爆
  • 书签窗口(不是菜单)万年不变,丑爆
  • 下载窗口,万年不变,丑爆
  • 无法右击新建按钮标签来新建搜索

Firefox优势:

  • 配置文件小
  • 内置Pocket
  • 侧边栏

未来动向:

  • CentBrowser (真香)
  • Edge Chromium (鉴于VSCode的优异表现,可以期待,但MS毫无操守,可能说放弃就放弃)
  • Opera
  • Vivaldi

说明

自用
{
  "policies": {
    "AppAutoUpdate": false,
    "AutoLaunchProtocolsFromOrigins": [
      {
        "protocol": "magnet",
        "allowed_origins": [
          "<all_urls>"
        ]
      }
    ],
    "BackgroundAppUpdate": false,
    "DisableAppUpdate": true,
    "DisableFeedbackCommands": true,
    "DisableFirefoxAccounts": true,
    "DisablePocket": true,
    "DisableProfileImport": true,
    "DisableProfileRefresh": true,
    "DisableSetDesktopBackground": true,
    "DisableTelemetry": true,
    "DisplayBookmarksToolbar": "always",
    "DisplayMenuBar": "default-off",
    "DontCheckDefaultBrowser": true,
    "ExemptDomainFileTypePairsFromFileTypeDownloadWarnings": [
      {
        "file_extension": "exe",
        "domains": [
          "<all_urls>"
        ]
      }
    ],
    "FirefoxHome": {
      "Search": true,
      "TopSites": false,
      "SponsoredTopSites": false,
      "Highlights": false,
      "Pocket": false,
      "SponsoredPocket": false,
      "Snippets": false,
      "Locked": true
    },
    "FlashPlugin": {
      "Allow": [],
      "Block": [
        "<all_urls>"
      ],
      "Default": false,
      "Locked": true
    },
    "Homepage": {
      "URL": "about:blank",
      "Locked": true,
      "Additional": [],
      "StartPage": "previous-session"
    },
    "NetworkPrediction": true,
    "NewTabPage": true,
    "NoDefaultBookmarks": true,
    "OfferToSaveLogins": false,
    "OfferToSaveLoginsDefault": false,
    "OverrideFirstRunPage": "about:newtab",
    "PasswordManagerEnabled": false,
    "PasswordManagerExceptions": [
      "<all_urls>"
    ],
    "Permissions": {
      "Camera": {
        "Allow": [],
        "Block": [
          "<all_urls>"
        ],
        "BlockNewRequests": true,
        "Locked": true
      },
      "Microphone": {
        "Allow": [],
        "Block": [
          "<all_urls>"
        ],
        "BlockNewRequests": true,
        "Locked": true
      },
      "Location": {
        "Allow": [],
        "Block": [
          "<all_urls>"
        ],
        "BlockNewRequests": true,
        "Locked": true
      },
      "Notifications": {
        "Allow": [],
        "Block": [],
        "BlockNewRequests": false,
        "Locked": false
      },
      "Autoplay": {
        "Allow": [],
        "Block": [
          "<all_urls>"
        ],
        "Default": "block-audio-video",
        "Locked": true
      }
    },
    "PromptForDownloadLocation": false,
    "SearchBar": "unified",
    "SearchEngines": {
      "Add": [
        {
          "Name": "Example1",
          "URLTemplate": "https://www.example.org/q={searchTerms}",
          "Method": "GET|POST",
          "IconURL": "https://www.example.org/favicon.ico",
          "Alias": "example",
          "Description": "Description",
          "PostData": "name=value&q={searchTerms}",
          "SuggestURLTemplate": "https://www.example.org/suggestions/q={searchTerms}"
        }
      ],
      "Default": "NAME_OF_SEARCH_ENGINE",
      "PreventInstalls": true,
      "Remove": [
        "NAME_OF_SEARCH_ENGINE"
      ]
    },
    "ShowHomeButton": false,
    "UserMessaging": {
      "WhatsNew": false,
      "ExtensionRecommendations": false,
      "FeatureRecommendations": false,
      "UrlbarInterventions": false,
      "SkipOnboarding": false,
      "MoreFromMozilla": false
    },
    "WebsiteFilter": {
      "Block": [
        "http*://weibo.com/"
      ],
      "Exceptions": []
    }
  }
}

说明

user.js 或者 prefs.js 是Firefox储存深度设置(about:config)的文件,更多信息

About:config entries

允许页面访问本地文件(可能失效)

来源: http://kb.mozillazine.org/Links_to_local_pages_do_not_work

以Violentmonkey为例

user_pref("capability.policy.policynames", "violentmonkey");
user_pref("capability.policy.violentmonkey.sites","moz-extension://56b90d2b-f5d3-478b-ab17-2189f7031b26");
user_pref("capability.policy.violentmonkey.checkloaduri.enabled", "allAccess");
允许加载过期插件(如Flash)
user_pref("extensions.blocklist.enabled", false);
运行安装未签名附加组件(仅适用于ESR/Developer/Nightly/三方)
user_pref("xpinstall.signatures.required", false);
user_pref("extensions.langpacks.signatures.required", false);
支持webkit

来源 https://meta.appinn.com/t/chrome/10434/11

user_pref("dom.webkitBlink.dirPicker.enabled", true);
user_pref("layout.css.prefixes.device-pixel-ratio-webkit", true);
user_pref("layout.css.prefixes.webkit", true);
user_pref("layout.css.unknown-webkit-pseudo-element", true);
user_pref("layout.css.webkit-appearance.enabled", true);
自用
user_pref("browser.aboutConfig.showWarning", false);
user_pref("browser.bookmarks.editDialog.showForNewBookmarks", false);
user_pref("browser.compactmode.show", true);
user_pref("browser.download.alwaysOpenPanel", false);
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false);
user_pref("browser.ping-centre.telemetry", false);
user_pref("browser.search.context.loadInBackground", true);
user_pref("browser.search.openintab", true);
user_pref("browser.sessionhistory.max_total_viewers", 10);
user_pref("browser.startup.homepage", "about:blank");
user_pref("browser.tabs.closeTabByDblclick", true);
user_pref("browser.tabs.closeWindowWithLastTab", false);
user_pref("browser.tabs.insertAfterCurrent", true);
user_pref("browser.tabs.loadBookmarksInBackground", true);
user_pref("browser.tabs.loadBookmarksInTabs", true);
user_pref("browser.tabs.loadDivertedInBackground", true);
user_pref("browser.tabs.tabMinWidth", 50);
user_pref("browser.tabs.warnOnClose", true);
user_pref("browser.urlbar.trimURLs", true);
user_pref("devtools.chrome.enabled", true);
user_pref("devtools.debugger.remote-enabled", true);
user_pref("extensions.pocket.enabled", false);
user_pref("geo.enabled", false);
user_pref("media.navigator.enabled", false);
user_pref("media.peerconnection.enabled", false);
user_pref("network.http.max-persistent-connections-per-server", 32);
user_pref("permissions.default.camera", 2);
user_pref("permissions.default.geo", 2);
user_pref("permissions.default.microphone", 2);
user_pref("permissions.default.xr", 2);
user_pref("privacy.userContext.enabled", true);
user_pref("security.dialog_enable_delay", 1);
user_pref("signon.rememberSignons", false);
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
user_pref("toolkit.telemetry.hybridContent.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
user_pref("toolkit.telemetry.reportingpolicy.firstRun", false);
user_pref("toolkit.telemetry.server", "");
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.updatePing.enabled", false);

说明

这里列一些修改Firefox界面的样式 以及基于chromium内核修改的浏览器如何达到相同效果

资源
隐藏书签栏书签名称、文件夹图标

roomy-bookmarks-toolbar.css

自用
/* only needed once */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

/* 隐藏右键按钮 */
#spell-no-suggestions,
#spell-add-to-dictionary,
#spell-undo-add-to-dictionary,
#spell-suggestions-separator,
#context-sendlinktodevice,
#context-sep-sendlinktodevice,
#context-sendimage,
#context-sendvideo,
#context-sendaudio,
#context-imagetext,
#context-viewimagedesc,
#context-sep-setbackground,
#context-setDesktopBackground,
#context-sendpagetodevice,
#spell-separator,
#spell-check-enabled,
#spell-add-dictionaries-main,
#spell-dictionaries,
#context-inspect-a11y,
#context-media-eme-separator,
#context-media-eme-learnmore {
	display: none !important;
}

/* 移除标签页名称、关闭按钮 */
.tabbrowser-tab[fadein]:not([pinned]) {
	max-width: 16px !important;
}

.tabbrowser-tab[fadein]:not([pinned]) .tab-label-container {
	display: none !important;
}

.tabbrowser-tab[fadein]:not([pinned]) .tab-close-button {
	display: none !important;
}

/* 总是显示关闭按钮 */
/*
	.tabbrowser-tab[fadein]:not([pinned]):hover .tab-close-button {
		margin-left: -7px !important;
	}

	.tabbrowser-tab:not([selected]):not([pinned]) .tab-close-button {
		display: -moz-box !important;
	}
*/

/* 仅隐藏书签名称 */
/* Hides bookmark text for all bookmarks displayed in a toolbar */
.bookmark-item>.toolbarbutton-text {
	width: 0;
}

:root[uidensity="compact"] toolbarbutton.bookmark-item:not(.subviewbutton) {
	margin: 0px;
	padding: 2px 1px;
}

/* Show folder names instead of icon */
toolbarbutton.bookmark-item[type="menu"] .toolbarbutton-text {
	width: auto;
}

/* Show the folder icon only if the label is blank */
/* toolbarbutton.bookmark-item[type="menu"] .toolbarbutton-icon[label]:not([label=""]) {
	width: 0px !important;
} */

/* Hide the little bit of padding between the icon and label */
#PlacesToolbarItems>.bookmark-item:not([type="menu"])>.toolbarbutton-icon[label]:not([label=""]) {
	margin-inline-end: 0px !important;
}

说明

一些仓库

已安装的ucjs

scripts

extensions

一些脚本

autoClose_blankTab
(function () { // https://www.firefox.net.cn/read-121336
  autoClose_blankTab();
  function autoClose_blankTab() {
    gBrowser.addTabsProgressListener({
      onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
        if (!aRequest || !aWebProgress.isTopLevel) return;
        let location;
        try {
          aRequest.QueryInterface(Ci.nsIChannel);
          location = aRequest.URI;
        } catch (ex) { }
        if ((aStateFlags & Ci.nsIWebProgressListener.STATE_STOP)
        && (aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK)
        && location && location.spec !== 'about:blank'
        && aBrowser.documentURI && aBrowser.documentURI.spec === 'about:blank'
        && Components.isSuccessCode(aStatus) && !aWebProgress.isLoadingDocument
        ) {
          setTimeout(() => {
            gBrowser.removeTab(gBrowser.getTabForBrowser(aBrowser));
          }, 100);
        }
      },
    });
  }
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment