Firefox: a Love Story

tl;dr 你应该使用 firefox 以及我打算不再使用 firefox。

me and browsers

等闲变却故人心,却道故人心易变。

那时候,没有一个人会因为使用 opera 而感到羞耻。opera 用户不会因为很多网站不支持 opera 而放弃 opera,opera 用户会因为很多网站不支持 opera 而放弃很多网站。It came as a shock, opera 竟然要抛弃 presto。是什么让从来不在乎自己市场份额一万年1%的 opera 发生如此大改变?Presto is what distinguishes opera from other browsers. 做为一个前 opera 用户,我多希望 presto 之后的世界里还有,一个 1g 内存还能轻松打开几十个标签的浏览器。opera 12.16 之后,我继续使用 opera 了一段时间,后来也终于放弃了这个 abandonware。我意识到我用的东西不是 at the whim of a for-profit cooperation 的重要性,如果 opera 是开源(自由)的,也许 classical opera 就能永存,不会是 slow death of unmaintianence.

少年不识其滋味,而今识尽其滋味

我跟你一样,一开始也不知道 firefox 有啥好。从第一次使用 firefox 的到爱上 firefox 我大约花了四年。这四年我根本就没有再使用过 firefox。我根本无法接受这么丑陋的浏览器。我第一次使用 firefox 是上了当,上了无数人的当,每个人都在说 firefox 的插件会让你的浏览器变得多强大,没有人说 firefox 的插件会让你的浏览器变得多丑陋。

下面主要要说的正是这些失去它们之后,我生活不能自理的插件(O Freunde, nicht diese Töne!)。Firefox 57 is coming. 很快这些插件就要死一大半了(不死也要残废),所以我打算不再使用 firefox(我打算加入地下组织,用 luakit, Pale Moon, qutebrowser 之类的非主流了)。但是你应该使用 firefox,因为隐私、自由以及爱。There are already many people elaborated on it.

tl;dr Web 是唯一真正开放的平台。我们需要 mozilla 这样的 non-profit organization 来保护我们的隐私与自由。We can not count on a benevolent dictator。今天 google 可以用 google docs 这些产品来不正当推广 chrome,明天不知道它要用 chrome 来做什么不可告人之事。

撇开 ideology,你也应该使用 firefox。Firefox 57 is every thing Chrome users ever wanted. It is blazingly fast. It just works. 你现在安装插件也不要重启了。即便很多插件 are crippled by firefox 57. 比起 chrome 来还是不知道高到哪里去了,see uBlock Origin Maintainer on Chrome vs. Firefox WebExtensions

no alternative

It is safe to say opera 12 之后主流浏览器(i.e. 不断手断脚的)再也没有轻量级一说。It is equally safe to say firefox 56 之后主流浏览器(i.e. 不断手断脚的)再也没有可定制一说。But my quest from a lightweight, customizable browser will never end.

曾经沧海难为水,除却巫山不是云。

The most sanguine candidate is Vivaldi, except it is not libre!

取次花丛懒回顾,半缘修道半缘君。

用过 Firefox 之后很难再用其它浏览器了(也很难再用 firefox 57)。

没有插件?deal-breaker! 改个代理还要点100下鼠标。插件系统不够强大?deal-breaker! Chrome 的插件系统很垃圾(firefox 57也是),最简单的例子就是,插件必须要等网页加载完才能用,有些系统页面用不了插件,这样更改键盘快捷键会很什么意义,因为你经常发现你按了没反应。 所以大约基本只能选择 similar projects to qutebrowser.

all the good old things

下面就是我的 firefox 曾经装过啥,或曰,我的 firefox 即将不能装啥。

Add Bookmark Here ²

Add Bookmark Here ²

AutoPagerize

AutoPagerize 自动翻页。

Dorando keyconfig

Dorando keyconfig 更改快捷键。 firefox sb 关闭标签和关闭窗口的快捷键 ctrl+w 和 ctrl+q 很容易按错。据说用 dvorak 可以解决。

Easy Copy

Easy Copy 比如写文章的时候复制链接。也可用于复制所有链接,比如用来下载 youtube 视频。

Extension List Dumper 2

Extension List Dumper 2

FlashGot

FlashGot

  • 可以在劫持下载对话框,调用外部程序下载。用 aria2 尤其爽。
  • sniff 流媒体,我的毛片就是这样收集起来的,关键是可以传递 cookies,不然的即使嗅探到了真正的播放地址也没用。
  • sniff 流媒体,调用外部播放器播放,关键是可以传递 cookies,不然的即使嗅探到了真正的播放地址也没用。你可以使用 mpv 来播放网页视频。mpv 的参数如下。
 [--http-header-fields=HEADERS] [--user-agent=UA] [--referrer=REFERER] [--cookies --cookies-file=CFILE] [URL]

FlashStopper

FlashStopper 阻止自动播放。

Form History Control

Form History Control 自动保存正在编辑的文本框。我以前一个帖子写到4点。不是我要发表的东西太深刻,只是我写着写着按了下 f5.

Greasemonkey

Greasemonkey stylish 可以改变网站外表,greasemonkey 可以用来网站的行为。

比如你经常上 imdb,你希望 imdb 能够直接链接到 netflix amazon video apple, piratebay or whatever。你可以用 IMDb: Link ‘em all!. 再比如说,狗日的百度网盘不让你直接下载大文件,你可以用 EX-百度云盘。还有Anti-Adblock Killer Continued. 以及一个不要乱点的网站 Sleazy Fork

Habitica for your favorite browser

Habitica for your favorite browser gamify tasks. 上一次黃网死一滴血。

Pan

Pan 修改代理,不止是修改代理。可以使用 gfwlist,也用来拦截广告。我现在已经不再使用它,因为我发现我只用全局代理+黑名单。我发现没有一个代理管理插件支持全局代理+黑名单。最后我用的是firefox自身的代理系统+vimperator 插件,最后设置了一下快捷键。 can’t be happier.

Pocket

Pocket: Firefox

Reddit Enhancement Suite

Reddit Enhancement Suite

互联网上什么破事都有一个 wiki 页面。互联网上什么破事都有一个 subreddit。后来我才发现 reddit 是一个很好的黄网。我常去的 subreddits

Redirect Remover

Redirect Remover 为了你妈的安全,老子就想直接打开网页。

Resurrect Pages

Resurrect Pages 404 拯救工具。

Sci-Hub Links

Sci-Hub Links

Searchonymous

Searchonymous google 个性搜索会使用算法将你访问过的网站排名提高,这样你没访问过的网站可能你永远都没有机会访问了。匿名搜索以避免回声室效应。我现在用的 duckduckgo + searchengineJump

Site Launcher

Site Launcher site launcher 不仅可以给网站设置快捷键,也可以用来运行 bookmarklet。比如你可以运行 pocket 的 bookmarklet,也可一键保存到onenote。

Sitzungs-Manager

Sitzungs-Manager must have。自动保存 sessions. 想象一下,100 多个网页还没看完。一小心全关了的感受。

Space Next

Space Next 每天你要点击多少次下一页?空格键翻页。

Stylish

Stylish 改变网站外观。

Stylish Sync

Stylish Sync

Tab Tree

Tab Tree 拖延癌晚期患者必备。

看视频的时候,用宽屏更好,因为眼睛是长在左右两边。但是看文字屏幕太宽很费劲。最好的文章宽度是稍微超过两眼直接看过去的距离,这样你既不需要移动太大视线,也可稍微略过一些两端的文字,进行速读。所以用 tab tree 把标签栏竖直摆放更利于阅读。 另一方面,竖直空间更大,可以避免这种情况。 One more thing,tab tree 能记住你现在打开的标签它爹是谁,你可以一键灭了它全族。比方说,你电脑出了故障,你可能要看很多网页才能找到解决方案,找到一个解决方案之后,前面打开的网页就全没用了。 此时,你可以一键灭了它全族。你也可以一键灭了下面的所有标签。

uBlock Origin

uBlock Origin 不要使用 ublock,使用 ublock origin。不要使用 adblock plus,使用 uclock origin。Android 上也可使。

User Agent Switcher

User Agent Switcher 总有一些狗日的网站领个券都要你用一下手机。总有些狗日的网站要你用 chrome。用这个可以伪装成你是 chrome 用户,伪装成你是手机用户。

Vimperator

Vimperator or Pentadactyl It was a killer app, killed by Mozilla。如果你只装一个插件,那么就装这个。

事实上,下面的配置都是针对 pentadactyl 的,vimperator 要稍做改动.

好处如下:

keyboard shortcuts

键盘快捷方式。一切都可以用键盘来操作。举几个例子,你应该一天要点很多次下一页,现在你只需要按下 ]] 就行了;你应该一天要很多次拖动 scroll bar,现在你只需要按下 23gg 就行了;你应该一天要切换很多次标签,现在你只需要按下 gt 就行了。 最妙的是的操作都是可以自定义的。

另外可以使用 key sequence 解决了 modifier keys 太少的问题。你从来没有见过 ctrl+x+a 这样的快捷键。因为 a 或者 x 不是 modifier key,同时按无效。vimperator 允许你使用 ctrl+x ctrl+a (先按 ctrl+x,再按 ctrl+a) 这样的快捷键,现在你有无穷种可能的键盘组合了,因为 ctrl+x ctrl+x ctrl+x ctrl+a 也是合法的。你可以像我一样定义 leader key.

javascript <<EOF
if (navigator.appVersion.indexOf("Mac") != -1) {
    dactyl.execute('map <C-c> <Leader1>');
    dactyl.execute('map <C-x> <Leader2>');
    dactyl.execute('map <C-v> <Leader3>');
    dactyl.execute('map <C-s> <Leader4>');
} else {
    dactyl.execute('map <A-c> <Leader1>');
    dactyl.execute('map <A-x> <Leader2>');
    dactyl.execute('map <A-v> <Leader3>');
    dactyl.execute('map <A-s> <Leader4>');
}
EOF

    map <Leader1>s :pocket <CR>
    map <Leader2>d :tabopen about:downloads<CR>
    map <Leader3>m :javascript dactyl.clipboardWrite('[' + buffer.title + '](' + buffer.URL + ')', true)<CR>
    map <leader4>l -js str=DOM.stringify(buffer.focusedFrame.getSelection()); str!=""?dactyl.execute("tabopen !libgen " + str):CommandExMode().open("tabopen !libgen ")

ui & interaction

vimperator 真正的强大之处在于它给你提供了一个独特的操作和管理 firefox 的方式。

比如 ex command。ex command 就是用 “:open url” 来打开 url。一开始可能并不见得比点下地址栏方便多少。ex command 命令的好处在于它可以 programmatically, automatically 实现很多功能。

举个例子,有一次我看到有人在 reddit 上求 sauce。我看那女的长得还行,打算回馈一下社区(据说这句可以忽略)。于是我根据截图的信息找到了官网。这破网站明星列表上居然连图片也没有,而且没有超链接(付费可见)。明星资料页有是有的,而且 url 尾部就是一个递增的数字。总共有 200 多个。一个一个打那不是要命。用命令行打开所有的网页是没问题的。问题在于用我的某个特定的 profile 的 private tab 打开这些网页。这时候 vimperator 出场了。我首先生成了一个内容类似如下的文件。

:tabopen https://prefix/1.html
:tabopen https://prefix/2.html
:tabopen https://prefix/3.html
"..."
:tabopen https://prefix/273.html

然后 source 该文件,done。It’s that simple. 用 vimperator greatly enhanced my productivity.

minimlism

2017-11-09-085038_1366x768_scrot.png

completion

一百多个标签里的一个标签是什么感觉?

firefox

要快速找到某一个,真是要命。用 vimperator可以拯救你。

pentadactylBuffer.gif

utilities

如果不用 vimperator 你可能一个最基本的任务也要安装上一个插件,甚至有时候你需要自己写一个插件。因为 vimperator 提供了很多实用的 utilities,用 vimperator 让你用最有效率的方式轻松办到这些事情。

如果你只需要复制当前 url,那你肯定会直接点击地址栏,然后 ctrl+c。但是你要复制标题的话,就没有什么好办法了。更别提你要复制 markdown 格式的链接。每一个如此简单的任务也需要安装一个插件,Firefox 肯定会臃肿不堪。用 vimperator 之后,你可以轻松定义你想要复制的任何格式,并定义快捷键。

map <Leader3>m :javascript dactyl.clipboardWrite('[' + buffer.title + '](' + buffer.URL + ')', true)<CR>

再比如,我经常需要运行某个脚本,参数可能是当前页面 url 或者当前页面标题。除去 vimperator,很难找到一个满意的插件(to be fair, external application button 之类的可以调用脚本,但是无法定义快捷键)。我每天需要从浏览器调用 mpv.sh,在 mpv 里看视频,sendemail.sh,将 url 发送到其它设备。

command! mpv -description "play current page in mpv" silent js io.run(FileUtils.getFile("Home", [".scripts", "mpv.sh"]).path, [buffer.URL])

再比如说,我经常要用 google 搜索某本书或某篇文章,这样我可以确定没有拼写错误。然后我再使用 libgen 或 scihub 下载。每次我都要先进行 priliminary search,复制正确的信息,再打开 libgen 或 scihub 网页,最后搜索并下载。整个过程非常麻烦。现在我只需要选中需要搜索的关键词,然后 alt+s l 即可。

map <leader4>l -js str=DOM.stringify(buffer.focusedFrame.getSelection()); str!=""?dactyl.execute("tabopen !libgen " + str):CommandExMode().open("tabopen !libgen ")

javascript

还是上面女明星的例子,我根本不需要生成一个文本文件,然后 source 它,这就是一个 for 循环的事啊。

:javascript for (i =0 ; i < 20 ; i++) {dactyl.execute(":tabopen https://prefix/" + i.toString())}

我真是太年轻了。

理论上,所有 firefox 插件能干的事情你都可以用 vimperator 插件来干。更改代理,更改 user agent 什么的都已经有人实现了。

Zotero

Zotero (not activated) another killer app.

Zotero Bibliography Locale Switcher

Zotero Bibliography Locale Switcher (not activated)

Zotero Scholar Citations

Zotero Scholar Citations (not activated)

ZotFile

ZotFile (not activated) 自动重命名。发送到平板。

Zutilo Dienstprogramm für Zotero

Zutilo Dienstprogramm für Zotero (not activated)

1-Click YouTube Video Downloader”

1-Click YouTube Video Downloader” (not activated)

Adblock Plus

Adblock Plus (not activated)

Add to Wunderlist

Add to Wunderlist (not activated)

Alternative search

Alternative search (not activated)

APK Downloader

APK Downloader (not activated)

AutoProxy-ng

AutoProxy-ng (not activated)

Bamboo Feed Reader

Bamboo Feed Reader (not activated)

Better Reader

Better Reader (not activated)

betterFox - Make your browsing experience 15% faster.

betterFox - Make your browsing experience 15% faster. (not activated)

Brief

Brief (not activated)

Cleanest Addon Manager

Cleanest Addon Manager (not activated)

Click-to-Play Manager

Click-to-Play Manager (not activated)

cliget

cliget (not activated)

Copy as Org-mode

Copy as Org-mode (not activated)

Copy Plain Text 2

Copy Plain Text 2 (not activated)

Decentraleyes

Decentraleyes (not activated)

Diigo Toolbar

Diigo Toolbar (not activated)

Disconnect

Disconnect (not activated)

Disconnect Search

Disconnect Search (not activated)

DOI Search

DOI Search (not activated)

Download with Aria2

Download with Aria2 (not activated)

Download YouTube Videos as MP4

Download YouTube Videos as MP4 (not activated)

DownThemAll!

DownThemAll! (not activated) flashgot 加上这个就是下片神器。我现在用 flashgot + aria2. 主要的可以下载到 vps.

DownThemAll! AntiContainer

DownThemAll! AntiContainer (not activated)

EverSync - Sync bookmarks, backup your favorites.

EverSync - Sync bookmarks, backup your favorites. (not activated)

Exif Viewer

Exif Viewer (not activated)

dox 别人必备。

External Video

External Video (not activated)

FaviconizeTab

FaviconizeTab (not activated)

Feed Sidebar

Feed Sidebar (not activated)

FireGestures

FireGestures (not activated)

Firemacs

Firemacs (not activated)

vimperator counterpart

Forest: stay focused, be present

Forest: stay focused, be present (not activated)

FoxyProxy Standard

FoxyProxy Standard (not activated)

Gmail™ Notifier (restartless)

Gmail™ Notifier (restartless) (not activated)

gooreplacer

gooreplacer (not activated)

Hacker News Feed

Hacker News Feed (not activated)

Hacker News Reader

Hacker News Reader (not activated)

HTTPS Everywhere

HTTPS Everywhere (not activated)

iMacros for Firefox

iMacros for Firefox (not activated)

JavaScript Deobfuscator

JavaScript Deobfuscator (not activated)

Keybinder

Keybinder (not activated)

Keyboard Shortcut

Keyboard Shortcut (not activated)

Keyboard Surfing

Keyboard Surfing (not activated)

LeechBlock

LeechBlock (not activated)

Lesezeichen Tab

Lesezeichen Tab (not activated)

Media Keys

Media Keys (not activated)

Menu Wizard

Menu Wizard (not activated)

mpv-youtube-dl-binding

mpv-youtube-dl-binding (not activated)

Nimbus Screen Capture - editable screenshots.

Nimbus Screen Capture - editable screenshots. (not activated)

NoScript

NoScript (not activated)

Omnibar

Omnibar (not activated)

OneTab

OneTab (not activated)

PassIFox

PassIFox (not activated)

Paste and Go Key

Paste and Go Key (not activated)

Persistent “Magic” Password Generator :: [sebres-pwd-hasher]

Persistent “Magic” Password Generator :: [sebres-pwd-hasher] (not activated)

PiP Video

PiP Video (not activated)

Prevent Tab Overflow

Prevent Tab Overflow (not activated)

Print Edit

Print Edit (not activated)

Proxy Switcher

Proxy Switcher (not activated)

pwgen - Passwort Generator

pwgen - Passwort Generator (not activated)

QrCodeR

QrCodeR (not activated)

QuickFox Notes

QuickFox Notes (not activated)

Raindrop.io: “Save Button” for Web

Raindrop.io: “Save Button” for Web (not activated)

Random Agent Spoofer

Random Agent Spoofer (not activated)

RefControl

RefControl (not activated)

ScrapBook X

ScrapBook X (not activated)

Secure Password Generator

Secure Password Generator (not activated)

Self-Destructing Cookies

Self-Destructing Cookies (not activated)

Send to aria2

Send to aria2 (not activated)

ShortcutKey2URL

ShortcutKey2URL (not activated)

Silvermel and Charamel XT

change meSilvermel and Charamel XT (not activated)

Simplify Awesome Bar

Simplify Awesome Bar (not activated)

Speed Dial [FVD] - New Tab Page, Sync…

Speed Dial FVD - New Tab Page, Sync… (not activated)

Tab Grenade

Tab Grenade (not activated)

Tab Memory Usage

Tab Memory Usage (not activated)

Tab Mix Plus

Tab Mix Plus (not activated)

Telegram™ Desktop

Telegram™ Desktop (not activated)

TiddlyWiki for Firefox

TiddlyWiki for Firefox (not activated)

Tile Tabs

Tile Tabs (not activated)

TooManyTabs

TooManyTabs (not activated)

Tree Style Tab

Tree Style Tab (not activated) 拖延癌晚期患者必备,如果你跟我一样常年开着100 多个标签。

UAControl

UAControl (not activated)

Vertical Tabs

Vertical Tabs (not activated)

VimFx

VimFx (not activated)

YouTube ALL HTML5

YouTube ALL HTML5 (not activated)

Publié le par v dans «misc». Mots-clés: tech, freedom, privacy, firefox