Skip to content
Deanonymize anonymous Users on Piazza Q&A.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Deanonymize anonymous posters on Piazza Q&A.

How does it work?

Unravel uses Piazza's API to deduce anonymous posters on Piazza classes. Keeping track of the class statistics, one can deduce the identity by just comparing two class statistics records taken before and after an anonymous post.

Unravel diffs two user statistics data of a given class. Each user in the first statistics gets compared with itself on the second statistics. If a difference is found, Unravel proceeds to diffing posts data of the class to find what was updated by the user.

It then prints out to stdout the change in posts data combined with the user info whose statistics were changed.

{'name': 'User 1', 'email': ''} {'cid': 24, 'content': '<p>Create a follow up.</p>', 'diff_type': 'followup', 'time': '2019-08-11T16:06:50Z'}

Fields in the result

  • cid: the CID of the modified post.
  • Content: Text change made by the anonymous user.
  • time: Change time.
  • diff_type: Categorizes the change made by the anonymous user. Can be one of the following:
'post_add' # New post added.
's_answer' # Student answer added.
's_answer_update' # Student answer updated.
'followup' # Created new follow up discussion entry.
'feedback' # Created new reply to a follow up discussion.


python -u piazza_username -p piazza_password -c piazza_class_id
  • For command-line argument descriptions: python -h
Piazza Post Deanonymzer.

optional arguments:
  -h, --help   show this help message and exit

Piazza Authentication:
  -u email     Piazza account email
  -p password  Piazza account password
  -c class_id  Class id from{class_id}

This is a work in progress, definitely buggy, proof of concept application. Any feedback is appreciated!

You can’t perform that action at this time.