改良版
・QRコード以外などを変換して、エラーになるとメッセージを表示する
・Chrome固定をやめ、「既定のWEBブラウザー」で開きます
最近、迷惑メール本文のURLではなくて、QRコードを表示してくるものがあり、
いちいちQR画像を保存、HPでQRコード変換して、コピーして、張り付けて、と面倒なので、
本文のQRコードから、「偽装サイトのURLを報告」と同じようにできるようにしました。

概要
迷惑メール本文のQRコードを右クリックして「このQRを解析してChromeで報告」でURL変換して、
「Google セーフ ブラウジング チームにページを報告する」を開き「報告するページのURL」をセットまでを行う
Thunderbirdの(一時的な)アドオンです。
※一時的なので、Thunderbirdを終了すると消えてしまいます。
構成は、以下の3つのファイルを用意します
manifest.json
"manifest_version": 2,
"name": "QR通報ツール_完成版",
"version": "1.34",
"description": "QRコード解析ツール",
"permissions": [
"menus",
"clipboardWrite",
"notifications"
],
"background": {
"scripts": [
"jsQR.js",
"background.js"
]
},
"icons": {
"48": "icons/icon.svg"
},
"browser_specific_settings": {
"gecko": {
"id": "qr-tsuho-final@my-unique-id",
"strict_min_version": "142.0",
"data_collection_permissions": {
"required": ["none"]
}
}
}
}
background.js
// QR通報ツール 完成版 Ver 1.34
messenger.menus.create({
id: "qr-report-perfect",
title: "このQRを解析して偽装サイトの URL を報告",
contexts: ["image"]
});
messenger.menus.onClicked.addListener(async (info) => {
try {
// 画像取得
const response = await fetch(info.srcUrl);
if (!response.ok) {
throw new Error("画像の取得に失敗");
}
const blob = await response.blob();
// 画像化
const img = await createImageBitmap(blob);
// Canvas作成
const canvas = new OffscreenCanvas(img.width, img.height);
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
// 画像データ取得
const imageData =
ctx.getImageData(0, 0, img.width, img.height);
// QR解析
const code = jsQR(
imageData.data,
imageData.width,
imageData.height
);
// QR成功
if (
code &&
code.data &&
/^https?:\/\//i.test(code.data)
) {
// Google Safe Browsing 通報URL
const reportUrl =
"https://safebrowsing.google.com/safebrowsing/report_phish/?tpl=mozilla&hl=ja&url="
+ encodeURIComponent(code.data);
console.log("QR解析成功:", code.data);
// OS既定ブラウザーで開く
await messenger.windows.openDefaultBrowser(reportUrl);
// クリップボードへコピー
await navigator.clipboard.writeText(
"フィッシング詐欺サイトへの誘導QRコードです。"
);
} else {
// QR検出失敗通知
await messenger.notifications.create({
type: "basic",
iconUrl: "icons/icon.svg",
title: "QR解析エラー",
message: "QRコードを検出できませんでした。"
});
}
} catch (e) {
console.error("エラー:", e);
// 例外時通知
await messenger.notifications.create({
type: "basic",
iconUrl: "icons/icon.svg",
title: "QR解析エラー",
message: "画像の取得または解析に失敗しました。"
});
}
});
jsQR.js
↓↓↓この辺りから持ってきてください↓↓↓
https://github.com/cozmo/jsQR/blob/master/docs/jsQR.js
テスト方法は、
TBのアドオンネージャー>拡張機能>歯車>
アドオンをデバッグ>一時的なアドオンを読み込む>作成した「manifest.json」を読み込」と
一時的な拡張機能に「QR通報ツール_完成版」が表示され利用できます
アドオンをインストールして、消えない様にするには、
1.3つのファイルで「zipファイル」を作って、
2.拡張子を「xpi」に変更して、
3.「ファイルからアドオンをインストール」
ですが、xpiをインストールすると「このアドオンは、壊れているためインストールできませんでした」
というエラーになります。
なんでだろ~自分の「力不足を痛感」しております
今日、「このアドオンは、壊れている」の原因が分かりましたぁ
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
訂正)
誤
"thunderbird": {
正
"gecko": {
・QRコード以外などを変換して、エラーになるとメッセージを表示する
・Chrome固定をやめ、「既定のWEBブラウザー」で開きます
最近、迷惑メール本文のURLではなくて、QRコードを表示してくるものがあり、
いちいちQR画像を保存、HPでQRコード変換して、コピーして、張り付けて、と面倒なので、
本文のQRコードから、「偽装サイトのURLを報告」と同じようにできるようにしました。

概要
迷惑メール本文のQRコードを右クリックして「このQRを解析してChromeで報告」でURL変換して、
「Google セーフ ブラウジング チームにページを報告する」を開き「報告するページのURL」をセットまでを行う
Thunderbirdの(一時的な)アドオンです。
※一時的なので、Thunderbirdを終了すると消えてしまいます。
構成は、以下の3つのファイルを用意します
manifest.json
"manifest_version": 2,
"name": "QR通報ツール_完成版",
"version": "1.34",
"description": "QRコード解析ツール",
"permissions": [
"menus",
"clipboardWrite",
"notifications"
],
"background": {
"scripts": [
"jsQR.js",
"background.js"
]
},
"icons": {
"48": "icons/icon.svg"
},
"browser_specific_settings": {
"gecko": {
"id": "qr-tsuho-final@my-unique-id",
"strict_min_version": "142.0",
"data_collection_permissions": {
"required": ["none"]
}
}
}
}
background.js
// QR通報ツール 完成版 Ver 1.34
messenger.menus.create({
id: "qr-report-perfect",
title: "このQRを解析して偽装サイトの URL を報告",
contexts: ["image"]
});
messenger.menus.onClicked.addListener(async (info) => {
try {
// 画像取得
const response = await fetch(info.srcUrl);
if (!response.ok) {
throw new Error("画像の取得に失敗");
}
const blob = await response.blob();
// 画像化
const img = await createImageBitmap(blob);
// Canvas作成
const canvas = new OffscreenCanvas(img.width, img.height);
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
// 画像データ取得
const imageData =
ctx.getImageData(0, 0, img.width, img.height);
// QR解析
const code = jsQR(
imageData.data,
imageData.width,
imageData.height
);
// QR成功
if (
code &&
code.data &&
/^https?:\/\//i.test(code.data)
) {
// Google Safe Browsing 通報URL
const reportUrl =
"https://safebrowsing.google.com/safebrowsing/report_phish/?tpl=mozilla&hl=ja&url="
+ encodeURIComponent(code.data);
console.log("QR解析成功:", code.data);
// OS既定ブラウザーで開く
await messenger.windows.openDefaultBrowser(reportUrl);
// クリップボードへコピー
await navigator.clipboard.writeText(
"フィッシング詐欺サイトへの誘導QRコードです。"
);
} else {
// QR検出失敗通知
await messenger.notifications.create({
type: "basic",
iconUrl: "icons/icon.svg",
title: "QR解析エラー",
message: "QRコードを検出できませんでした。"
});
}
} catch (e) {
console.error("エラー:", e);
// 例外時通知
await messenger.notifications.create({
type: "basic",
iconUrl: "icons/icon.svg",
title: "QR解析エラー",
message: "画像の取得または解析に失敗しました。"
});
}
});
jsQR.js
↓↓↓この辺りから持ってきてください↓↓↓
https://github.com/cozmo/jsQR/blob/master/docs/jsQR.js
テスト方法は、
TBのアドオンネージャー>拡張機能>歯車>
アドオンをデバッグ>一時的なアドオンを読み込む>作成した「manifest.json」を読み込」と
一時的な拡張機能に「QR通報ツール_完成版」が表示され利用できます
アドオンをインストールして、消えない様にするには、
1.3つのファイルで「zipファイル」を作って、
2.拡張子を「xpi」に変更して、
3.「ファイルからアドオンをインストール」
ですが、xpiをインストールすると「このアドオンは、壊れているためインストールできませんでした」
というエラーになります。
なんでだろ~自分の「力不足を痛感」しております
今日、「このアドオンは、壊れている」の原因が分かりましたぁ
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
訂正)
誤
"thunderbird": {
正
"gecko": {



