撰寫特定網站擴充套件以取代網站的 JavaScript 程式碼
許多網站透過將非自由 JavaScript 程式傳送到使用者的瀏覽器,損害使用者的自由。我們邀請志願者開發自由瀏覽器擴充套件,以取代特定網站傳送的 JavaScript(請參閱下方的列表)。
我們針對非自由 JS 程式碼問題的第一個回應是開發 LibreJS,它使基於 Firefox 的瀏覽器能夠偵測並封鎖該程式碼。這保護我們免於執行網站的非自由 JS 程式,但不會使網站實際運作。如同我們在此提出的,為其撰寫擴充套件將能達成此目標。這也能避免直接執行來自他人網站的軟體所固有的風險。
我們也可以透過說服網站管理員修正他們的網站,使其在沒有 JavaScript 程式碼的情況下也能運作來解決問題,但說服他們證明非常困難,因為他們大多不理解這個問題,更不用說關心它了。或許建議在他們的網站上使用這些擴充套件會說服他們注意支援非 JavaScript 的存取。
因此,我們邀請志願者選擇一個網站並撰寫瀏覽器擴充套件,以使該網站能夠運作,假設 LibreJS 封鎖了該網站傳送的非自由 JavaScript。為了瞭解如何做到這一點,您可以查看現有網站擴充套件的範例。
首先要做的是簡要查看網站上 JavaScript 檔案的授權條款。其中一些實際上可能是自由軟體。如果網站傳送的某些 JS 程式碼是自由的,您可以將其包含在您的擴充套件中,並根據需要進行更改。
接下來,檢查網站是否發布了 API。如果有的話,如果 API 可以完成工作,最好使用 API 進行通訊。否則,您需要使用瀏覽器偵錯工具來找出 JavaScript 程式碼傳送到伺服器的資料和指令——實際上是其未公開的 API。
避免侵犯網站自身 JavaScript 程式碼著作權的方法是不研究該程式碼。不要研究它的任何部分,即使一次也不要。如果您沒有閱讀該程式碼,那麼您就沒有複製它的任何部分。只查看授權條款。
這些擴充套件應該是誠實的——它們不應該「作弊」。如果網站的 JavaScript 要求使用者提供資訊並傳送它,擴充套件也應該要求使用者提供該資訊並傳送它。如果網站要求使用者 (1) 勾選方框以同意 XYZ,擴充套件也應該要求使用者勾選方框以同意 XYZ。擴充套件應該忠實地傳遞使用者輸入的任何回應。如果網站傳送 cookie,擴充套件應允許根據瀏覽器 cookie 設定來處理它。
透過傳送到使用者的 JS 程式碼來實現真正的安全性是不可能的,但是無論網站做什麼來嘗試實現類似安全性的東西,擴充套件都應該忠實地執行。特別是,如果網站要求使用者回答問題以證明自己不是機器人,擴充套件應該向使用者顯示相同的問題,取得答案,並將它們傳送出去——從而使使用者能夠證明自己是人類。
Jeff Carpenter 的 librecaptcha 如果網站傳送驗證碼,可能會很有用。我們將啟動一個專案將其轉換為 JS,我們將需要志願者來做這件事,所以如果您有興趣提供幫助,請寫信給我。
同時,如果網站的 JS 程式碼偷偷摸摸地收集資訊,阻止這種窺探行為是值得讚賞的。一個想法是詢問使用者要回傳什麼答案——例如,「網站正試圖找出您的位置。您想告訴它什麼?」但最好避免頻繁或重複地詢問使用者。
當您有一個可運作的擴充套件時,請將副本郵寄給 GNU 計劃,電子郵件地址為 <js-extensions@gnu.org>。如果您能忍受執行非自由軟體來做到這一點,您也可以在 Firefox 的擴充套件列表中註冊它。
我們建立了一個郵寄清單,js-extensions-discussion,您可以在那裡與其他正在開發擴充套件的人交談。
一旦事情順利進行,我們希望建立一個 savannah.gnu.org 儲存庫,我們將把可運作的擴充套件放在那裡。為了做到這一點,我們需要一到兩位志願者來管理它。我們預計這項任務不會有很多工作;有兩位的原因是為了冗餘。
我們也可以有一個 Savannah 專案,您可以(如果願意)用於開發擴充套件;這也需要志願者來照顧它。
以下是一些建議的網站,可以為其撰寫擴充套件。(有些是商業性的,有些則不是——這種區別對於這個問題來說並不重要。)但是,如果其他網站更讓您感興趣,請務必前往您感興趣的地方。
用於存取資訊和出版物的網站
最初的目標是處理匿名存取。處理登入和已登入存取超出了短期的職責範圍。
- accuweather.com(用於查看其天氣資訊)
- pubmed.ncbi.nlm.nih.gov(用於下載論文)
- groups.google.com(用於查找和查看群組上的貼文)
- tripadvisor.com(至少顯示餐廳的完整菜單)
- blogger.com(用於查看部落格)
- britishmuseum.org/collection(用於查看館藏)
- pdr.net(用於查看藥品資訊)
- reiseauskunft.bahn.de(至少用於查看火車時刻表)
- rgs.org/about/our-collections/online-exhibitions(用於查看展覽)
- worldcat.org(用於查找書籍)
例如,請參閱此 GNU Emacs 手冊的條目。請注意頁面上的標題「在圖書館中查找副本」。在不執行專有 JavaScript 的情況下,該標題下的唯一內容是一個載入旋轉 GIF 和文字「正在查找擁有此項目的圖書館…」。給定書籍的實際圖書館可用性資訊不存在。
- scribd.com(用於閱讀文字)
- soundcloud.com(用於收聽音訊)
- documentcloud.org(用於查看文件)
- bandcamp.com(用於收聽或下載音樂)
- manualslib.com(用於下載手冊)
- npr.com(用於收聽——嘗試使用其 API)
- nasa.gov(用於查看出版物,包括照片和影片)
- reddit.com(至少用於閱讀)。目前,您可以使用 old.reddit.com 來做到這一點。
請願簽署網站(讓使用者簽署)
- freedomunited.org(似乎「成功」但沒有收到確認)
- sumofus.org(多年前的舊擴充套件不再運作)
- change.org(警告,此網站的 JS 非常複雜)
- afsc.org
- act.ran.org
- coworker.org
- defenders.org
- earthjustice.org
- amazonwatch.org
- signherenow.org
- moveon.org
- publiccitizen.salsalabs.org
- action.splcenter.org
- secure.everyaction.com
- amnesty.org
- addup.sierraclub.org
- ucsusa.org
- engage.drugpolicy.org
- engage.us.greenpeace.org
其他類型的網站
- house.gov(用於查看頁面和向代表發送郵件)
- whitehouse.gov(用於與白宮和網站管理員溝通)
- Disqus 評論,在各種網站中找到(用於發布評論)
- regulations.gov(用於評論美國擬議的法規)
- surveymonkey.com(用於回答調查)
- coworker.org/start-a-petition(用於發起請願)
- wetransfer.com(理想情況下用於上傳和下載,但僅下載將是良好的第一步)
- stripe.com(用於為其他網站輸入付款)
人們以這種方式處理的網站
- docs.google.com(用於下載文件)
- pay.gov(用於註冊 DMCA 聯絡人)
- rsf.org(用於簽署請願書)
- theonion.com(用於查看圖片和音訊)
- goteo.org(用於付款)
腳註
- 作者使用中性第三人稱單數代詞和所有格形容詞「perse」、「per」、「perself」和「pers」。