掃描 QR Code
圖片留在這裡。網址完整顯示,絕不自動打開。
本機處理把 QR Code 圖片拖進來,或點一下選檔
支援 PNG、JPG、WebP、GIF、BMP、SVG,也可以直接按 Ctrl+V 貼上。
按 Ctrl+V(Mac 是 Cmd+V)貼上圖片,直接截圖也可以。
網址會完整印出來,而且刻意留成純文字。QR Code 本質上是一段人眼讀不到的位址 —— 那正是「拿貼紙蓋掉店家真正的碼」這種騙術能成立的原因。先看清楚再自己決定,這一頁不會替你跳轉。
把 QR Code 的照片或截圖丟進來,或者直接用相機對著掃,就能看到裡面到底寫了什麼。解碼全部在這個瀏覽器分頁裡完成,圖片不會被上傳,碼裡面的東西也只有你自己的裝置看得到。
把 QR 圖片上傳出去,比聽起來嚴重
大部分免費的 QR 讀取網站,做法是把你的圖片送到伺服器上解碼。這件事聽起來沒什麼,直到你想清楚人們到底把什麼東西放進 QR Code 裡:咖啡廳桌上那張是 Wi-Fi 密碼,明碼;收款碼是一條綁著帳戶的連結;展場識別證上是姓名、公司、電話與電子郵件;辦公室牆上那張內部的碼,裡面是一個外人本來不該知道的主機名稱;掃碼登入用的那張,裡面是一段在幾分鐘內等同於密碼的 token。
你一按上傳,這些東西就完整地送到別人手上 —— 對方那側已經解好、已經有時間戳、已經跟你的 IP 綁在一起。整個過程你看不到,而規範這件事的隱私權政策,通常是一個你從搜尋結果點進來、從來沒讀過的網站上的一頁。
這一頁沒有可以送出去的對象。檔案由你正在用的這個瀏覽器自己讀,像素在本機被檢查,結果直接出現,全程沒有一個位元組經過網路。這件事你可以自己驗:打開開發者工具切到 Network 分頁,然後掃一張圖 —— 不會有任何新的請求。
網址只顯示、不打開 —— 這正是重點
QR Code 本質上是一段你的眼睛讀不到的位址。光是這一件事,就撐起了一整類詐騙。有人印一張自己的碼,貼在停車繳費機、餐廳桌角、電動車充電樁或收款機上原本那張的上面。你因為信任那個實體物件而掃了它,手機卻把你帶到完全不同的地方。這種手法有專門的名字 —— quishing(QR 釣魚)—— 而它之所以有效,是因為一般的掃碼器會在你來得及看清楚之前就把連結打開。
所以這一頁做的是相反的事:把解出來的網址完整印出來,就是一段可以選取的純文字,然後停在那裡。它不會被做成連結,不會被預先載入,不會跳轉。你先讀懂它要去哪裡,再自己決定。
它同時會把那些「在小螢幕上讀一串長網址時最容易看漏」的結構特徵指出來:沒有 https、網域是 punycode(於是字母可以被換成長得像的)、指向的是裸 IP 而不是主機名稱、用了不常見的連接埠,或者網址中間有一個「@」—— 那是最經典的那一招,@ 前面全部只是帳號,真正的目的地是 @ 後面那一段。這些是陳述、不是判決。我們沒有黑名單,也不會拿這個網址去問任何外部服務,因為那等於把你特地跑來這裡保護的東西送出去。
為什麼髒了、破了、被蓋住一角的碼還是讀得出來
QR Code 內建 Reed–Solomon 錯誤更正,而要放多少更正資料,是產生這張碼的人當初選的。一共四級:L 大約能救回 7% 的損壞,M 約 15%,Q 約 25%,H 約 30%。更正資料是散佈在整張碼上、而不是集中在某個角落,所以一圈咖啡漬、一道摺痕、一條刮痕,甚至中間挖一塊放 logo,碼都還能完整解出來。
這筆預算也解釋了另一件事:同一段文字,用 H 產生出來的碼會比用 L 的實體上更大 —— 多出來的耐損性是用多出來的模組存的。這是實實在在的取捨,不是免費升級。它也解釋了一個常見的意外:在乾淨螢幕上掃得好好的碼,一旦印出來、被摸過幾次就失敗,那張多半是用 L 產生的。
錯誤更正救不了的是缺角。那三個大方塊是定位圖案,解碼器靠它們判斷碼在哪裡、轉了幾度。裁掉其中一個就沒有東西可以救了 —— 那張碼不是損壞,是根本找不到。這是在這一頁掃描失敗最常見的單一原因,也是為什麼「把圖裁寬一點」通常就解決了。
相機、檔案、截圖 —— 各自碰到什麼
按下相機按鈕,這一頁會向瀏覽器要一條視訊串流,然後在頁面裡逐格讀取。每一格看完就丟掉,不會錄影,也不會傳出去。瀏覽器只在安全連線下才交出相機,而且一定會先問你 —— 你如果拒絕,相機就根本不會啟動。
拒絕在這裡不是錯誤狀態。檔案那條路本來就不需要相機,所以拖曳圖片、點選檔案、或按 Ctrl+V 貼上截圖,全部照常運作。這對桌機特別重要:桌機常常沒有堪用的相機,而碼本來就是以截圖或郵件附件的形式送到你手上的。
同一張圖裡有好幾個碼也處理得了。底層的解碼器一次只認一個,所以當整張圖解不出東西時,這一頁會把圖切開再分別讀。分得開的碼會全部列出來。畫面上那個數字是實際解出來幾個,不是宣稱這張圖裡就只有幾個 —— 兩個碼疊在一起、或者一大一小差距懸殊時,還是有可能漏掉。
常見問題
我的圖片真的沒有被上傳嗎?
真的沒有。這一頁後面沒有任何上傳端點。檔案是用瀏覽器自己的圖片解碼器讀進來、畫到記憶體裡的畫布上、在那裡被檢查的。你可以直接驗證:打開開發者工具切到 Network 分頁、清空紀錄,然後掃一張圖 —— 不會出現任何請求。頁面載入完成之後,就算把網路關掉它也照樣能用。
為什麼解出來的連結不能點?
這是刻意的。QR Code 會把目的地藏起來不讓你看,而那正是「拿貼紙蓋掉真正的碼」這種騙術能成立的原因。把完整網址當成純文字顯示、然後停在那裡,等於把一般掃碼器拿走的那個機會還給你 —— 在你過去之前先看清楚要去哪裡。想要的話按複製,然後自己貼到你想貼的地方。
明明看得到碼,卻說找不到?
幾乎都是裁切的問題。解碼器需要那三個大的角落方塊,以及碼周圍一小圈留白;只要缺了一塊,它就沒有東西可以對準。其他常見原因是碼在一張大照片裡佔的比例太小、晃動造成的模糊,或者表面有強烈反光。把圖裁得離碼近一點,或者正面拍而不是斜著拍。
可以讀條碼、Data Matrix 或 PDF417 嗎?
不行 —— 這一頁只讀 QR Code,而且遇到別的符號系統會老實說找不到,不會假裝。超市商品條碼、物流標籤上的 Data Matrix、駕照上的 PDF417 都是不同的符號系統,需要不同的解碼器。
WIFI: 這種碼裡的密碼會怎麼樣?
它會被解析出來顯示在這一頁上,然後旅程就結束了。網路名稱、加密方式與密碼會拆成欄位排好,你不必自己去拆那串原始文字;下面同時也附上一字不差的原文。這些內容不會被儲存、不會進 log、不會送到任何地方。
手機上能用嗎?
可以,兩種方式都行。你可以用後鏡頭掃眼前的碼,也可以從相簿裡挑一張圖 —— 別人用通訊軟體傳來的碼截圖是非常常見的情況,處理方式跟其他圖片完全一樣。
你們會保留我掃過的碼嗎?
不會。這一頁沒有帳號、沒有歷史紀錄、也沒有任何分析程式碼 —— 沒有東西被寫到伺服器上,因為這個掃描過程根本沒有伺服器參與。重新整理頁面,你掃過的一切就從記憶體裡消失了。


