ChatGPT im Dialog mit Selenium
Wer ChatGPT schon länger nutzt, kennt wahrscheinlich das Lupensymbol, mit dem man alle eigenen Chats nach Stichworten durchsuchen kann.
Diese Funktion ist sehr nützlich, wenn man sich daran erinnern kann, welche signifikanten Stichworte im Chat vorkamen. Im Gegensatz zu Perplexity untersützt ChatGPT aber derzeit nicht die Bildung von Gruppen.
Im Gegensatz zu Perplexity unterstützt ChatGPT aber derzeit nicht die Bildung von Gruppen. Mit anderen Worten: Es gibt zwar für jeden Chat bei OpenAI eine eindeutige URL, aber die Lupe ist derzeit der einzige Weg, den OpenAI anbietet, um Chats zu filtern. Selbst wenn es schon eine Gruppeneinteilung wie bei Perplexity gäbe, müsste man die Chats manuell auf die Gruppen verteilen. Das gilt auch im Hinblick auf eine große Zahl von GPTs die ihrerseits solch eine Gruppierung als sinnvoll erscheinen lassen.
Wer jedoch programmieren kann – oder über ChatGPT programmieren lässt, kann einen weiteren Weg beschreiten: Die Seitenleiste von ChatGPT komplett auslesen und so alle URLs mit den Überschriften sammeln und in einer CSV-Datei ablegen. Wobei die entstandene CSV-Datei mit URL-Spalte wiederum Grundlage für eine kleine ChatGPT-GUI ist, mit der man den Browser ansteuert.
Die Python-Quelltexte zum Auslesen der ChatGPT-Seitenleiste sind im Downloadbereich zum Buch
„ChatGPT, OpenAI und der blaue Planet“ abgelegt. Aber zunächst ein paar Vorüberlegungen und Fallunterscheidungen:
- Ist das automatische Auslesen und die Nutzung von Webseiteninhalten legal?
- Mit welcher Software können Webseiteninhalte automatisch ausgelesen werden?
- Stellen CAPTCHA-Abfragen ein Problem dar?
- Wie muss ein Internet-Browser gestartet werden, um danach automatisch abzutasten?
Programme, die Webseiten abtasten, bezeichnet man als WebScraper oder WebCrawler. Derartige Bots können in der Absicht programmiert worden sein, Sicherheitslücken der untersuchten Webseite zu detektieren. Was nun einer Gefahrenabwehr oder einem Hackerangriff dienen kann. Wer seine eigene Webseite abtastet, oder die eigenen Chats ausliest, handelt aber sicher nicht illegal.
In der nachfolgenden Beschreibung wird das Tool Selenium innerhalb von Python Code benutzt.
Damit CAPTCHA-Abfragen nicht zum Problem werden, sollte man schon vor der Abtastung bei OpenAI (bzw. ChatGPT) eingeloggt sein. Es sollte aber kein Browser-Fenster offen sein, denn der Browser wird idealerweise durch ein Skript gestartet und zwar im Debug-Modus auf Port 9222.
Was uns natürlich auch ChatGPT erklären kann:
[ChatGPT-4o] Welchen Nutzen hat Port 9222 ?
…..Tools wie Puppeteer, Selenium, oder Playwright nutzen diesen Port für Browsersteuerung.
Wer Spaß daran hat, kann jeden der vorherigen Aufzählungspunkte an ChatGPT, Perplexity, Claude oder einen anderen Chatbot zur Beantwortung weiterleiten. Und dieser Blogbeitrag beruht ganz wesentlich auch auf solchen Recherchen.
Der Sprung in die Praxis beginnt mit einem Blick auf die Seitenleiste von ChatGPT, die die Titel der Chats chronologisch in zeitlich sortierte Gruppen aufteilt:

Erst wenn man den Scrollbar der Seitenleiste nach unten bewegt, werden blockweise auch ältere Chats angezeigt. Die komplette Durchsicht von z.B. 500 vorhandenen Chats kann damit schon ein paar Sekunden dauern. Und wer kein Abo bei OpenAI hat, liegt bei 500 Chats locker über 30 Sekunden. Und auch der Python-Code, der Selenium nutzt, muss auf solche Wartezeiten Rücksicht nehmen! Das Ziel ist nun die Generierung einer CSV-Datei mit den Bezeichnungen für alle Chats nach folgendem Muster:
URL;Titel;Gruppe
https://chatgpt.com/c/56789c-3456;Port 9222 nutzen;0001_heute
https://chatgpt.com/c/45678b-2345;Python lernen;0002_gestern
https://chatgpt.com/c/34567a-1234;ChatGPT Planet;0500_2023
Solch eine 3-spaltige CSV-Datei mit Kommata als Trennzeichen dient dazu, ohne jede Wartezeit z.B. 500 Chatbezeichnungen verfügbar zu haben, und über die URL einen Browser ansteuern zu können. Und da man solch eine CSV-Datei nicht täglich neu erstellt, sollten Wartezeiten beim Auslesen der ChatGPT-Oberfläche kein Problem sein. In der URL kann übrigens auch das verwendete GPT stehen, was durch eine später automatisch erzeugte weitere Tabellenspalte zum Sortierkriterium werden kann. Und so entsteht eine automatische Sortierung von Chats nach dem verwendeten GPT. Aber so weit sind wir noch nicht, denn am Anfang steht der Start des Browsers auf Port 9222:
Eine Batch-Datei start-edge.bat für Windows-Systeme sieht so aus:
„C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe“ — remote-debugging-port=9222 https://chatgpt.com/
Eine genauere Beschreibung ist im Downloadbereich zum Buch abgelegt und bezieht sich auf folgendes entpacktes Unterverzeichnis:

Auf Windows Systemen werden über scraper.bat lokale Profile für Edge oder Chrome angelegt. Danach wird der gewünschte Browser auf Port 9222 gestartet. Es ist wichtig dort den Login für ChatGPT vorzunehmen. Für nachfolgende Schritte wird so die CAPTCHA-Abfrage vermieden.
Das Skript scraper.bat startet nachfolgend abtaster.py um die Seitenleiste abzutasten und chatgpt_chats.csv zu erzeugen.
Sobald eine gültige 3-spaltige CSV-Datei erzeugt ist, kann diese CSV-Datei über webviewer.py angezeigt werden. Exemlparisch können in der URL-Spalte der CSV-Datei beliebige Webseiten eingetragen werden. Die PyQt5 Oberfläche von webviewer.py sieht so aus:

Das jeweils verwendete GPT wird aus der URL extrahiert und in der letzten Spalte „URL-Key“ angezeigt. Die Spalte Gruppe entspricht der zeitlichen Einteilung von ChatGPT. Im Suchfeld eingegebene Begriffe betreffen derzeit allerdings nur den Titel und nicht den Volltext des Chats. Ein Doppelklick auf die gewünschte Zeile zeigt die URL innerhalb der ChatGPT-Oberfläche an.
Dipl.-Ing. Harald Schmidt arbeitet als Software-Entwickler und Fachbuchautor. Er hat sich auf Bildverarbeitung und Mustererkennung spezialisiert und verfügt über mehr als 30 Jahren Erfahrung.