# Build a browser fingerprinting plugin

**URL:** https://meta.discourse.org/t/build-a-browser-fingerprinting-plugin/93037
**Category:** Marketplace
**Created:** [July 24, 2018, 7:52pm UTC](https://meta.discourse.org/t/build-a-browser-fingerprinting-plugin/93037 "2018-07-24T19:52:08Z")
**Posts on this page:** 3
**Page:** 1

<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: [July 24, 2018, 7:52pm UTC](https://meta.discourse.org/t/build-a-browser-fingerprinting-plugin/93037/1 "2018-07-24T19:52:08Z")

</div>

### What would you like done?

Build a Discourse plugin that does the following:

- calculates a browser fingerprint for each **user session** ala [panopticlick](https://panopticlick.eff.org) using perhaps [fingerprintjs2](https://github.com/Valve/fingerprintjs2), or [clientjs](https://github.com/jackspirou/clientjs), or similar. This dependency should _only_ be loaded when the plugin is configured and enabled. The fingerprint should _only_ be calculated once per browsing session per logged in user.

- make sure the fingerprint table has a column for “fingerprint type” that lists the method of fingerprint generation, so that alternate fingerprints can be added at a later date. For this initial version, one type of fingerprint is fine. Also be sure to store the date that the fingerprint was generated in a column as well.

- if this browser session fingerprint has not been seen before for this user, store it in the last 10 known browser fingerprints for this user (where 10 is a configurable limit), replacing the oldest known fingerprint. This table should _not_ grow indefinitely.

- have a small bit of UI that shows all user accounts that have **matching browser fingerprints with a different user account** , to help identify duplicate users.

The purpose of this plugin is to help combat trolls that create multiple accounts with a VPN – as documented [here](https://meta.discourse.org/t/handling-trolls-with-multiple-accounts-over-vpns/49489), [here](https://meta.discourse.org/t/pointers-for-building-a-plugin-for-browser-fingerprinting/49683), and [here](https://meta.discourse.org/t/how-to-reliably-identify-a-troll-with-suspected-multiple-user-accounts/49163).

### When do you need it done?

Next 3 months

### What is your budget, in $ USD that you can offer for this task?

$1000, with a possible $1000 discretionary bonus for being xxxxtra awesome, after seeing your work and how responsive you are to feedback on your work 😉

Note that this plugin must be MIT licensed, and will be folded into the discourse org once completed.

---

<div class="post-metadata">

### Author: ![ljpp](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ljpp/32/96506_2.png) [@ljpp](https://meta.discourse.org/u/ljpp)
#### Post date: [July 24, 2018, 9:08pm UTC](https://meta.discourse.org/t/build-a-browser-fingerprinting-plugin/93037/2 "2018-07-24T21:08:15Z")

</div>

Okay, this is totally awesome. A admin/moderator dream come true.

Falls under the GDPR (user ID), but I guess not really any different from a tracking cookie that analytics services or advertisers use?

---

<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: [August 23, 2018, 9:08pm UTC](https://meta.discourse.org/t/build-a-browser-fingerprinting-plugin/93037/3 "2018-08-23T21:08:21Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
