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

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

具体的には

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

となっております。

# スクリーンショット

![image.png](https://qiita-image-store.s3.amazonaws.com/0/62354/84dfa4d5-18cb-f4c7-dfd3-9b0f3c2dd617.png)

これをクリックすると

![image.png](https://qiita-image-store.s3.amazonaws.com/0/62354/a8d4d4c9-684d-63ac-ad98-78cc4b02e08e.png)

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


# 動作検証環境

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

# コード

[「Markdownを表示する」ボタンを追加するユーザースクリプト 新レイアウト版 - Qiita](https://qiita.com/khsk/items/4752f80bde7b634f0b00)

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

Gistスクリプトリンク [Qiita_report_spam_issue.user.js](https://gist.github.com/khsk/104de799d85d2aa90478ad18357295bd/raw/57a607e5b5e62333cff550558135d44593151c3f/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](https://qiita.com/mafumafuultu/items/7ece5e026307992d3e9b)

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

観測は
[mafumafuultu/QiitaPolice: Qiitaに投稿されるスパムを検出するために使用するElectron製アプリ](https://github.com/mafumafuultu/QiitaPolice)
で行われているようです。すごい！

情報源などはこちらも

[#qiitapolice - Qiitadon](https://qiitadon.com/tags/qiitapolice)
[#qiitaスパム - Qiitadon](https://qiitadon.com/tags/qiita%E3%82%B9%E3%83%91%E3%83%A0)

[mafumafuultu: "#QiitaPolice からなんとかスパム報告したいなぁ。 スパム報告のAPIとか公開……される…" - Qiitadon](https://qiitadon.com/@mafumafuultu/100687586161942206)
>`#QiitaPolice` からなんとかスパム報告したいなぁ。
スパム報告のAPIとか公開……されるとなんか大変なことになりそうな気もするけども……知りたいなぁ…
>
>|_°) ﾁﾗｯ

[KEINOS@Qiitadon: "#食欲の秋スパムの秋 #Qiitaスパム #Qiita要望 スパム報告の API 用エンドポイン…" - Qiitadon](https://qiitadon.com/@KEINOS/100698672971066533)
>スパム報告の API 用エンドポイント（要アクセストークン・タイプ）用意して欲しいな。
>
シーズンものなのか。レスポンスヘッダーからトークン抜いてまでスパム報告したくなるレベルでやんす。
>
`#QiitaPoice` などの複数スパム検知エンジンから報告があったものは、一旦公開ペンディングされ、本家＋＋の判断材料にしてもらう、みたいな。

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

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

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

***

ちなみのログですが

[Qiitaのスパム対策を考える - Qiita](https://qiita.com/mafumafuultu/items/7ece5e026307992d3e9b#comment-c267cd34dfa0f25f8a24)

>日本語が入ってない記事を禁止するだけでだいぶ減ると思うんだけどねえ。
>
どうせ日本語が入ってない記事なんてほぼ役に立たないし、稀に有用なものがあったとしてもほとんど読まれないから実害はない。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">マジな話、検閲の厳しい中国ではエンジニアの日常よもやま話はqiita経由が最も鮮度高いと言われてます。中国発というわけではないんですが、中国固有の環境で独特の使われ方してます。日本だと普通にエンジニアのスキトラの場って感じですが</p>&mdash; 岸　弘行 (@sakura_comm_321) <a href="https://twitter.com/sakura_comm_321/status/1031476927909883910?ref_src=twsrc%5Etfw">2018年8月20日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

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

# その後の情報収集

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

[7of9: "#hunting #tool #huntingTool huntingのためのブックマークレ…" - Qiitadon](https://qiitadon.com/@7of9/100710604710955269)

>
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の奥地に幻のスパムハンターたちは実在した！！](https://qiitadon.com/tags/hunting)

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


<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">最近Qiitaの色んな記事に攻撃的なコメントを付けまくってる人がいて、コメントを通報しようとしたけど機能が見当たらない。調べてみると、コメント通報ボタンがあるにはあるけど、どうやらログアウト中にしか使えないようだ。そこで、ログイン中にも通報できるようにしてほしいと運営に要望を出した。</p>&mdash; нёло (@nyoro_712) <a href="https://twitter.com/nyoro_712/status/1041986991049428992?ref_src=twsrc%5Etfw">2018年9月18日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

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

***

[とみね: "最近 @koki310dm が作ってくれたスタッフ限定のアカウント作成したばっかりのユーザーの投稿…" - Qiitadon](https://qiitadon.com/@htomine/100840676225540096)

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

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