Skip to content
Snippets Groups Projects
Commit 60ba0c11 authored by Jan Eggers's avatar Jan Eggers
Browse files

POC is running

parent 341f2089
No related branches found
No related tags found
No related merge requests found
,janeggers,untergeekPro.local,28.12.2024 09:30,file:///Users/janeggers/Library/Application%20Support/LibreOffice/4;
\ No newline at end of file
File added
......@@ -12,18 +12,18 @@ Das Fernziel ist eine Recherche zu KI-Inhalten im Wahlkampf mit zwei Stoßrichtu
### Phase 1: Bluesky
- Bluesky-API anschauen
- Beliebiges Account vier Wochen scannen
- AIorNot-API einbauen https://docs.aiornot.com/
- Bilder checken
- Videos checken:
- Audiospur extrahieren
- Audiospur checken
- hive-API einbauen
- Detectora-API einbauen
- Ausgabe: Vermuteter KI-Anteil
### Phase 2: 4CAT
### Phase 2: Chemtrail App
- Dash-App auf dem Server zum Check eines Handles
### Phase 3: 4CAT
- 4CAT-Server aufsetzen
- "processor" für KI-Check einbauen
-
TODO 0 → 100644
# App: Chemtrail
## Auswertung
- Anzahl verdächtige Texte
- Anzahl verdächtige Bilder
- Check bis Datum
## UI
- Dash-App
- Eingabe eines Bluesky-Accounts
- Konto suchen
- NTH: Infocard und letzte Posts rendern
- File mit Ergebnissen letzter Check suchen, sonst 20 Posts
- Anzeige Ergebnisse letzter Check
- Neue Posts holen und auswerten
- CSV aktualisieren und Download-Link anbieten
# NOT RUN
# Define the global posts list
posts = []
......
import re
import locale
import ollama
from openai import OpenAI
import whisper
from pathlib import Path
import os
import base64
prompt = """Du bist Barrierefreiheits-Assistent.
Du erstellst eine deutsche Bildbeschreibung für den Alt-Text.
Beschreibe, was auf dem Bild zu sehen ist.
Beginne sofort mit der Beschreibung. Sei präzise und knapp.
Du erstellst eine deutsche Bildbeschreibung für den Alt-Text.
Beschreibe, was auf dem Bild zu sehen ist.
Beginne sofort mit der Beschreibung. Sei präzise und knapp.
Wenn das Bild lesbaren Text enthält, zitiere diesen Text."""
client = OpenAI(api_key = os.environ.get('OPENAI_API_KEY'))
# Use GPT-4 mini to describe images
OLLAMA = False
def gpt4_description(image_url):
# Check a local image by converting it to b64:
# image_url = f"data:image/jpeg;base64,{b64_image}"
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": prompt},
{
"type": "image_url",
"image_url": {
"url": image_url,
}
},
],
}
],
max_tokens=300,
)
return response.choices[0].message.content
def llama_description(b64_image):
response = ollama.chat(
model="llama3.2-vision",
messages=[{
'role': 'user',
'content': prompt,
'images': [b64_image]
}]
)
return response['message']['content'].strip()
def ai_description(fname):
# Use llama3.2-vision to describe images
# Use whisper.cpp command-line tool to transcribe audio and video
desc = f"Filetype: {fname.lower()[-4:]}"
image_folder = os.path.join(os.path.dirname(__file__), 'messages')
file_path = os.path.join(image_folder, fname)
file_path = os.path.join(image_folder, fname)
if fname.lower().endswith(('.jpg', '.jpeg')):
try:
with open(file_path, 'rb') as file:
file_content = file.read()
image = base64.b64encode(file_content).decode('utf-8')
except FileNotFoundError:
return "!!!Datei nicht gefunden!!!"
except Exception as e:
raise Exception(f"Error reading file {fname}: {str(e)}")
if OLLAMA:
desc2 = llama_description(image)
else:
desc2 = gpt4_description(image)
desc2 = gpt4_description(image)
desc = f"{desc}\n{desc2}"
# Return ai-generated description
return desc
......@@ -2,6 +2,51 @@
"""
Eine Python-Bibliothek, um mit detectora.de auf KI-generierten Text zu prüfen.
PARAMETER: text
Erwartet einen Text-Chunk, gibt die die Wahrscheinlichkeit zurück, dass der Text KI-generiert ist.
Achtung: Führt kein Chunking durch. Texte sollten also nicht zu lang werden. (Token-Länge
des Modells: ?)
RÜCKGABEWERT: real
Gibt die Wahrscheinlichkeit zurück, die das Modell dem Text zuweist (zwischen 0 und 1)
Detectora-Key muss als DETECTORA_API_KEY in .env hinterlegt sein.
"""
import requests
import json
import os
# os.environ.get('OPENAI_API_KEY')
# Konstanten #
api_url = "https://backendkidetektor-apim.azure-api.net/watson"
def query_detectora(text):
data = {
'query': text,
}
api_key = os.environ.get('DETECTORA_API_KEY')
headers = {
'APIKey': api_key,
'Content-Type': 'application/json',
}
try:
response = requests.post(api_url,
headers=headers,
json=data
)
if response.status_code == 200:
# Success
return response.json()['fake_probability']
elif response.status_code == 400:
print("DETECTORA: Fehlerhafte API-Anfrage")
return None
elif response.status_code == 401:
print(f"DETECTORA-API-Key 'api_key' nicht gültig")
except Exception as e:
print("Fehler beim Verbinden mit der DETECTORA-API:", str(e))
return None
return response['']
# imagecheck.py
# Erfragt KI-Wahrscheinlichkeit für ein Bild über Hive- und AIorNot-API
from bildbeschreibung import ai_description
import requests
import json
import os
# Konstanten #
endpoint_url = "https://api.aiornot.com/v1/reports/image"
def query_aiornot(image):
# Erwartet URI eines Bildes
# AIORNot-API-Dokumentation: https://docs.aiornot.com/
data = json.dumps({
'object': image,
})
api_key = os.environ.get('AIORNOT_API_KEY')
headers = {
'Authorization': f"Bearer {api_key}",
'Content-Type': 'application/json',
'Accept': 'application/json',
}
try:
response = requests.post(endpoint_url,
headers=headers,
data=data
)
if response.status_code == 200:
# Success
return response.json()['report']['verdict']
elif response.status_code == 400:
print("AIORNOT: Fehlerhafte API-Anfrage")
return None
elif response.status_code == 401:
print(f"AIORNOT-API-Key 'api_key' nicht gültig")
except Exception as e:
print("Fehler beim Verbinden mit der AIORNOT-API:", str(e))
return None
return response['']
import json
import pandas as pd
from atproto import Client, models
from detectora import query_detectora
from imagecheck import query_aiornot
from bildbeschreibung import gpt4_description
def aiornot_wrapper(did,embed):
# Verpackung für die AIORNOT-Funktion:
# Checkt, ob es überhaupt ein Embed gibt,
# und ob es ein Bild enthält.
# Wenn ja: nimmt das erste Bild und
# erstellt KI-Beschreibung und KI-Einschätzung
if embed is None or embed == '':
return None
images = getattr(embed,'images',None)
if images is None:
return None
desc = []
for i in images:
# Construct an URL for the image thumbnail (normalised size)
i_url = f"https://cdn.bsky.app/img/feed_thumbnail/plain/{did}/{i.image.ref.link}"
aiornot_score = query_aiornot(i_url)
gpt4_desc = gpt4_description(i_url)
desc.append({'aiornot_score': aiornot_score,
'gpt4_description': gpt4_desc})
return desc
def fetch_user_posts(handle: str, limit: int = 100) -> list:
# Initialize the Bluesky client (unauthenticated)
client = Client(base_url="https://api.bsky.app")
try:
# Fetch the user ID from the handle
profile = client.app.bsky.actor.get_profile({'actor': handle})
......@@ -17,31 +41,45 @@ def fetch_user_posts(handle: str, limit: int = 100) -> list:
# Fetch timeline for the user (latest posts first)
cursor = None
while len(posts) < limit:
feed = client.app.bsky.feed.get_author_feed({'actor':user_id,
'limit':min(limit - len(posts), 50),
'cursor':cursor,
if cursor is not None:
feed = client.app.bsky.feed.get_author_feed({'actor':user_id,
'limit':(min(limit - len(posts), 50)),
'cursor': cursor,
})
else:
feed = client.app.bsky.feed.get_author_feed({'actor':user_id,
'limit': (min(limit - len(posts), 100)),
})
if not feed['feed']:
break
cursor = feed['cursor']
for item in feed['feed']:
post = getattr(item,'post')
# Extract basic post information
post_data = {
'author_handle': getattr(item[0][1], 'handle', ''),
'author_display_name': getattr(item[0][1], 'display_name', ''),
'author_did': getattr(item[0][1], 'did', ''),
'created_at': getattr(item[3], 'created_at', ''),
'indexed_at': item[2],
'text': getattr(item[3], 'text', ''),
'uri': item[4],
'cid': item[1],
'like_count': item[8],
'reply_count': item[10],
'repost_count': item[11],
'quote_count': item[9],
'language': getattr(item[3], 'langs', [''])[0] if hasattr(item[3], 'langs') else ''
'author_handle': getattr(post['author'],'handle',''),
'author_display_name': getattr(post['author'], 'display_name', ''),
'author_did': getattr(post['author'], 'did', ''),
'created_at': getattr(post['record'], 'created_at', ''),
# 'indexed_at': item[2],
'text': getattr(post['record'], 'text', ''),
'uri': post['uri'],
'cid': post['cid'],
'like_count': post['like_count'],
'reply_count': post['reply_count'],
'repost_count': post['repost_count'],
'quote_count': post['quote_count'],
'language': getattr(post['record'], 'langs', [''])[0] if hasattr(post['record'], 'langs') else '',
# Embedded media: images, external, record
# Image alt, file, and URI
'embed': getattr(post['record'],'embed','')
# Embed URI and description
# 'external_description': getattr(post['embed']['external'],'description',''),
# 'external_uri': getattr(post['embed']['external'],'uri',''),
}
posts.append(post_data)
cursor = len(feed['feed'])
return posts[:limit]
......@@ -49,13 +87,11 @@ def fetch_user_posts(handle: str, limit: int = 100) -> list:
print(f"An error occurred: {e}")
return []
def main():
def check_handle(handle = 'lion-c.bsky.social', limit = 20):
# Define the Bluesky handle and number of posts to fetch
# Remove the @ before handle strings
handle = 'lion-c.bsky.social' # Replace with the desired handle
limit = 100
# Fetch the last 100 posts from the specified user
# Fetch the most recent posts from the specified user
posts = fetch_user_posts(handle, limit)
if not posts:
......@@ -63,21 +99,17 @@ def main():
return
# Convert posts to a DataFrame
post_data = []
for post in posts:
post_data.append({
'uri': post.uri,
'cid': post.cid,
'text': post.record.text,
'created_at': post.record.createdAt,
'author': handle # Assuming you know the author's handle, otherwise fetch it from post record
})
df = pd.DataFrame(posts)
df = pd.DataFrame(post_data)
# Print or save the DataFrame as needed
print(df)
df.to_csv('user_posts.csv', index=False) # Save to CSV for example
# Now add probability check for each post text
df['detectora_ai_score'] = df['text'].apply(query_detectora)
# Now filter those
df['aiornot_ai_score'] = df.apply(lambda row: aiornot_wrapper(row['author_did'], row['embed']), axis=1)
return df
if __name__ == "__main__":
main()
\ No newline at end of file
df = check_handle()
print(f"Durchschnittliche KI-Text-Wahrscheinlichkeit: {df['detectora_ai_score'].mean()}")
df.to_csv('user_posts.csv', index=False) # Save to CSV for example
\ No newline at end of file
author_handle,author_display_name,author_did,created_at,text,uri,cid,like_count,reply_count,repost_count,quote_count,language,embed,detectora_ai_score
tendar.bsky.social,(((Tendar))),did:plc:ernjxefnyk2hhwhbd3zblykf,2024-12-27T18:26:10.347Z,"The case around oil tankers Eagle-S, which is most certainly responsible for damaging the Estlink-2 undersea cable, is getting even more interesting. It appears that ship was not only involved in sabotage but in espionage, as well.",at://did:plc:ernjxefnyk2hhwhbd3zblykf/app.bsky.feed.post/3lecmgh7cz22o,bafyreichh4ydy6hw73goyvsfughj7ft65q4ly2ptiaeexk7tdv66tuwxzi,953,29,252,17,en,"images=[Image(alt='', image=BlobRef(mime_type='image/jpeg', size=294530, ref=IpldLink(link='bafkreih5fhonli4qpbv2xqqctqouv473nahlbzjfzedgchgv4wr7bvzqie'), py_type='blob'), aspect_ratio=AspectRatio(height=1002, width=1170, py_type='app.bsky.embed.defs#aspectRatio'), py_type='app.bsky.embed.images#image')] py_type='app.bsky.embed.images'",0.6172474026679993
barryalanpiatoff.bsky.social,Barry Alan Piatoff,did:plc:xewv5wqmdxmbf326uidz24rn,2024-12-25T00:01:41.610Z,"""For Bluesky, Massive User Uptick Brings Growing Pains and Divisive Bots. It’s not just human users who’ve been flocking to Bluesky but also bots, including those designed to create partisan division."" via The Hollywood Reporter
@lion-c.bsky.social is quoted & seems to understand the bot problem",at://did:plc:xewv5wqmdxmbf326uidz24rn/app.bsky.feed.post/3le3nrniflc2w,bafyreihdxpx5r3yi6kbnmtprxvvbgbewnt77qn7sv2yywsr2wn3t6ivjpa,3,0,3,0,en,"external=External(description='It’s not just human users who’ve been flocking to Bluesky but also bots, including those designed to create partisan division.', title='For Bluesky, Massive User Uptick Brings Growing Pains and Divisive Bots', uri='https://www.hollywoodreporter.com/news/general-news/bluesky-user-growth-brings-growing-pains-and-divisive-bots-1236093735/?link_source=ta_thread_link&taid=676b2ef7b0d84200018b70a5&utm_campaign=trueanthem&utm_medium=social&utm_source=threads', thumb=BlobRef(mime_type='image/jpeg', size=795675, ref=IpldLink(link='bafkreiaoza25gxeytmjy4adjxyy6qm2iqtnjob6huatjvqgjl2xassudea'), py_type='blob'), py_type='app.bsky.embed.external#external') py_type='app.bsky.embed.external'",0.0009211198193952441
conspirator0.bsky.social,Conspirador Norteño,did:plc:7n2gzbzn4xus4nghzfpjgli3,2024-12-21T17:29:26.644Z,"In the two weeks since this thread was posted, the ""passionate about"" spam network has grown to over 15 thousand accounts, and evolved a bit in other ways. Here's an updated analysis...
bsky.app/profile/cons...",at://did:plc:7n2gzbzn4xus4nghzfpjgli3/app.bsky.feed.post/3ldtghifzd22v,bafyreib2edsamrs4uya4xd67pkdxh3chdow2rwagwnn4z536rewfcgtwve,427,13,202,26,en,"record=Main(cid='bafyreifqqzqwhfldbulddfabdemiwi6buqf6kn4z3pcw3efhete2c7znuq', uri='at://did:plc:7n2gzbzn4xus4nghzfpjgli3/app.bsky.feed.post/3lcmg572f4c2q', py_type='com.atproto.repo.strongRef') py_type='app.bsky.embed.record'",0.002669913461431861
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-10T10:35:41.542Z,Another bot network using AI for at least some of the posts...,at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcx27jbqoc2x,bafyreif674cj5mwwc6xudgwo3aphcragdic52eic5bznbhejoktut66htu,11,3,5,0,en,"record=Main(cid='bafyreiahf3qxf2gjbx3drq6ypo22gdi2ywohjxiagypuqkupfbnuqdltkq', uri='at://did:plc:7n2gzbzn4xus4nghzfpjgli3/app.bsky.feed.post/3lcvysn6vek2h', py_type='com.atproto.repo.strongRef') py_type='app.bsky.embed.record'",0.06642594933509827
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-10T07:52:29.081Z,"Grundsätzlich schwer zu sagen. Zwei Möglichkeiten:
1) Die Folgen tausenden (>100,000) Accounts und gewinnen dadurch ""back follower"". (komisch, aber nicht verboten)
2) Bekannte Persönlichkeiten, die von X gekommen sind und daher ohne Beiträge viele follower haben.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcwr3ohlhc2d,bafyreigb3kwnfwx2a72zzarm7shpkblpma4jivlvqmzkaw2jahvbrw33bi,0,0,0,0,de,,0.0009483483736403286
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T19:29:02.362Z,Do you have a handle of some? Would like to take a look.,at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcsx3eprhc2s,bafyreidaznh2akx262xtq2b4ioikb63gq5jw46kc2umyzlgluqtdk7rbpq,2,1,0,0,en,,0.6039703488349915
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T12:04:36.978Z,"Auf jeden Fall ein Fake-Account (siehe Antwort an OP)!
Ich denke aber nicht, das der zum gleichen Netzwerk gehört - da diese Bilder von Instagram gestohlen wurden. Das Ziel kann aber natürlich das gleiche sein.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcs6aomuek2i,bafyreietwh4g5a4fjicrapftwraqznz6ldrhy3mmbzo3i624savkn2ljsu,2,0,0,0,de,,0.0005878527881577611
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T11:48:57.041Z,"Eines der Fotos zeigt auf der Uniform den Namen ""Hufschmidt"". Schnelle Google Suche bestätigt deinen Verdacht: Diese ""Christine Wagner"" existiert nicht und hat die Bilder geklaut.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcs5eoad3s2q,bafyreiff2wrz6f7nxoavv4jybxlviwnmoivsmuntzfbmgwzgtitykusici,3,1,0,0,de,"images=[Image(alt='Aileen Tina Hufschmidt auf LinkedIn.', image=BlobRef(mime_type='image/jpeg', size=42644, ref=IpldLink(link='bafkreiaoq6e4kn5mjeaccdfebh4qydfyeq5mubmtueuyjji6hegqq35mdi'), py_type='blob'), aspect_ratio=AspectRatio(height=217, width=195, py_type='app.bsky.embed.defs#aspectRatio'), py_type='app.bsky.embed.images#image')] py_type='app.bsky.embed.images'",0.05424289032816887
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T09:41:32.889Z,"4/ Some sources said it has been up to 50 accounts, but currently I cannot find those accounts on Bluesky (perhaps already blocked?).
See for example this list: bsky.app/profile/lars...
Thanks to everyone who helped/helps shining light on this!",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcrwau77y22h,bafyreigzxcnwk2tqgxikalwyouu7mbjns6jo6a3nnmlewexpzloitundzu,16,1,1,0,en,"record=Main(cid='bafyreic4hoy62rhw3t2y5tzmttonevtsymamywwmry4wwe5h2ozwa62k6y', uri='at://did:plc:buuaezktxboze6nudnwqlc7x/app.bsky.feed.post/3lcr4xowe5s22', py_type='com.atproto.repo.strongRef') py_type='app.bsky.embed.record'",0.0031484924256801605
larswienand.bsky.social,Lars Wienand,did:plc:buuaezktxboze6nudnwqlc7x,2024-12-08T02:09:01.814Z,Es sind noch ein paar mehr schon/noch hinterlegt bei vanillasky. click,at://did:plc:buuaezktxboze6nudnwqlc7x/app.bsky.feed.post/3lcr4xowe5s22,bafyreic4hoy62rhw3t2y5tzmttonevtsymamywwmry4wwe5h2ozwa62k6y,108,3,17,3,de,"images=[Image(alt='1. Screenshot of Subdomains of vanilasky.click https://urlscan.io/ip/23.88.96.130', image=BlobRef(mime_type='image/jpeg', size=945584, ref=IpldLink(link='bafkreihyrxnwyy5zulrkpbj4p7detvsbjm2njoupzwklva3xitm64tmgfq'), py_type='blob'), aspect_ratio=AspectRatio(height=2000, width=924, py_type='app.bsky.embed.defs#aspectRatio'), py_type='app.bsky.embed.images#image'), Image(alt='2. Screenshot of Subdomains of vanilasky.click https://urlscan.io/ip/23.88.96.130', image=BlobRef(mime_type='image/jpeg', size=433690, ref=IpldLink(link='bafkreifypeehhifc3oempo6fhshoz5oxcn23b3f6s4crsrhjwqva7pyaiu'), py_type='blob'), aspect_ratio=AspectRatio(height=2000, width=1123, py_type='app.bsky.embed.defs#aspectRatio'), py_type='app.bsky.embed.images#image'), Image(alt='3. Screenshot of Subdomains of vanilasky.click https://urlscan.io/ip/23.88.96.130', image=BlobRef(mime_type='image/jpeg', size=967691, ref=IpldLink(link='bafkreidxkvbn2hommoysajecddvcna2ggfzw2p46fdnqrw6jxrvgf2ow7a'), py_type='blob'), aspect_ratio=AspectRatio(height=2000, width=989, py_type='app.bsky.embed.defs#aspectRatio'), py_type='app.bsky.embed.images#image'), Image(alt='4. Screenshot of Subdomains of vanilasky.click https://urlscan.io/ip/23.88.96.130, zusätzlicher Hinweis: „Attention: These domains and hostnames were discovered through Certificate Transparency (CT)\nLogs and have been irrevocably published as part of the public record. There is no mechanism for us or anyone else to remove this information from the internet“', image=BlobRef(mime_type='image/jpeg', size=394934, ref=IpldLink(link='bafkreidr34ie4tgjx6rq5tfddkdzxt5rf3gp5r2dio73umcra3bmmn6w4a'), py_type='blob'), aspect_ratio=AspectRatio(height=2000, width=997, py_type='app.bsky.embed.defs#aspectRatio'), py_type='app.bsky.embed.images#image')] py_type='app.bsky.embed.images'",0.0008308747783303261
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T09:33:41.048Z,"3/ The 9 remaining accounts stopped posting shortly after my initial thread and have not posted since. Until then, these 9 made 182 posts: bsky.app/profile/badl...
This network was easy to find due to the common URL. However, it is likely not the only attempt to build a German speaking AI-network.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcrvssswzs2h,bafyreian3sev3qun7opo7ktedozjckf7vv5jl3rcw6ouc5g2vwrxqy4lry,16,2,2,0,en,"record=Main(cid='bafyreif6azzshs5smbtrbzztfqexbzjwaqpvtqtgexh522zz6hhisgib4e', uri='at://did:plc:7syfakzcriq44mwbdbc7jwvn/app.bsky.feed.post/3lcqvua2erk2k', py_type='com.atproto.repo.strongRef') py_type='app.bsky.embed.record'",0.002489847131073475
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T09:33:41.047Z,"2/ This is less than it seemed, based on how the replies to these news articles were dominated by the network (now often called vanillasky network).
However, the network was likely still being developed.
The oldest account first posted 4 days ago, while approx. half started posting 2 days ago.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcrvsssw2k2h,bafyreiaboamt2l46icqjgbn6eewzv7scuei2zc7v7pl7xj4w3yblkj37fe,10,1,1,0,en,,0.0021178426686674356
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T09:33:41.046Z,"Yesterdays thread on the discovery of an AI bot network gained quite some traction. Since then, ppl. found out more about the network.
1/ @badlogic.bsky.social and other's found that the bots are hosted through the same domain, which now has a total of only 19 bots. 10 of which are blocked by Bsky.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcrvss7qrk2h,bafyreiddubek5uu42uwyq5zyl4c2j3ia4oiusg7le2c3wkkuvf4tdxb6cq,48,5,26,3,en,"record=Main(cid='bafyreihvqfupoungdzwnmmohobdgkjfabanyscbumfislm2a4yraujrb7y', uri='at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcpc4ztcmk2n', py_type='com.atproto.repo.strongRef') py_type='app.bsky.embed.record'",0.001831565983593464
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T08:45:32.311Z,"Hi Robert, ich hatte selber auch nicht mit so viel Aufmerksamkeit für den post gerechnet und kann deine Verunsicherung daher verstehen.
Falls noch zweifel bestehen, gerne über meine Arbeits/Uni-E-Mail Kontakt suchen (kann via Google gefunden werden).",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcrt4pckis2h,bafyreievulfuirze6ckdb3devxz3deqzzdsqn5s62ax33b7x7ddh4cd4vu,1,1,0,0,de,,0.0009039518190547824
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-08T08:27:41.727Z,"The accounts were less just a few hours/days old. Roughly half have been deleted by now - so it seems BlueSky is doing a good job!
They might still rely on us for reporting suspicious activities though.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcrs4scvdk2v,bafyreic7kkgcwuznbzcg54ybjeqnlpmzits43kipxw4j5aosxitzc4q2oe,1,0,0,0,en,,0.0322367325425148
badlogic.bsky.social,Mario Zechner,did:plc:7syfakzcriq44mwbdbc7jwvn,2024-12-08T00:01:49.366Z,"And just to quantify the OPs claim that Bluesky is being flooded with German speaking bots.
This tiny network hat 19 bots, which posted a total of 182 posts (at least the 10 bots that are still active).
That's not quite a flood. Pretty sure as the elections come closer, we'll se more activity tho.",at://did:plc:7syfakzcriq44mwbdbc7jwvn/app.bsky.feed.post/3lcqvua2erk2k,bafyreif6azzshs5smbtrbzztfqexbzjwaqpvtqtgexh522zz6hhisgib4e,34,4,6,2,en,,0.06593639403581619
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-07T23:27:01.593Z,"Die bots aus dem thread haben mit niemandem interagiert.
Rein technisch dürfte das aber Möglich sein. Fliegt aber ggf. schneller auf, wenn die Antworten weniger Sinn machen.
Das Hauptproblem ist, das die mit der Zeit besser werden könnten.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcqtvyymwk2z,bafyreibcdpjhtaoascodneiudlg475h55sfv4zdanfxw5ddgxoao7lpot4,2,1,0,0,de,,0.0004682602302636951
badlogic.bsky.social,Mario Zechner,did:plc:7syfakzcriq44mwbdbc7jwvn,2024-12-07T22:58:16.377Z,"In other bot news, these bots are on their on ""Personal Data Server"", which is still running.
There are a total of 19 accounts on that server. Only 9 of them have been suspended. Curious why @support.bsky.team hasn't defederated with that PDS entirely?",at://did:plc:7syfakzcriq44mwbdbc7jwvn/app.bsky.feed.post/3lcqsclpgjc2k,bafyreids4kowumiuw3huczo6l4ld2yob6fuqxw4ap3rkxgh63ahzz3g4ne,34,3,14,4,en,"media=Main(images=[Image(alt='Fetched repo page (0 repos so far)\nFetched repo page (19 repos so far)\nFound 19 total accounts\nProcessing account 1/19: did:plc:mebbh6ivwisak2wmyhdupner\nHandle: marcoweber91.vanillasky.click\nName: Marco Weber\nDescription: 🏕️ Outdoor-Fan | 🎮 Gamer | 💻 Technik-Nerd | Immer bereit für neue Herausforderungen!\nPosts: 26\nProcessing account 2/19: did:plc:mgvycnjdf7ondai6ubsrcesy\nFailed to fetch profile for did:plc:mgvycnjdf7ondai6ubsrcesy: Error: Account has been suspended\nError fetching posts for did:plc:mgvycnjdf7ondai6ubsrcesy: Error: Profile not found\nProcessing account 3/19: did:plc:rp2pzlwtsxzjddbuqy2bbjd5\nFailed to fetch profile for did:plc:rp2pzlwtsxzjddbuqy2bbjd5: Error: Account has been suspended\nError fetching posts for did:plc:rp2pzlwtsxzjddbuqy2bbjd5: Error: Profile not found\nProcessing account 4/19: did:plc:ahfgjz3ymeypkswqd42pulsl\nHandle: julianschneider87.vanillasky.click\nName: Julian Schneider\nDescription: 🌌 Sternenbeobachter | 🚀 Weltraumfan | 📷 Fotograf aus Leidenschaft | Auf der Suche nach neuen Horizonten!\nPosts: 41\nProcessing account 5/19: did:plc:ktzihqnjlc7hw2krl4oygcd3\nFailed to fetch profile for did:plc:ktzihqnjlc7hw2krl4oygcd3: Error: Account has been suspended\nError fetching posts for did:plc:ktzihqnjlc7hw2krl4oygcd3: Error: Profile not found\nProcessing account 6/19: did:plc:2fswymc5t3nl3roo5drhstfa\nFailed to fetch profile for did:plc:2fswymc5t3nl3roo5drhstfa: Error: Account has been suspended\nError fetching posts for did:plc:2fswymc5t3nl3roo5drhstfa: Error: Profile not found\nProcessing account 7/19: did:plc:qx2ktdu6ynfsrblggjf56v6n\nFailed to fetch profile for did:plc:qx2ktdu6ynfsrblggjf56v6n: Error: Account has been suspended\nError fetching posts for did:plc:qx2ktdu6ynfsrblggjf56v6n: Error: Profile not found\n', image=BlobRef(mime_type='image/jpeg', size=677432, ref=IpldLink(link='bafkreiaddfmvk6c6t52c6dw36vvqc5nano6fu5jvdkhfc3jhgsebl3agtq'), py_type='blob'), aspect_ratio=AspectRatio(height=1842, width=1846, py_type='app.bsky.embed.defs#aspectRatio'), py_type='app.bsky.embed.images#image'), Image(alt='Processing account 12/19: did:plc:qq73sngfhgrmy3umvpd34o4f\nHandle: janinabecker89.vanillasky.click\nName: Janina Becker\nDescription: 🏞️ Naturfanatikerin | 📸 Fotografie-Enthusiastin | 🍷 Weinkennerin | Auf der Suche nach dem perfekten Moment!\nPosts: 10\nProcessing account 13/19: did:plc:b4by5mbdqwfiekw4aeub34vf\nFailed to fetch profile for did:plc:b4by5mbdqwfiekw4aeub34vf: Error: Account has been suspended\nError fetching posts for did:plc:b4by5mbdqwfiekw4aeub34vf: Error: Profile not found\nProcessing account 14/19: did:plc:a7nv6d5rshdclidvpfy5jtem\nHandle: felixneumann89.vanillasky.click\nName: Felix Neumann\nDescription: 🏞️ Naturentdecker | 🎥 Filmfan | 🍳 Kochliebhaber | Immer auf der Jagd nach neuen Geschmackserlebnissen!\nPosts: 8\nProcessing account 15/19: did:plc:i3lnumxsw7owut3cuczj5kw4\nHandle: leonardfischer86.vanillasky.click\nName: Leonard Fischer\nDescription: 🌌 Sternengucker | 🎥 Filmliebhaber | 🎻 Musikenthusiast | Auf der Suche nach Inspiration in jedem Moment!\nPosts: 12\nProcessing account 16/19: did:plc:ncugmc25d3ttozdgad5wubrx\nHandle: felixkonig86.vanillasky.click\nName: Felix König\nDescription: 🎥 Filmfanatiker | 🌍 Weltenbummler | 🍕 Pizza-Liebhaber | Immer auf der Suche nach der nächsten großen Story!\nPosts: 6\nProcessing account 17/19: did:plc:wzylfjeicx4gwc5ue5ysntef\nHandle: felixwagner87.vanillasky.click\nName: Felix Wagner\nDescription: 🎨 Kreativer Kopf | 📸 Fotografie-Enthusiast | 🌍 Weltenbummler | Lebe jeden Tag als wäre es der letzte!\nPosts: 9\nProcessing account 18/19: did:plc:3ptrtsc6gzueasouc6m2y2w7\nFailed to fetch profile for did:plc:3ptrtsc6gzueasouc6m2y2w7: Error: Account has been suspended\nError fetching posts for did:plc:3ptrtsc6gzueasouc6m2y2w7: Error: Profile not found\nProcessing account 19/19: did:plc:nxiafx6e54lk3mu6smcwevvv\nFailed to fetch profile for did:plc:nxiafx6e54lk3mu6smcwevvv: Error: Account has been suspended\nError fetching posts for did:plc:nxiafx6e54lk3mu6smcwevvv: Error: Profile not found', image=BlobRef(mime_type='image/jpeg', size=512761, ref=IpldLink(link='bafkreig5hc43tue4rcdjjbylbiyhf3lhn67pyodx45rsryfgsvd3ccx454'), py_type='blob'), aspect_ratio=AspectRatio(height=458, width=1776, py_type='app.bsky.embed.defs#aspectRatio'), py_type='app.bsky.embed.images#image')], py_type='app.bsky.embed.images') record=Main(record=Main(cid='bafyreihvqfupoungdzwnmmohobdgkjfabanyscbumfislm2a4yraujrb7y', uri='at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcpc4ztcmk2n', py_type='com.atproto.repo.strongRef'), py_type='app.bsky.embed.record') py_type='app.bsky.embed.recordWithMedia'",0.009797980077564716
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-07T19:26:38.798Z,"Die sind alle über eine eigene Bluesky-Instanz registriert. Bluesky ist dezentral aufgebaut, so das man seinen Provider selbst auswählen kann. In diesem Fall wird das wohl genutzt um z.b. E-Mail-Verifizierungen zu umgehen. Oder andere Sicherheitsmaßnahmen.",at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcqgi6du6s26,bafyreieqb7cngmfgxpbgr45d5uizgk6ljvpj7zxggpepbjthcuhlwnfr2u,6,1,0,0,en,,0.0004913366865366697
lion-c.bsky.social,Lion Cassens,did:plc:2fitdmiaotn22kbwgox4v7hc,2024-12-07T18:46:37.304Z,The domain also seems fairly new. Registered on 26th November according to www.whatsmydns.net/domain-age?q....,at://did:plc:2fitdmiaotn22kbwgox4v7hc/app.bsky.feed.post/3lcqeam42a22e,bafyreiakxiavezgsgmjdpmwzdh5enzc6xixec7tzf4y3hlaudar7s475oa,3,0,0,0,en,,0.013075300492346287
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment