ब्राउज़र एक्सटेंशन्स का कम आंका जाना: हैक किए जा सकने वाले सॉफ्टवेयर का वादा (2019)
(geoffreylitt.com)- ब्राउज़र एक्सटेंशन, स्मार्टफोन और डेस्कटॉप platforms के विपरीत, एक दुर्लभ hackable software ecosystem है जो users को web apps को मूल developer की मंशा से अलग तरीकों से बदलने देता है
- Chrome Store में 1.8 लाख से अधिक extensions और लगभग आधे Chrome users द्वारा इन्हें install करना दिखाता है कि अगर आसान तरीका हो तो आम users भी personalized user experience खुद assemble करते हैं
- extensions के व्यापक उपयोग की वजह app-specific APIs नहीं, बल्कि इंसान द्वारा पढ़े जा सकने वाला client code, अर्थपूर्ण markup और standard web layout जैसी web की openness है
- password input, Kanji पढ़ना, annotations, ad blocking, 2x playback जैसे extensions कई sites पर काम करने वाले छोटे tools हैं, जो विशाल app-केंद्रित model से अलग software experience बनाते हैं
- malicious extensions और privacy violations से निपटना जारी रखना होगा, लेकिन accessibility, compatibility और permissions का संतुलन सही रखा जाए तो users द्वारा इस्तेमाल किए जाने वाले software को गहराई से बदलने की extensibility बचाई जा सकती है
ब्राउज़र extensions खास क्यों हैं
- हाल में browser extensions पर चर्चा web history collect करने वाले malicious extensions और Google द्वारा ad blocking features सीमित करने पर केंद्रित रही है, लेकिन extensions अब भी user-driven software का एक खास उदाहरण हैं
- प्रमुख software platforms में browser extensions एक दुर्लभ अपवाद हैं, जो users को रोज़ इस्तेमाल होने वाले apps को मूल developer की मंशा से बाहर बदलने की अनुमति और प्रोत्साहन देते हैं
- smartphones और desktop platforms पर ऐसे बदलाव दुर्लभ या असंभव हैं, लेकिन browser में यह रोजमर्रा की गतिविधि बन चुका है
- extensions users में यह एहसास फिर जगाते हैं कि वे computer इस्तेमाल करने के तरीके पर अधिक गहरा control रख सकते हैं
users द्वारा खुद assemble किया गया software
- जब software platform एक निश्चित स्तर से अधिक open हो जाता है, तो आम users का software से संबंध बनाने का तरीका भी बदल जाता है
- Gmail के 4 extensions install कर visual design से लेकर core features तक बदल दें, तो एक अर्थ में आपने अपना email client खुद assemble कर लिया
- users पहले से बने apps के passive consumers भर नहीं रहते, बल्कि computer इस्तेमाल करने का अपना personalized तरीका खुद बना सकते हैं
- Chrome Store में 1.8 लाख से अधिक extensions हैं, और लगभग आधे Chrome users browser extensions install करते हैं
- यह लोकप्रियता दिखाती है कि software को आसानी से extend करने का तरीका मिलने पर कई users सचमुच उस अवसर का लाभ उठाते हैं
app-specific API से ज्यादा hackable platform
- browser extensions के use cases बहुत व्यापक हैं: password input, Japanese Kanji पढ़ना, Gmail visual design को सरल बनाना, articles highlight करना और annotations, बाद में पढ़ने के लिए save करना, 2x video playback, ad blocking वगैरह
- व्यापक उपयोग का मूल कारण यह है कि अधिकतर extensions applications को ऐसे तरीकों से बदलते हैं जिनकी मूल developer ने विशेष रूप से योजना नहीं बनाई होती
- Japanese newspaper company को articles publish करते समय Kanji reading extension के साथ compatibility सोचने की जरूरत न हो, फिर भी extension काम कर सकता है
- extension developers, app developers के extension संबंधी नजरिए से बने app-specific APIs में बंधे नहीं होते, इसलिए उनके पास अधिक creative freedom होती है
- web platform की कुछ खूबियां अनियोजित extensibility को संभव बनाती हैं
- पारंपरिक web deployment तरीका client code को browser तक इंसान द्वारा पढ़े जा सकने वाले रूप में पहुंचाता है
- code obfuscate हो या दूसरी language से compile किया गया हो, तब भी sourcemaps इस लाभ को बनाए रखने में अहम हैं
- web का layout model standardized semantic markup को बढ़ावा देता है
- password manager extensions इसलिए काम करते हैं क्योंकि webpages अपनी custom implementation के बजाय password submit करने के लिए भरोसेमंद रूप से
formtag का इस्तेमाल करते हैं
- जब sites extensions के लिए नहीं बनाई गई होतीं, तब भी smart workarounds की जरूरत पड़ सकती है, लेकिन आमतौर पर यह वर्षों की reverse engineering के बिना reasonable मात्रा के काम से संभव होता है
- website developers और extension developers के बीच तनाव हो सकता है, फिर भी अगर site developer को extra काम न करना पड़े तो creative extensions को स्वीकार करना ज्यादा आम है
- niche features जिन्हें केवल थोड़े users चाहते हैं, motivated community members extension के रूप में बना सकते हैं, जिससे application developers का बोझ भी कम होता है
बड़े apps नहीं, छोटे tools
- कई browser extensions सभी websites के usage experience को बेहतर बनाने वाले general-purpose tools की तरह काम करते हैं
- annotation extension हर article के लिए अलग highlight tool नहीं मांगता, बल्कि सभी websites पर इस्तेमाल किया जा सकता है
- physical highlighter की तरह, एक tool सीखकर उसे कई contexts में apply किया जा सकता है और बड़ा leverage मिलता है
- कई software platforms में माना जाता है कि operating system cross-cutting tools देता है और third parties isolated standalone apps देती हैं, लेकिन browser extensions में third parties भी tools जोड़ती हैं
- छोटे units वाला software economics भी बदलता है
- अधिकतर extensions free होते हैं, और feature scope छोटा होने के कारण वे full business के रूप में टिके रहने के लिए बहुत छोटे हो सकते हैं
- फिर भी लोग extensions बनाते हैं, और users software के उन छोटे टुकड़ों से बड़ा लाभ लेते हैं
- extension store browse करना supermarket से ज्यादा मोहल्ले के flea market जैसा है
- बड़ी कंपनियों द्वारा बनाया गया बड़ा software ही इकलौता तरीका नहीं है
web openness की जड़ें
- personal computing के शुरुआती दौर से ही computer को ऐसा interactive medium मानने की दार्शनिक परंपरा रही है जिसमें user अपने ideas जोड़ सके और अपने tools बना सके
- यह परंपरा Smalltalk, Hypercard और हाल के Dynamicland जैसे systems में झलकती है
- Tim Berners-Lee ने World Wide Web बनाते समय इसी परंपरा में आने वाले system की कल्पना की थी
- उनका vision था “ऐसा system जिसमें आप जो जानते हैं या सोचते हैं उसे share करना, किसी और को जो पता है उसे सीखने जितना आसान हो”
- उनका मानना था कि web browser को website editor भी होना चाहिए, लेकिन Mosaic browser उस feature के बिना लोकप्रिय हुआ और उन्हें इसका अफसोस था
- web अंततः ऐसी जगह बना जहां कोई भी social media platforms के जरिए राय या photos post कर सकता है
- लेकिन Facebook जैसे apps के भीतर तय format में post करना होता है, और ads समेत app द्वारा तय तरीके से ही इस्तेमाल करना पड़ता है
- browser extensions provided text box में type करने के स्तर से आगे जाकर, web की किसी भी application को इस्तेमाल करने का तरीका गहराई से बदलने देते हैं
- वे ऐसी decentralization देते हैं जिससे बड़ी websites बनाने वाली companies user experience की हर detail तय नहीं कर पातीं
extensions को बेहतर बनाने की दिशा
- malicious extensions से privacy violation न हो, इसके लिए users की सुरक्षा करना जरूरी है
-
accessibility
- अभी extensions इस्तेमाल करने से उन्हें बनाने की ओर जाने के लिए web development काफी सीखनी पड़ती है
- browser के अंदर extensions आसानी से develop करना भी मुश्किल है
- developer tools में website edit करते-करते एक छोटा extension publish करने जैसा seamless transition संभव हो सकता है
-
compatibility
- extensions unsupported तरीकों से websites में hook करते हैं, इसलिए site updates अस्थायी रूप से extensions को तोड़ सकते हैं
- extension developers को बदलावों के हिसाब से जल्दी fixes करने पड़ सकते हैं
- explicit extension API पर निर्भर हुए बिना website developers और extension developers को stable तरीके से जोड़ने का तरीका चाहिए
- clean semantic markup, इंसान द्वारा पढ़े जा सकने वाला CSS और sourcemaps ऐसी existing practices हैं जो extension development को आसान बनाती हैं
- अगर cloud software की नई version release के बाद users 3 महीने तक पुरानी version इस्तेमाल कर सकें, तो extension developers को नई version के हिसाब से update करने का समय मिल सकता है
-
permissions
- web extensions browser client को व्यापक रूप से बदल सकते हैं, लेकिन server को छू नहीं सकते
- अगर social media app server posts को chronological order में fetch करने वाला endpoint ही देता है, तो browser extension सभी posts को keyword से search नहीं कर सकता
- client-server boundary पर फिर से सोचने से extensions अधिक गहरे बदलाव कर सकते हैं
- अधिक शक्तिशाली permissions security और privacy समस्याओं को मुश्किल बनाते हैं, लेकिन extensibility को value मानकर संतुलन खोजना होगा
अगले platform की संभावना
- Beaker Browser और decentralized web community यह explore करते हैं कि central server के बिना web कैसे काम करे
- ऐसी architecture user को web application के “server” side को modify करने पर अधिक पूर्ण control दे सकती है
- Tim Berners-Lee के नए project SOLID में users को अपने data पर अधिक ownership देने का principle शामिल है
- data ownership बढ़ने पर users extensions और दूसरे software के जरिए application server API द्वारा अनुमति दी गई सीमा से आगे जाकर data को लचीले तरीके से handle कर सकते हैं
- computing अभी युवा है और platforms तेजी से बदल रहे हैं
- modern browser extensions और smartphone platforms को आए लगभग 10 साल ही हुए हैं
- भविष्य के platforms कितने open होंगे, यह सामूहिक रूप से तय करने का सवाल है
- browser extensions उस जगह का एक उदाहरण हैं जहां users रोजमर्रा में अपने इस्तेमाल किए जाने वाले software को hack कर सकते हैं और उसे अपना बना सकते हैं
2024 update
- 2019 में लिखे article को 5 साल बाद देखते हुए कुछ related projects जोड़े गए
- Twitter के लिए एक लोकप्रिय browser extension बनाया, और रोज इस्तेमाल होने वाले software की समस्याएं ठीक करने के तरीके के रूप में extensions इस्तेमाल करने के अनुभव पर एक लेख लिखा
- MIT में Daniel Jackson के साथ PhD करते समय, non-programmers को spreadsheets से browser extensions बनाने देने वाला Wildcard develop किया
- Glen उन लोगों के लिए monetization platform ExtensionPay पर काम कर रहे हैं जो browser extensions को sustainable project बनाना चाहते हैं
- हाल में research lab Ink & Switch में AI-powered malleable software की दिशा में काम कर रहे हैं
1 टिप्पणियां
Hacker News की राय
लेखक हूँ। यह लेख मैंने 5 साल पहले लिखा था, और उसके बाद customizable software के मूल्य को लेकर मेरा भरोसा और बढ़ा है, लेकिन कुछ विचार बदले भी हैं
फिर भी मुझे लगता है कि extensions पर चर्चा security पर इतनी ज़्यादा केंद्रित हो जाती है कि बाकी मूल्यों की बलि चढ़ जाती है। Customizability कुछ मामलों में security से भी ऊपर प्राथमिकता पाने लायक महत्वपूर्ण हो सकती है। समाधान भी कई तरह के हैं। Internet पर किसी भी व्यक्ति से install करने के बजाय, colleagues या friends जैसे trusted relationships में extensions देना-लेना, या केवल अपने बनाए extensions इस्तेमाल करना संभव है। AI-assisted programming से खुद बनाना ज्यादा व्यावहारिक हो सकता है, लेकिन इससे नई security समस्याएँ आती हैं। साथ ही मैं ऐसे लोगों से भी मिला हूँ जिनके पास software architecture के ideas हैं जो इस core tension को कम करते हैं; उदाहरण https://www.wildbuilt.world/p/inverting-three-key-relationsh... पर है
जिस research lab Ink & Switch में मैं अभी काम करता हूँ, वहाँ हम local-first software बना रहे हैं: ऐसा collaborative software जिसमें data और code मेरे device पर होते हैं। Privacy जैसे फायदों के अलावा, क्योंकि data और app code server में बंद नहीं हैं, मुझे लगता है कि यह ज्यादा powerful extensions के लिए सही आधार है: https://www.inkandswitch.com/local-first/
Android पर अपना custom keyboard बना पाना शानदार है, लेकिन कोई आपके grandparents को built-in keylogger वाला keyboard install करने के लिए मना ले—यह बिल्कुल अच्छा नहीं है। Browser extensions हमेशा malware से भरा ecosystem रहे हैं, और Thanksgiving पर घर जाने पर माता-पिता के Internet Explorer से toolbar हटाने वाला मज़ाक करीब 1999 से चला आ रहा है
“हाँ, आप मेरे phone का content पढ़ सकते हैं। आपको यही पूरा content दिखेगा और यही सब कुछ है। बस मेरी नज़र से देखें तो यह सिर्फ एक folder है, और वह भी empty folder। नया phone है न।”
“हाँ, यह मेरी contacts list है। लगभग खाली है, माफ़ कीजिए। बस एक महंगा premium number है। उम्मीद है आपकी headquarters वहाँ call नहीं करेगी।”
“हाँ, यह मेरा microphone है। धन्यवाद। Rick Astley की नकल अच्छी करता है, है न।”
“Phone photos? ये रहे। सब turnip की photos हैं। पसंद हैं?”
खासकर Automerge या Yjs जैसे general-purpose CRDT tools के local-first software के foundational file formats बनने, और interoperable sync व collaboration backends जोड़ने के तरीके में मेरी गहरी रुचि है। Users standard tools से underlying data तक सीधे पहुँच सकते हैं, और files एक-दूसरे से link, embed, branch और merge हो सकती हैं। एक नया hypermedia platform बनाया जा सकता है जहाँ हर document share, fork और real-time edit हो सके। Ink & Switch में जो काम हो रहा है वह मुझे सचमुच पसंद है और अगले announcement का इंतज़ार है
“code और manifest को directory में डालो और browser उसका इस्तेमाल करे” जैसी कोई feature नहीं है। पुराने greasemonkey के समय, जब browser profile के gm_scripts/ subdirectory से normal files सीधे load हो जाती थीं, तो इस simple distribution की वजह से मैंने बहुत सारे userscripts बनाए। तब websites को extend करना मजेदार और आसान था, लेकिन Mozilla ने वह सब खत्म कर दिया
Distribution सचमुच भयानक है। अपने computer पर अपने लिखे code का इस्तेमाल करने के लिए हर बदलाव पर extension को Internet पर कहीं भेजकर sign कराने का मेरा कोई इरादा नहीं है। ऊपर से, आखिरी बार जब मैंने check किया था, signing tool 100MiB से बड़ा NPM/node app था जिस पर trust करना पड़ता था, और वह Linux kernel build से भी बड़ा था
2024 में ब्राउज़र एक्सटेंशन का पूरा ढांचा ही बहुत समस्याग्रस्त है। ज़्यादातर ब्राउज़र एक्सटेंशन अनुपात के लिहाज़ से Google Chrome एक्सटेंशन हैं, और Google Chrome मुनाफ़ा बढ़ाने की कोशिश में साफ़ दिखा रहा है कि कोई भी API सुरक्षित नहीं है
Chrome API से एक्सटेंशन बनाने वाले लोगों को यह पता होना चाहिए कि वे शायद अपनी मेहनत किसी ऐसी चीज़ में लगा रहे हैं जिसे कोई विशाल कंपनी बिना सोचे-समझे कुचल कर खत्म कर सकती है। ऐसी रणनीतिक रूप से पहले ही हारी हुई स्थिति में रहना नहीं चाहता, इसलिए मुझे लगता है कि चर्चा Firefox एक्सटेंशन के बारे में होनी चाहिए। Firefox का रिकॉर्ड भी बहुत अच्छा नहीं है। कुछ साल पहले Google Chrome compatibility पर स्विच करना अब भी बहुत खीझ पैदा करता है। फिर भी उसके साथ डील करना गुणात्मक रूप से बेहतर है
10 साल तक मैंने Firefox और Chrome दोनों पर “Ad Limiter” नाम की चीज़ इस्तेमाल की, और code भी वही था। पिछले साल Google ने ad blockers पर और शिकंजा कसते हुए धमकी भरे messages भेजे, और मैंने Chrome वाला छोड़ दिया
बेशक किसी specific browser-only API का इस्तेमाल भी किया जा सकता है। वह single-browser-only site बनाने जैसा सचमुच खराब है। default compatible होना चाहिए। और extension source code हमेशा देखा जा सकता है, इसलिए आप उसे अपने browser में ठीक से काम करने वाले version में बदल सकते हैं और फिर से share भी कर सकते हैं
लोकप्रिय ब्राउज़र एक्सटेंशन में से काफी को data brokers ने acquire कर लिया और browser history निकालने के लिए इस्तेमाल किया, इसलिए इन्हें underrated कहना मुश्किल है। एक्सटेंशन का security और privacy model काफी खराब था, या अब भी खराब है, इसलिए बहुत सावधान रहना चाहिए
उदाहरण के लिए, मुझे पता है कि Awesome Screenshot जैसा screenshot extension browser history खींचकर Israel के data broker को भेजता था। ऐसी functionality शायद browser की built-in feature के रूप में होना बेहतर है
“अगर मैं customer नहीं हूँ, तो मैं product हूँ” वाली बात cliché होने तक सही है। लेकिन अगर मैं सच में customer हूँ तो? मुझे लगता है browser extensions पर अविश्वास का बड़ा हिस्सा इसलिए है क्योंकि extensions से सीधे revenue कमाना मुश्किल है। अगर आप extension से पैसा नहीं कमा रहे हैं और कोई acquisition के लिए अच्छी cheque लेकर आता है, तो मना करना मुश्किल होता है, खासकर अगर वह extension developer पर support burden डालता हो। बेशक लगभग सभी की तरह मेरी भी कीमत है, लेकिन अभी शायद 7-figure dollars, शायद 8-figure dollars होने चाहिए, और मेरे extension के लिए इतना पैसा कोई नहीं देगा। paid होने के कारण user base अपेक्षाकृत छोटा है, और इसी वजह से data collection या किसी बुरी scheme का बड़ा अवसर भी नहीं है
बेशक desktop apps में भी risks हैं, लेकिन ऐतिहासिक रूप से इस तरह acquisition के बाद data exfiltration वाला pattern desktop apps में अपेक्षाकृत rare रहा है। खासकर macOS में signed apps sandboxed होती हैं और user permission के बिना वे बहुत कुछ नहीं कर सकतीं
बेशक ऐसे कई extensions open source होते हैं, इसलिए audit किए जा सकते हैं। लेकिन मेरे पास malicious code पकड़ने की skill नहीं है, इसलिए सोचता हूँ कि क्या यह AI का अच्छा use case हो सकता है। malicious code detection के लिए अच्छे prompts बनाने पर किसी के विचार हैं या नहीं, यह जानना चाहूँगा
काश browser extensions में और बारीक permissions होतीं। हालांकि यह verify करना मुश्किल है कि software permissions का malicious इस्तेमाल कर रहा है या नहीं; Obfuscated C Code Contest या Underhand C Contest देखकर यह समझ आता है। साथ ही nuanced permissions को users तक समझाकर पहुँचाना भी मुश्किल है। ज़्यादातर users technical बातें पढ़ते या समझते नहीं, और आसानी से mislead हो सकते हैं
Chrome में extensions try करते समय उन्हें ज़्यादा सुरक्षित तरीके से इस्तेमाल करने की एक tip है। Profiles > Add profile > Continue without account में जाकर अलग profile बनाएं, फिर जिस extension को चाहें वहाँ install करें; यह आपके सामान्य profile के tab logins, history, cookies आदि से पूरी तरह isolate रहेगा। इसी तरह सामान्य Chrome के साथ Chrome Beta या Chrome Canary को भी extension installation के लिए चला सकते हैं
उदाहरण के लिए, संभावित रूप से risky web development extensions के दर्जनों इस profile में install करके, उसे personal banking या company websites में login के लिए इस्तेमाल होने वाले profile से sandbox की तरह अलग रखा जा सकता है। यह सभी extensions के लिए practical नहीं है, लेकिन web development के लिए मैं ऐसा करता हूँ और personal use के लिए सिर्फ कुछ extensions रखता हूँ
मैं जो browser extension बेचता हूँ, उसमें असल में जो permission माँगना चाहता हूँ वह है “सिर्फ अपने tabs में भेजे और प्राप्त किए जा रहे network traffic को observe कर सके”, लेकिन वास्तव में “सारा data पढ़ने और लिखने” की permission माँगनी पड़ती है। इसलिए description में यह tip share करता हूँ: https://chromewebstore.google.com/detail/checkbot-seo-web-sp...
उम्मीद है transparency इस trust barrier को पार करने का एक तरीका बनेगी
[1] extension के ‘Details’ पर click करें, ‘Allow this extension to read and change all your data on websites you visit’ option को ‘On specific sites’ में बदलें, फिर site को allowlist में add करें
“Browser extensions यह एहसास दिलाती हैं कि computer का इस्तेमाल कैसे होता है, उस पर गहरा control था” — यह सुनकर Linux users शायद कुछ कहना चाहेंगे
ज़्यादा general तौर पर, यह कुछ साल पहले लिखे मेरे लेख “Is Open Source a diversion from what users really want?” में उठाए गए सवाल से काफी मिलता-जुलता है। Build system को छुए बिना software को “hack” करने के तरीकों को लेकर उत्साह, FLOSS द्वारा दिए जाने वाले complete, open और theoretically unlimited access से कहीं ज़्यादा दिखता है। ऐसा क्यों है, इसके obvious reasons दिखते हैं, लेकिन फिर भी यह थोड़ा disappointing है
मैंने यहाँ Reaper के scriptable लेकिन closed-source तरीके और Ardour के scriptable और open-source तरीके की तुलना करते हुए इस पर चर्चा की थी: https://discourse.ardour.org/t/is-open-source-a-diversion-fr...
LD_PRELOAD जैसी चीज़ों से दिलचस्प hacks किए जा सकते हैं, लेकिन वे browser extensions की flexibility और accessibility के आसपास भी नहीं पहुँचते। अपने हिसाब से सभी software modify करने का अधिकार तो है, लेकिन practically ऐसा करने में friction तुलनात्मक रूप से काफी है
मैंने Chrome Web Store में recommended एक Chrome extension बनाया था[1], और यह सचमुच चिंता की बात है कि कितने suspicious data brokers मेरी extension खरीदकर उसमें spyware भरने के requests भेजते हैं
कोई naive developer कुछ शानदार बनाता है, उसे यह सोचकर बेच देता है कि कोई उसे maintain करेगा, लेकिन असल में यह users के लिए खतरा पैदा कर सकता है। Google permissions के इस्तेमाल की review काफी अच्छी तरह करता लगता है, लेकिन मेरी extension जैसी extensions भी हैं जिन्हें page की हर चीज़ access करनी पड़ती है। Data broker इससे क्या कर सकता है, यह कल्पना करना ही काफी है। Install करते समय सावधान रहना चाहिए
[1] https://chromewebstore.google.com/detail/css-selector-helper...
मुझे लगता है कि सबसे ज़रूरी चीज़ store से इंस्टॉल किए गए browser extensions के लिए view source है। source को आसानी से देख पाना चाहिए, और browser extension को folder के रूप में extract कर पाना चाहिए
यह भी आसानी से पता चलना चाहिए कि वह किन web pages तक पहुंचता है और क्या modify करता है। extension के अंदर minified/obfuscated code पर रोक होनी चाहिए, और code बहुत आसानी से पढ़ा जा सके ऐसा होना चाहिए। उदाहरण के लिए, यह extension कहता है कि यह “user activity record” करता है, लेकिन असल में उसका मतलब क्या है, समझना मुश्किल है: https://chromewebstore.google.com/detail/coffeelings/hcbddpp...
websites की पूरी list extension install popup में देखी जा सकती है। Chrome Web Store पहले से ही code obfuscation को प्रतिबंधित करता है। minification की अनुमति है, क्योंकि variable names की quality enforce करने का कोई meaningful तरीका नहीं है
जानबूझकर obfuscated code में यह मदद नहीं करेगा, लेकिन ज़्यादातर extensions पर security और privacy research के लिए मददगार होगा
पूरी तरह का extension तो नहीं, लेकिन userscript और user styles काफी काम कर लेते हैं, और ऐसे extensions भी हैं जो लोगों को browser के अंदर ही इन्हें बनाने और इस्तेमाल करने देते हैं। उदाहरण के लिए Tampermonkey[0] और Stylus[1]
भले ही ये extensions जितना बहुत कुछ न कर पाएं, मुझे लगता है कि ये बेहद अहम हैं
[0] https://www.tampermonkey.net/
[1] https://chrome.google.com/webstore/detail/stylus/clngdbkpkpe...
YouTube “short” view से regular video view पर redirect करने, और Gmail scrollbar के दाईं ओर की बेवकूफाना खाली जगह हटाने के लिए भी इस्तेमाल करता हूं
JavaScript/TypeScript तो नहीं, लेकिन programming करता हूं, extensions बहुत ज़्यादा इस्तेमाल करता हूं, और Chrome/Firefox extension ecosystem के बिना कोई browser कभी इस्तेमाल नहीं करूंगा—खुद को power user मानता हूं। Chrome और VSCode themes भी बना चुका हूं, लेकिन फिर भी यहीं अटका हूं। अगर आपको pink/cyan पसंद है तो यह रहा: https://marketplace.visualstudio.com/items?itemName=mikejk8s...
सिर्फ Chrome prompt देखकर मुझे बिल्कुल पता नहीं चलता कि कोई extension क्या कर सकता है, क्या पढ़ सकता है, क्या देख सकता है, और किस तक पहुंच सकता है। “सभी websites के data तक access allow करें” क्या सच में सभी data है? जो मैं type करता हूं वह भी? क्या उसे पता चलता है कि मैं एक URL से दूसरे URL पर जा रहा हूं? क्या वह सिर्फ assets पढ़ता है? क्या access सीमित करने वाली कोई Chrome API है और क्या मैं उसे देख सकता हूं? मुझे समझ नहीं आता कि असल में किस बात की चिंता करनी चाहिए
मैं एक video zoom extension इस्तेमाल करता हूं जो किसी भी website के किसी भी video को zoom कर सकता है; क्या मुझे हर extension का खुद audit करना चाहिए ताकि पक्का हो सके कि वह मेरा data कहीं copy नहीं कर रहा? मुझे बिल्कुल नहीं पता, और non-technical user यह कैसे जान पाएगा
screen/session recording तरह के startup products को लेकर मैं खास तौर पर सतर्क रहूंगा। अगर कोई और वजह न भी हो, तो भी वे supply-chain attacks के लिए खास तौर पर vulnerable हो सकते हैं
इसलिए मेरी list में सिर्फ मेरे बनाए one-off extensions, बड़े और मशहूर extensions, या वे चीज़ें हैं जिनका code मैंने खुद audit किया है
मुझे bookmarklet ज़्यादा पसंद हैं। इन्हें edit करना आसान है, click करने तक inactive रहते हैं, सभी browsers में काम करते हैं, mobile पर भी चलते हैं, और UI में अच्छी तरह integrate हो जाते हैं
इन्हें अपनी मर्ज़ी से move कर सकते हैं, किसी भी bookmark folder में रख सकते हैं, और shortcut key भी assign कर सकते हैं। मैंने एक editor बनाया है जो साफ code और bookmarklet के बीच conversion आसान बनाता है: https://www.gibney.org/bookmarklet_editor
सोच रहा हूं कि share करने लायक अच्छे bookmarklets हैं क्या