Qiita
JavaScript
userscript
tampermonkey

Qiitaのスパム報告のクリック数をすこし減らすユーザースクリプト

スパムを見かけてはちょいちょい報告してきていまして。
一時的なものと思っていましたが、一向に減らなそうなので、ちょっとだけ報告作業を楽にします。

具体的には

  • 報告まで4クリック→2クリック
  • 安全装置なし

となっております。

スクリーンショット

image.png

これをクリックすると

image.png

がクリックされたことになります。
2枚めの画面は出ずご意見送信完了のためリロードされます。

動作検証環境

  • Firefox 61
  • Tampermonkey v4.7.5788
  • Qiitaログイン状態

コード

「Markdownを表示する」ボタンを追加するユーザースクリプト 新レイアウト版 - Qiita

を改変しました。(手抜き

Gistスクリプトリンク Qiita_report_spam_issue.user.js

Qiita_report_spam_issue.user.js
// ==UserScript==
// @name         Qiita report spam issue
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  ワンクリックでスパム報告
// @author       khsk
// @include      https://qiita.com/*/items/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const ul = document.getElementsByClassName('dropdown-menu dropdown-menu-right');
    if (!ul) {
        return;
    }
    const li = document.createElement('li');
    const a = document.createElement('a');
    const span = document.createElement('span');
    span.className = 'fa fa-fw fa-flag';
    span.setAttribute('aria-hidden', 'true');
    span.textContent = ' スパム報告';
    a.insertBefore(span, a.firstChild);
    li.appendChild(a);
    ul[0].appendChild(li);

    a.addEventListener('click', () => {
        const spam = document.querySelector('#public_issue_report_reason_spam');
        if (spam.nextSibling.textContent !== ' スパムです ') {
            console.log(spam.nextSibling.textContent)
            return;
        }
        document.querySelector('#public_issue_report_reason_spam').checked = true;
        document.querySelector('.btn.btn-primary.reportForm_submitButton').click();
    });
})();

閑話

Qiitaのスパム対策を考える - Qiita

自分の観測領域はtypoフィルターにたまたまひっかかったスパムだけだったので言っても一日数十件くらいかな?と思っていたのですが、300件/日というのはすごい量ですね。

観測は
mafumafuultu/QiitaPolice: Qiitaに投稿されるスパムを検出するために使用するElectron製アプリ
で行われているようです。すごい!

情報源などはこちらも

#qiitapolice - Qiitadon
#qiitaスパム - Qiitadon

mafumafuultu: "#QiitaPolice からなんとかスパム報告したいなぁ。 スパム報告のAPIとか公開……される…" - Qiitadon

#QiitaPolice からなんとかスパム報告したいなぁ。
スパム報告のAPIとか公開……されるとなんか大変なことになりそうな気もするけども……知りたいなぁ…

|_°) チラッ

KEINOS@Qiitadon: "#食欲の秋スパムの秋 #Qiitaスパム #Qiita要望 スパム報告の API 用エンドポイン…" - Qiitadon

スパム報告の API 用エンドポイント(要アクセストークン・タイプ)用意して欲しいな。

シーズンものなのか。レスポンスヘッダーからトークン抜いてまでスパム報告したくなるレベルでやんす。

#QiitaPoice などの複数スパム検知エンジンから報告があったものは、一旦公開ペンディングされ、本家++の判断材料にしてもらう、みたいな。

報告用APIが無いことで報告作業が手動のようですね…

たとえば、QiitaPoliceが吐き出す記事URLにユニークなアンカーを付加してやって(#QiitaPolice)、そのユニークなアンカーがついていることが条件(//@include https://qiita.com/*/items/*#QiitaPolice)のユーザースクリプトで開いた瞬間にスパム報告を自動で行う。といったようなアイデアしかでないのです。

せっかくのITエンジニア向けサービスですから、(Qiitaにも少し手を貸してもらって)ユーザー側からえー感じの動きで対応できたらいいですね。


ちなみのログですが

Qiitaのスパム対策を考える - Qiita

日本語が入ってない記事を禁止するだけでだいぶ減ると思うんだけどねえ。

どうせ日本語が入ってない記事なんてほぼ役に立たないし、稀に有用なものがあったとしてもほとんど読まれないから実害はない。

というお話もあり、体感でも中国語の記事がちょっと増えている感じはしますね。

その後の情報収集

とここまで記事を書いて公開を待ちながら、もうちょっとQiitadonをあさっていると…

7of9: "#hunting #tool #huntingTool huntingのためのブックマークレ…" - Qiitadon

7of9
@7of9

#hunting
#tool
#huntingTool

huntingのためのブックマークレット (凄腕の人らにより作成)


  1. ログイン時使用?: スパム報告
    https://qiitadon.com/web/statuses/100710242497017014

  2. 非ログイン時使用可能: ダイアログでのスパムにチェックまで
    https://qiitadon.com/web/statuses/100710392984850399

  3. ログイン時使用可能: ダイアログでのスパムにチェックまで
    https://qiitadon.com/web/statuses/100710535422358164


A. テストデータ(消えるかもしれません)
https://qiita.com/shivanijain/items/5585a8886126c03f5244

https://qiita.com/EshalKhan/items/8a460fee4bd5f2915914

衝撃!Qiitadonの奥地に幻のスパムハンターたちは実在した!!

Qiitadon、未だに及び腰で参加してないのですが、活動あったりで有益そうですねー

ログイン中は投稿に対してしか通報できなくて、ユーザー単位の通報もできないので、コメントスパムをいかがしようかと悩んでいたのですが、ログイン中はできないんですね。


とみね: "最近 @koki310dm が作ってくれたスタッフ限定のアカウント作成したばっかりのユーザーの投稿…" - Qiitadon

最近 @koki310dm が作ってくれたスタッフ限定のアカウント作成したばっかりのユーザーの投稿フィードがスパム投稿発見に便利

運営も頑張ってくれているので案外無視してても大丈夫そう?