{"id":28573791,"url":"https://github.com/sobotics/userstalker","last_synced_at":"2025-08-08T01:32:54.505Z","repository":{"id":24539057,"uuid":"101864614","full_name":"SOBotics/UserStalker","owner":"SOBotics","description":"Detecting stuff about users on creation","archived":false,"fork":false,"pushed_at":"2023-02-28T06:59:34.000Z","size":642,"stargazers_count":5,"open_issues_count":5,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-10T21:20:00.812Z","etag":null,"topics":["spam","spam-users","stack-exchange"],"latest_commit_sha":null,"homepage":"https://chat.stackexchange.com/rooms/59667/mobotics","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SOBotics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-08-30T09:42:36.000Z","updated_at":"2024-09-04T21:09:47.000Z","dependencies_parsed_at":"2025-06-10T21:20:01.722Z","dependency_job_id":"a8359e05-a569-4504-93b2-35d40a37a87a","html_url":"https://github.com/SOBotics/UserStalker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SOBotics/UserStalker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SOBotics%2FUserStalker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SOBotics%2FUserStalker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SOBotics%2FUserStalker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SOBotics%2FUserStalker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SOBotics","download_url":"https://codeload.github.com/SOBotics/UserStalker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SOBotics%2FUserStalker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269352444,"owners_count":24402668,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-07T02:00:09.698Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["spam","spam-users","stack-exchange"],"created_at":"2025-06-10T21:19:19.670Z","updated_at":"2025-08-08T01:32:54.447Z","avatar_url":"https://github.com/SOBotics.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# User Stalker \n\n## What exactly is this?\n\nWe are scanning every user account upon creation (on a few SE sites) and report those users who fail a few checks in a chat room. \n\n## What data are we using?\n\n1. [The Stack Exchange API](http://api.stackexchange.com).\n2. Blacklisted usernames from the [SmokeDetector project](https://charcoal-se.org/#whats-smokey). \n3. Offensive Regular Expressions from the [Heat Detector project](https://stackapps.com/questions/7001/heat-detector-analysing-comments-to-find-heat). \n4. Blacklisted username regex [created](https://github.com/SOBotics/UserStalker/issues/1) using data from [Rubio](https://puzzling.stackexchange.com/users/30633/rubio)\n\n## What all are we checking?\n\n1. If there is a link in their about me text. \n2. If the website link is similar to their display name. \n3. If the username or profile text fails the Heat Detector Offensive Regex.\n4. If the user profile text contains a phone number.\n5. If the user profile text contains the word \"Insurance\".\n6. If the username is blacklisted on the SmokeDetector username blacklist.\n7. If the username fails the username blacklist regex.\n8. If the username contains the current year or the next year.\n9. If the user is suspended on the site upon creation.\n\n\n## What do we do when a user is detected as a bad user? \n\n***Nothing***\n\nWe don't do anything when a user is detected. We are just stalkers. \n\nAccording to the [Stack Exchange policy](https://meta.stackexchange.com/questions/297993/what-is-the-policy-on-destroying-users-with-very-spammy-profiles-but-have-not-po):\n\n\u003e We actually don't encourage moderators to seek out these kinds of users and destroy them because it's usually a waste of time. There are lots of spam users that just create profiles and then never do anything, and actively seeking them out to destroy them rarely achieves anything. \n\nand \n\n\u003e So if you really feel like spending your time hunting these down, go for it, but by all means you should be absolutely certain it's an attempt at spam\n\nModerators can destroy these accounts, if and only if they are completely sure that the profile is created only for spam. \n\nWhen we detect trends like the [\"The Great Super User Spam Invasion of 2017\"](https://meta.stackexchange.com/a/238975) on [16th October 2017](https://chat.stackexchange.com/transcript/59667/2017/10/16), we usually try to figure out what is happening and destroy the spam profiles. (But it is left to the site moderators discretion. We just alert the mods, if the need be. In that particular case, Community Managers were informed as the number of accounts involved was very high.) \n\n(Another recent occurrence is [the insurance spam](https://meta.stackexchange.com/questions/303746/), which lead to the two new checks.)\n\n## Whom would it help?\n\nMostly the diamond moderators.\n\n## How do I track a site? \n\nUse the `add` command and pass the site name and the frequency of tracking needed as parameters. Frequency can be `fast` or `slow`. `fast` calls the API every  minute, `slow` calls it every 5 minutes. \n\nFor example, if you need to track on site Drupal Answers, every 5 minutes, use: \n\n    @Jam add drupal slow\n\n## What other commands are there? \n\n - `quota` - Returns the API quota available.\n - `alive` - Returns a test message if the bot is responding to commands. \n - `tracked` - Returns the list of sites which are being tracked. \n - `check` - Returns a list of reasons for which a user can be caught. \n\n# Join us in [MOBotics](https://chat.stackexchange.com/rooms/59667/mobotics) \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsobotics%2Fuserstalker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsobotics%2Fuserstalker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsobotics%2Fuserstalker/lists"}