連結、網站與郵件
這個 QR 碼安全嗎?
涵蓋範圍: 可讀取任何國家的 QR Code:連結、電話號碼、簡訊、電子郵件、Wi-Fi 網路、聯絡人、活動、位置、加密貨幣和付款(SEPA 轉帳、瑞士 QR 帳單、UPI、Pix、PromptPay、PayNow、QRIS、DuitNow、FPS 及其他 EMV 碼)。連結依 NoCall 針對本站的規則檢查,電話號碼則對照公開的編碼計畫檢查。
開啟工具本頁內容
用途
選擇 QR Code 的照片或截圖,在用手機掃描之前,弄清楚它實際會做什麼:開啟網站、撥打電話、傳送簡訊、連上 Wi-Fi 網路,還是設定一筆付款。
使用要求
任何 NoCall 帳號都可以閱讀這些指南。部分工具需要 Pro,各指南會註明。
假的 QR Code 會出現在停車繳費機、信件、罰單、電子郵件和海報上。選擇 QR Code 的照片或截圖:我們會在你的瀏覽器中讀取,不會上傳圖片,並在你打開之前告訴你它會做什麼。
使用步驟
選擇或拍攝照片
已經有 QR Code 的內容了?貼在這裡
配合限制說明閱讀可用欄位。空白結果不能證明安全,也不能確認個人身分。
虛構範例
此範例為虛構內容,並非真實查詢。請勿撥打電話或開啟其中的連結。
https://parking.example/pay理解結果
不要打開: 這個 QR Code 有詐騙跡象。如果你是在停車繳費機、信件或海報上看到的,請從官方應用程式或官網付款或登入,網址要自己輸入。
確認任何操作前先檢查: 我們沒有看到明顯的詐騙,但這個 QR Code 的作用值得你在手機上確認前先檢查一下。
沒有發現危險跡象: 這不保證它是真的。確認任何操作前,先檢查網址或目的地是否符合你的預期。
限制
QR Code 在你的瀏覽器中讀取和檢查:圖片絕不會上傳。如果其中有電話號碼,只有這些號碼會送到 NoCall 的伺服器查詢類型,且不會被儲存。
我們絕不會打開連結:只會檢查。
疑難排解
我們在圖片中找不到 QR Code。請靠近一點重拍,確保對焦清楚、沒有反光。
無法開啟這張圖片。請試試 JPG 或 PNG 格式的照片。
QR Code 的內容太長,無法檢查。
透過 API 使用
需要 API 金鑰和點數。每次完成的呼叫扣 1 點,即使沒有資料也一樣。有效的 Pro 帳戶每個 UTC 曆月包含 20 點,由所有 API 路由共用並優先扣用;當月未使用的點數不會累積到下個月。在帳戶頁面購買的點數不需 Pro 即可使用,且永不過期。
錯誤一律不扣點:401 invalid_api_key(缺少金鑰或金鑰無效)、403 pro_required(沒有 Pro 點數,也沒有購買的點數)、422 輸入無效、429 quota_exceeded(點數用完)、rate_limit_exceeded 或 ai_busy(sms-check 的 AI 已達負載上限)、503 tool_warming(資料仍在準備中)或 tool 或供應商無法使用。收到 429 或 503 後,請等 Retry-After 標頭中的秒數過後再重試。
解碼後的 QR Code 實際會做什麼:開啟連結(依該國規則檢查)、撥打號碼或傳送簡訊、撰寫電子郵件、連上 Wi-Fi、儲存聯絡人,或要求付款(SEPA、瑞士 QR 帳單、UPI、Pix 及其他 EMVCo 碼,並檢查 IBAN 和檢查碼)或加密貨幣。絕不開啟連結。
將 JSON 主體傳送到該 tool 專屬的路由,或加上 tool 欄位後傳送到 POST /v2/tools。兩種路由回傳的結果相同。
POST https://api.nocall.io/v2/qr-check
POST https://api.nocall.io/v2/tools {"tool":"qr-check","payload":"BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471","country":"ES"}參數
| 名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| payload | string (1–4296) | 是 | QR Code 解碼後的文字,最多 4296 個字元。圖片需由呼叫端自行解碼。 |
| country | string (enum, 55) | 否 (預設: "ES") | 要使用哪個國家的 SMS 規則集。 |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/qr-check' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"payload":"BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471","country":"ES"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/qr-check',
method='POST',
data=json.dumps({'payload': 'BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471', 'country': 'ES'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/qr-check', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ payload: 'BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471', country: 'ES' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);回應範例(200)
這是 API 參考文件中的範例。查詢使用虛構號碼,彙總資料和 AI 回答只呈現結果的結構,並非即時資料。
{
"data": {
"tool": "qr-check",
"result": {
"payload": {
"type": "payment",
"scheme": "epc",
"payee": "Aparcamientos Ejemplo SL",
"account": "ES9121000418450200051332",
"accountValid": true,
"amount": "49.90",
"currency": "EUR",
"reference": "Multa de aparcamiento 4471",
"country": "ES",
"city": null,
"crcValid": null
},
"signals": [
"payment_request",
"amount_prefilled"
],
"attention": true,
"hosts": [],
"linkFlags": [],
"link": null,
"numbers": []
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}結果欄位(data.result)
| 欄位 | 類型 | 說明 |
|---|---|---|
| payload | object | 代碼的作用:類型(url、phone、sms、email、wifi、contact、event、geo、payment、crypto、other_link 或 text)及該類型的欄位。絕不傳回 Wi-Fi 密碼。 |
| signals | array<string (enum, 26)> | 代碼本身的訊號(payment_request、crypto_request、open_wifi、call_forwarding、premium_number…),加上連結和文字規則的訊號。 |
| attention | boolean | 內容是否值得進一步查看。 |
| hosts | array<string> | 文字中找到的主機名稱。 |
| linkFlags | array<"http" | "userinfo" | "internationalHost" | "ipAddress" | "nonStandardPort"> | 連結的結構警示:http、userinfo、國際化主機、IP 位址或非標準連接埠。 |
| link | object | null | url 類代碼中經檢查的連結(主機、ASCII 主機、是否官方、品牌和連接埠),或 null。 |
| numbers | array<object> | 代碼撥打、傳簡訊、列出或轉接來電的號碼,附上加值付費類別和風險。 |
常見問題
什麼是 QR Code 釣魚(quishing)?
就是利用 QR Code 進行網路釣魚:在停車繳費機或充電樁的真 QR Code 上貼一張假的,或透過信件、電子郵件寄送,把你引到竊取資料的網站,或讓你付一筆不該付的錢。
掃描 QR Code 能收到錢嗎?
不能。付款碼(銀行轉帳、UPI、Pix 等)一定是用來付錢的。如果有人要你掃碼「領取」退款或獎品,那就是詐騙。
只是掃描 QR Code 會有危險嗎?
掃描只會讀取文字:危險在於打開連結、連上 Wi-Fi 或確認付款的那一步。所以最好先檢查,可以在這裡查,也可以在點選前看清楚相機顯示的網址。
