Firefox ๋ธŒ๋ผ์šฐ์ € ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ
  • ํ™•์žฅ ๊ธฐ๋Šฅ
  • ํ…Œ๋งˆ
    • Firefox์šฉ
    • ์‚ฌ์ „ ๋ฐ ์–ธ์–ด ํŒฉ
    • ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ดํŠธ
    • Android ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ
๋กœ๊ทธ์ธ
Simple Suspender ๋ฏธ๋ฆฌ๋ณด๊ธฐ

Simple Suspender ์ œ์ž‘์ž: VehpuS

Suspend / unsuspend a tab, with minimal privacy concerns by design

4.1 (9 reviews)4.1 (9 reviews)
์‚ฌ์šฉ์ž 31๋ช…์‚ฌ์šฉ์ž 31๋ช…
์ด ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Firefox๊ฐ€ ํ•„์š”ํ•จ
Firefox๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํ™•์žฅ ๊ธฐ๋Šฅ์„ ๋ฐ›์œผ์„ธ์š”
ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

ํ™•์žฅ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ

์Šคํฌ๋ฆฐ์ƒท
This is how suspended tabs will appear.
์ •๋ณด
A cross-browser extension to suspend inactive / unused tabs by "hiding" them behind a static, generic browser error page. Basically to suspend https://moshe-gr.com, it will be redirected to http://localhost:0/#https://www.moshe-gr.com (try it ;) ).

If you want to install the extension from source code (to ensure no possible abuse) - follow the instructions in the Github repo: https://github.com/VehpuS/simple-cross-browser-suspender.
๊ฐœ๋ฐœ์ž ์˜๊ฒฌ
Background
==========
My own TL;DR
--------------------

The great suspender was an extension that would automatically replace an open tab with a static, low memory page that would redirect back to the original on demand or after a set idle time. After a change of ownership, it was abused to contain malware, and therefore removed by Google.

Looking to avoid another extension by an unknown developer (who can always change), I opted to find a safer solution. I believe I have found it and want to share it in a way that can let others use / replicate it for their own benefit, at the level of knowledge and safety they require.

Additional resources
------------------------------
The great suspender (RIP): https://www.zdnet.com/article/google-kills-the-great-suspender-heres-what-you-should-do-next/

In much more detail: https://github.com/greatsuspender/thegreatsuspender/issues/1263

Why is this solution safer
=====================
No static page - cannot be abused without changing the logic in a noticeable way.

Hash parameter - not sent to a server by the browser, by design.
https://stackoverflow.com/questions/15238391/hash-params-vs-url-params-when-to-use-which

I decided to use localhost:0 as a "host" to keep things local, and on a port that shouldn't conflict with other services / local servers.
See why here: https://www.lifewire.com/port-0-in-tcp-and-udp-818145

Simple code base - easy to fork, install manually, and if necessary - replicate.

The core of the script boils down to:

const suspendPrefix = "https://localhost:0/#";
const toggleSuspendUrl = (pageUrl) =>
pageUrl.startsWith(suspendPrefix)
? pageUrl.replace(suspendPrefix, "")
: `${suspendPrefix}${pageUrl}`;
if (browser) {
browser.browserAction.onClicked.addListener((tab) => {
browser.tabs.update(tab.id, { url: toggleSuspendUrl(tab.url) });
});
}

The API I'm using doesn't require running Javascript code on the web page in the tab - just to get a page's URL. This makes the abuse potential minimal, and is reflected in the extensions limited permissions.

Advanced features, if/when added, will be "opt in" via a separate installation (on stores if / when I upload them) and branch (or possibly repository) - to always provide a stable, simple, and secure base version.

Known issues
===========
Cannot unsuspend internal pages in Firefox, due to the following issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1269456
9๋ช…์ด 4.1์ ์œผ๋กœ ํ‰๊ฐ€ํ•จ
๋กœ๊ทธ์ธํ•˜์—ฌ ์ด ํ™•์žฅ ๊ธฐ๋Šฅ์˜ ํ‰์ ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”
์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

๋ณ„์  ์ €์žฅ๋จ

5
5
4
2
3
1
2
0
1
1
๋ฆฌ๋ทฐ 9๊ฐœ ๋ชจ๋‘ ์ฝ๊ธฐ
์ถ”๊ฐ€ ์ •๋ณด
๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ๋งํฌ
  • ํ™ˆ ํŽ˜์ด์ง€
  • ์ง€์› ์ด๋ฉ”์ผ
๋ฒ„์ „
1.0
ํฌ๊ธฐ
40.41 KB
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ
4๋…„ ์ „ (2021๋…„ 7์›” 24์ผ)
๊ด€๋ จ ์นดํ…Œ๊ณ ๋ฆฌ
  • ํƒญ
๋ผ์ด์„ ์Šค
MIT ๋ผ์ด์„ ์Šค
๋ฒ„์ „ ๋ชฉ๋ก
  • ๋ชจ๋“  ๋ฒ„์ „ ๋ณด๊ธฐ
๋ชจ์Œ์ง‘์— ์ถ”๊ฐ€
์ด ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ์‹ ๊ณ 
์ด ๊ฐœ๋ฐœ์ž ์ง€์›

์ด ํ™•์žฅ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์€ ๊ธฐ์—ฌ๋กœ ์ง€์†์ ์ธ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•ด ์ค„ ๊ฒƒ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์—ฌํ•˜๊ธฐ

VehpuS ๋‹˜์˜ ๋‹ค๋ฅธ ํ™•์žฅ ๊ธฐ๋Šฅ
  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

Mozilla ํ™ˆํŽ˜์ด์ง€๋กœ ์ด๋™

๋ถ€๊ฐ€ ๊ธฐ๋Šฅ

  • ์†Œ๊ฐœ
  • Firefox ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ๋ธ”๋กœ๊ทธ
  • ํ™•์žฅ ๊ธฐ๋Šฅ ์›Œํฌ์ƒต
  • ๊ฐœ๋ฐœ์ž ํ—ˆ๋ธŒ
  • ๊ฐœ๋ฐœ์ž ์ •์ฑ…
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ธ”๋กœ๊ทธ
  • ํฌ๋Ÿผ
  • ๋ฒ„๊ทธ ์‹ ๊ณ 
  • ๋ฆฌ๋ทฐ ์ง€์นจ

๋ธŒ๋ผ์šฐ์ €

  • Desktop
  • Mobile
  • Enterprise

์ œํ’ˆ

  • Browsers
  • VPN
  • Relay
  • Monitor
  • Pocket
  • Bluesky (@firefox.com)
  • Instagram (Firefox)
  • YouTube (firefoxchannel)
  • ๊ฐœ์ธ ์ •๋ณด
  • ์ฟ ํ‚ค
  • ๋ฒ•๋ฅ 

ํŠน๋ณ„ํ•œ ๊ณ ์ง€๊ฐ€ ์—†๋Š” ํ•œ, ๋ณธ ์‚ฌ์ดํŠธ์˜ ์ฝ˜ํ…์ธ ๋Š” Commons Attribution Share-Alike License v3.0 ๋˜๋Š” ๊ทธ ์ดํ›„ ๋ฒ„์ „์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ด ํ—ˆ๊ฐ€๋ฉ๋‹ˆ๋‹ค.