# Human-driven copy-paste spam

**URL:** https://meta.discourse.org/t/human-driven-copy-paste-spam/97205
**Category:** Community Building
**Created:** [September 14, 2018, 6:36pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205 "2018-09-14T18:36:48Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![Mittineague](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mittineague/32/114259_2.png) [@Mittineague](https://meta.discourse.org/u/Mittineague)
#### Post date: [September 17, 2018, 11:32pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/24 "2018-09-17T23:32:12Z")

</div>

> [@sam](#):
>
> Feel free to post your ideas

Might it be possible to give posts that were edited an “unreviewed”, or modify the WHERE in the query to include them, so that those sites that wanted to could use this plugin?

[https://github.com/discourse/discourse-moderator-attention](https://github.com/discourse/discourse-moderator-attention)

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [September 17, 2018, 11:35pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/25 "2018-09-17T23:35:11Z")

</div>

discourse moderator attention already works that way 🙂 but I did not really want to open this pandora’s jar, it is also an atomic way of handling this

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [September 17, 2018, 11:37pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/26 "2018-09-17T23:37:13Z")

</div>

> [@mnordhoff](#):
>
> I’m just a moderator

This is a very very interesting use case @rishabh, we want to be able to make some queries available to moderators in [data explorer](https://meta.discourse.org/t/32566?silent=true) if flagged explicitly by admins, at the moment only admins have access to [data explorer](https://meta.discourse.org/t/32566?silent=true) for security reasons.

---

<div class="post-metadata">

### Author: ![jsha](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsha/32/48894_2.png) [@jsha](https://meta.discourse.org/u/jsha)
#### Post date: [September 18, 2018, 12:11am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/27 "2018-09-18T00:11:23Z")

</div>

> [@sam](#):
>
> We can easily do a [data explorer](https://meta.discourse.org/t/32566?silent=true) query here for TL0 / TL1 edits, I can help you with that (list last 500 posts edited by TL0/1), then a very simple internal process could be running the query say weekly.

I had forgotten about [Data Explorer](https://meta.discourse.org/t/32566?silent=true)! I would be interested in seeing this query, at least as a first pass so we can evaluate how much stuff we might be missing today.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [September 18, 2018, 2:27am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/28 "2018-09-18T02:27:44Z")

</div>

> [@mnordhoff](#):
>
> I do read almost every post; the big issue is when the spammy edit comes _after_ I’ve already read it.

Narrowing the allowed edit window to 60 minutes or 30 minutes (or even less) should adequately address this, I would think.

---

<div class="post-metadata">

### Author: ![rishabh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rishabh/32/179446_2.png) [@rishabh](https://meta.discourse.org/u/rishabh)
#### Post date: [September 19, 2018, 7:31am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/35 "2018-09-19T07:31:19Z")

</div>

### Last 500 posts that were edited by TL0/TL1 users

```sql
SELECT
  p.id AS post_id,
  topic_id
FROM posts p
  JOIN users u
    ON u.id = p.user_id
  JOIN topics t
    ON t.id = p.topic_id
WHERE p.last_editor_id = p.user_id
  AND p.self_edits > 0
  AND (u.trust_level = 0 OR u.trust_level = 1)
  AND p.deleted_at IS NULL
  AND t.deleted_at IS NULL
  AND t.archetype = 'regular'
ORDER BY p.updated_at DESC
LIMIT 500

```

This query should do it, it lists recent posts that have been edited by the OP if the the user has a trust level of 0/1.  
Shoutout to @simon for helping me finish this query!

---

<div class="post-metadata">

### Author: ![jsha](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsha/32/48894_2.png) [@jsha](https://meta.discourse.org/u/jsha)
#### Post date: [September 19, 2018, 5:10pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/37 "2018-09-19T17:10:32Z")

</div>

Wow, thanks. I am, as always, blown away by the level of friendliness and helpfulness here.

I’m poking through the output of that list, and here’s a good example of why this particular type of spam is so frustrating:

Post: [https://community.letsencrypt.org/t/future-of-wildcard-certificates-obtaining/72213](https://community.letsencrypt.org/t/future-of-wildcard-certificates-obtaining/72213)  
Original: [Reddit - Please wait for verification](https://www.reddit.com/r/letsencrypt/comments/8k2wf3/future_of_wildcard_certificates_obtaining/)

You can see that several forum members spent a while helping this person out with genuine answers to their questions, not realizing that those questions had actually been asked on Reddit and they were talking to a spammer.

Anyhow, the [Data Explorer](https://meta.discourse.org/t/32566?silent=true) query is a cool tool; we’ll see how that works for us. And I’ll additionally lower the post edit time.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [September 19, 2018, 5:37pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/38 "2018-09-19T17:37:43Z")

</div>

Wow. That’s a fairly intricate and devoted attempt to spam. And the links have `no-follow`, so they don’t even do the spammers any good.

---

<div class="post-metadata">

### Author: ![Stranik](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stranik/32/85638_2.png) [@Stranik](https://meta.discourse.org/u/Stranik)
#### Post date: [September 19, 2018, 8:36pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/39 "2018-09-19T20:36:28Z")

</div>

Nofollow does not transfer the weight of the page further, but search engines continue to take transitions from them. Behavioral factors have been very much appreciated recently. That’s why spammers want to place any links where there are real transitions.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [September 20, 2018, 3:37am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/40 "2018-09-20T03:37:07Z")

</div>

> [@jsha](#):
>
> here’s a good example

Looking at the example… the original post was at 9-14 5:28am, and the spammy edit was much much later at 9-14 3:07pm. So tightening the allowed edit window considerably would, again, be my first recommendation.

---

<div class="post-metadata">

### Author: ![jsha](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsha/32/48894_2.png) [@jsha](https://meta.discourse.org/u/jsha)
#### Post date: [September 20, 2018, 4:01am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/41 "2018-09-20T04:01:43Z")

</div>

Yep, I’ve tightened to 60 minutes. We’ll see what effect it has! If the spammers continue without paying much attention, we may wind up answering a lot of copy-pasted questions and just not getting the follow-up edits that add the links. It’s entirely possible for both the spammers and us to continue oblivious after the change. 😃

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [September 20, 2018, 4:26am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/42 "2018-09-20T04:26:54Z")

</div>

We are always interested in ways to better defeat spammers by default so keep us advised on the results!

---

<div class="post-metadata">

### Author: ![jsha](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsha/32/48894_2.png) [@jsha](https://meta.discourse.org/u/jsha)
#### Post date: [September 22, 2018, 5:31pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/47 "2018-09-22T17:31:03Z")

</div>

So far we’ve run into one example (that we know of) where the 60-minute window restricted legitimate activity: A forum regular (TL3) wanted to edit their post at [Compatibility testing of No Common Name - Issuance Tech - Let's Encrypt Community Support](https://community.letsencrypt.org/t/compatibility-testing-of-no-common-name/72863) and was surprised to find they couldn’t. They [followed up on our Lounge thread](https://community.letsencrypt.org/t/legitimate-posts-ending-in-spam-links/64465/31?u=jsha).

Is it true that lowering the edit window also restricts the ability to “Make Wiki?” If so, that makes sense, but it could be clearer. Maybe by keeping the “Make Wiki” option but providing an informative error?

A TL4 user later came along and made the post a wiki. I assume “make any post a wiki” is a TL4 privilege, but it doesn’t appear to be listed at [Understanding Discourse Trust Levels](https://blog.discourse.org/2018/06/understanding-discourse-trust-levels/). Might make a good edit to that post!

---

<div class="post-metadata">

### Author: ![jsha](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsha/32/48894_2.png) [@jsha](https://meta.discourse.org/u/jsha)
#### Post date: [October 15, 2018, 4:37am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/48 "2018-10-15T04:37:04Z")

</div>

As an FYI, we just had our first instance (AFAIK) of a reply that was edited within the 60-minute window to add spam links: [Plesk wildcard certificate renewal fails - #15 - Help - Let's Encrypt Community Support](https://community.letsencrypt.org/t/plesk-wildcard-certificate-renewal-fails/72624/15).

The reply was made at 2:25 am and the edit was made at 3:21 am. Which might be just a coincidence or might indicate intentional adaptation to the new limit.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [October 15, 2018, 6:08am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/51 "2018-10-15T06:08:50Z")

</div>

> [@jsha](#):
>
> Is it true that lowering the edit window also restricts the ability to “Make Wiki?” If so, that makes sense, but it could be clearer. Maybe by keeping the “Make Wiki” option but providing an informative error?

No, I don’t think this is true. Have you found it to be the case? I’m unclear.

> [@jsha](#):
>
> The reply was made at 2:25 am and the edit was made at 3:21 am.

Your options at this point are to further tighten the time limit for editing, from 60 minutes to 30 minutes, 15 minutes, etc.. or..

> [@codinghorror](#):
>
> As a very last resort, you can also disallow lower trust levels from editing their posts altogether as @pfaffman indicated

I believe a new release of [Data Explorer](https://meta.discourse.org/t/32566?silent=true) should have the “show me recently edited posts” query bundled with it, but I am not sure when that will be released. What’s the planned date of release for that @rishabh?

---

<div class="post-metadata">

### Author: ![rishabh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rishabh/32/179446_2.png) [@rishabh](https://meta.discourse.org/u/rishabh)
#### Post date: [October 15, 2018, 6:18am UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/52 "2018-10-15T06:18:24Z")

</div>

> [@codinghorror](#):
>
> What’s the planned date of release for that @rishabhn?

That has already been merged last week with:

[https://github.com/discourse/discourse-data-explorer/pull/26](https://github.com/discourse/discourse-data-explorer/pull/26)

Sites that are up to date can see this on `admin/plugins/explorer`:

 ![de](https://global.discourse-cdn.com/meta/original/3X/0/9/090b78ccd82eafb6f2784927d6cfc76b6f0c537b.png)

---

<div class="post-metadata">

### Author: ![jsha](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsha/32/48894_2.png) [@jsha](https://meta.discourse.org/u/jsha)
#### Post date: [October 15, 2018, 5:47pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/53 "2018-10-15T17:47:22Z")

</div>

> [@codinghorror](#):
>
> No, I don’t think this is true. Have you found it to be the case? I’m unclear.

Yes, [one of our forum users reported](https://community.letsencrypt.org/t/legitimate-posts-ending-in-spam-links/64465/31) trying to self-wiki a post and failing, after I had changed the edit window. They were TL3 at the time. After I bumped them to TL4 they were able to wiki the post.

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [October 15, 2018, 6:34pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/56 "2018-10-15T18:34:42Z")

</div>

> [@jsha](#):
>
> Is it true that lowering the edit window also restricts the ability to “Make Wiki?” If so, that makes sense, but it could be clearer. Maybe by keeping the “Make Wiki” option but providing an informative error?

I can confirm that this is true, just tested on try. Both the “edit” and “make wiki” buttons disappear outside the `post edit time limit`.

I seem to recall it was intentional, not a bug. If a user is restricted from editing their post, they shouldn’t be able to make the post a wiki such that they can edit it. That bypasses the edit restriction. In this case staff interaction is required. We see this occur even here on Meta with some of our older #howto and #Customization > Plugin topics that aren’t already wiki’d.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [October 15, 2018, 6:42pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/59 "2018-10-15T18:42:35Z")

</div>

> [@jsha](#):
>
> After I bumped them to TL4 they were able to wiki the post

Reading more closely, it sounds like this is already the case so nothing else to do here then?

---

<div class="post-metadata">

### Author: ![jsha](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jsha/32/48894_2.png) [@jsha](https://meta.discourse.org/u/jsha)
#### Post date: [October 15, 2018, 7:00pm UTC](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205/60 "2018-10-15T19:00:23Z")

</div>

Yep, I think this was all “working as intended.” It was a bit confusing since the `post edit time limit` setting didn’t mention that it also affected wiki’ing, and when attempting to wiki, there was no notification that “you can’t wiki this post because it’s outside the time limit.” Those might be a couple minor doc improvements, though I also acknowledge this is a pretty niche area, so I don’t feel strongly if you want to leave it as is.

[Previous page](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205.md?page=1)

[Next page](https://meta.discourse.org/t/human-driven-copy-paste-spam/97205.md?page=3)
