您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Prevent homograph attacks.
// ==UserScript== // @name Punycode detector // @namespace https://github.com/Shifterovich // @version 1.1 // @description Prevent homograph attacks. // @author Samuel Shifterovich (https://github.com/Shifterovich) // @include /xn--/ // @include /[^\x00-\x7F]/ // @grant GM_notification // ==/UserScript== shim_GM_notification(); var notificationDetails = { text: 'This website has Punycode in its domain name!', title: 'PUNYCODE DETECTED!', timeout: 10000, onclick: function () { window.focus (); } }; // Cross-browser Shim code function shim_GM_notification () { if (typeof GM_notification === "function") { return; } window.GM_notification = function (ntcOptions) { checkPermission (); function checkPermission () { if (Notification.permission === "granted") { fireNotice (); } else if (Notification.permission === "denied") { alert ("User has denied notifications for this page/site!"); return; } else { Notification.requestPermission ( function (permission) { console.log ("New permission: ", permission); checkPermission (); } ); } } function fireNotice () { if ( ! ntcOptions.title) { console.log ("Title is required for notification"); return; } if (ntcOptions.text && ! ntcOptions.body) { ntcOptions.body = ntcOptions.text; } var ntfctn = new Notification (ntcOptions.title, ntcOptions); if (ntcOptions.onclick) { ntfctn.onclick = ntcOptions.onclick; } if (ntcOptions.timeout) { setTimeout ( function() { ntfctn.close (); }, ntcOptions.timeout); } } }; } if (window.location.hostname.indexOf("xn--") != -1 || /[^\x00-\x7F]/.test(location.hostname)){ GM_notification(notificationDetails); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址