はじめに
10月くらい?にTwitter/Xの仕様変更により、URLを含むポスト(ツイート)のURLのテキストが表示されなくなり、代わりにサムネイル画像にリンクが貼られる形になりました。これにより画像に見せかけた誘導リンクを仕掛ける輩が出没しております。
本当の画像ポストとは違って左下にURLが記載されているので注意していれば目視で回避できますが、とうとう本日踏んでしまったため抜本的な対策を取ることと相成りました。
リンク自体は短縮URLで作られてるためかミュートワードに追加しても消えなかったので、Tampermonkeyを使って非表示にします。
↓こういうスパムリンク付きのポスト(ツイート)を表示させないようにします。
実際のスクリプト
Tampermonkeyに書いたスクリプトです。
// ==UserScript==
// @name Remove Image-Mimicking Spam URL Replies
// @namespace http://tampermonkey.net/
// @version 0.1
// @description This script eliminates replies containing spam URLs that mimic images on Twitter/X.
// @author MeowMauPaws
// @match https://twitter.com/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// ==/UserScript==
(function () {
'use strict';
let currentURL = "";
let isRewritedHeader = false;
// URLブロックリスト
const blockedURLs = [
'fanlink.to',
'n9oi1.app.link',
// 他のスパムURLあれば追加
];
function containsBlockedURL(tweet) {
const links = tweet.querySelectorAll('a');
return Array.from(links).some(link => {
const ariaLabel = link.getAttribute('aria-label');
return blockedURLs.some(url => ariaLabel && ariaLabel.includes(url));
});
}
const observer = new MutationObserver(() => {
if (currentURL == "") {
currentURL = location.href;
} else if (currentURL != location.href) {
currentURL = location.href;
isRewritedHeader = false;
}
document.querySelectorAll('[data-testid="cellInnerDiv"]').forEach(tweet => {
if (containsBlockedURL(tweet)) {
tweet.style.display = 'none';
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();
スパムリンクは短縮URLで書かれていることがほとんどなので、aria-labelを見て非表示対象かどうか判断するようにしています。
補足:Tampermonkeyの導入方法(簡易説明)
初めてTampermonkey使うよ、という人向けに一応簡易手順書いておきます。
多分、以下の手順で行けると思います。(ダメだったらすみませんが、その時は各自ちゃんとした情報を調べてもろて…)
-
Tampermonkeyをブラウザ拡張機能で追加してください
-
Chrome用Tampermonkey
https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ja -
Firefox用Tampermonkey
https://addons.mozilla.org/ja/firefox/addon/tampermonkey/
-
終わりに
もう誰か対策してるかとも思いましたが、軽く調べた限りではこういう対策をしている例は見つからなかったため作りました。
課題としてはfanlink.toを含むURLは必ずしもスパムというわけではないのですが、今回のスクリプトはその辺りは無差別に非表示にします。個人的には問題ないのでこのまま使っていますが、もし使う人いましたらその点はご了承ください。
もっとシンプルだったり効果的な対策ご存じの方いらっしゃいましたら教えてもらえるとありがたいです。
追加すべきスパムURLの情報とかも提供いただけるととても助かります