this image is not to be taken literallyMultiple users of new social media platform Bluesky have recently reported being followed by strange accounts with bizarre names and no real content. These accounts have display names consisting of random word pairs such as “Compassionate Yogurt” and “Unaccountable Reindeer”, handles consisting of two entirely different random words, and biographies consisting of at least three random words (separated by a variety of characters). Thankfully, unlike certain large social media platforms, Bluesky (or, more accurately, the underlying AT Protocol) provides an API that can be used to download public data programmatically, which is useful when researching large spam networks.mashing adjectives and nouns together at random doesn’t exactly inspire confidence in the legitimacy of a group of social media accountsfrom atproto import Client import json import pandas as pd import random import requests import time SEPARATORS = [“,”, “#”, “|”, “*”, “n”] VALID_CHARS = “abcdefghijklmnopqrstuvwxyz-,#|*n ” def retry (method, params): retries = 5 delay = 1 while retries > 0: try: r = method (params) return r except: print (” error, sleeping ” + str (delay) + “s”) time.sleep (delay) delay = delay * 2 retries = retries – 1 return None def get_following (handle, client, batch=100, limit=1000): print (“retrieving accounts followed by ” + handle + “…”) r = retry (client.bsky.graph.get_follows, {“actor” : handle, “limit” : batch}) cursor = r[“cursor”] rows = [] rows.extend (r.follows) while cursor is not None and len (rows) < limit: time.sleep (1) r = retry (client.bsky.graph.get_follows, {“actor” : handle,…Spamming where the skies are blue