Steamworks-Dokumentation
ICheatReportingService-Schnittstelle
Dieser Dienst ermöglicht es Ihrem Spiel, Betrug (Cheating) und Betrüger über das VAC-System zu melden, und stellt die Werkzeuge des Spielausschlüsse-Systems bereit. Sie können zwei unabhängige Arbeitsabläufe verwenden, um Betrug in Ihrem Spiel zu verfolgen und zu verwalten:
  • Mit diesen Informationen können Sie Betrugsmeldungen von der Community sammeln und Ausschlüsse/Sperren beantragen.
  • Reichen Sie detaillierte Informationen zu bekannten Cheatsoftwares in das VAC-System ein. Sobald diese Informationen erfasst sind, werden bekannte Betrugsarten (Cheats) automatisch erkannt und deren Anwender ausgeschlossen.

Um diese Schnittstelle verwenden zu können, müssen Sie sich zunächst für den VAC-Support anmelden. VAC kann über die Anwendungsverwaltung auf der Seite Anti-Cheat-Konfiguration aktiviert werden.

HINWEIS: Dies ist eine Service-Schnittstelle; Methoden in dieser Schnittstelle sollten mit dem Parameter input_json aufgerufen werden.

Für weitere Informationen zur Verwendung der Steamworks-Web-API lesen Sie bitte den Dokumentationsartikel Web-API – Übersicht.

ReportPlayerCheating

POST https://partner.steam-api.com/ICheatReportingService/ReportPlayerCheating/v1/
NameTypErforderlich?Beschreibung
keystringPublisher-Authentifizierungsschlüssel der Steamworks-Web-API.
steamiduint64Die Steam-ID des wegen Betrugs gemeldeten Benutzers.
appiduint32Die App-ID des Spiels.
steamidreporteruint64(Optional) Die Steam-ID des Benutzers oder des Spielservers, der den Betrug meldet.
appdatauint64(Optional) Anwendungsspezifische Daten zur Art des Betrugs; vom Entwickler festgelegt. (Bsp. 1 = Aimbot, 2 = Wallhack, 3 = Griefing)
heuristicbool(Optional) Zusatzinformation über die Quelle des Cheatens: War es Heuristik?
detectionbool(Optional) Zusatzinformation über die Quelle des Cheatens: War es Detektion?
playerreportbool(Optional) Zusatzinformation über die Quelle des Cheatens: War es eine Spielermeldung?
noreportidbool(Optional) Keine Meldungs-ID zurückgeben. Dies sollte nur dann übergeben werden, wenn Sie nicht beabsichtigen, auf der Grundlage dieser Meldung eine Sperre zu verhängen.
gamemodeuint32(Optional) Zusatzinformation über den Status des Spiels: Handelte es sich um ein bestimmtes Spielgeschehen oder einen bestimmten Spielmodus? (0 = Allgemein)
suspicionstarttimeuint32(Optional) Zusätzliche Informationen darüber, wann das Spiel vermutet, dass der entsprechende Spieler in der Vergangenheit eine betrügerische Handlung durchgeführt hat. Unixzeit (Zeit seit 1. Jan. 1970).
severityuint32(Optional) Schweregrad der gemeldeten betrügerischen Handlung. Wird vom Entwickler festgelegt.

ReportPlayerCheating wurde entwickelt, um Meldungen von Betrug durch die Community zu sammeln; Spieler haben also die Möglichkeit andere Spieler im Spiel zu melden.

Es ist für unzuverlässige Angaben von Nutzern im Spiel vorgesehen (halb vertrauenswürdige Quellen). Das Backend, das die Angaben meldet, sollte sicherstellen, dass beide Parteien authentifiziert werden, aber die Angaben selbst werden als Vermutungen behandelt. Es können optionale Parameter verwendet werden, um die Art des vermuteten Betrugs oder zusätzliche Beweise zu codieren (ein Bezeichner, der zur weiteren Prüfung auf die Partie/die Demo verweist).

HINWEIS: Dieser Aufruf erfordert zur Verwendung dieser Methode einen Publisher-API-Schlüssel. Daher MUSS diese API von einem gesicherten Server aufgerufen werden und kann nie direkt von Clients verwendet werden!

RequestPlayerGameBan

POST https://partner.steam-api.com/ICheatReportingService/RequestPlayerGameBan/v1/
NameTypErforderlich?Beschreibung
keystringPublisher-Authentifizierungsschlüssel der Steamworks-Web-API.
steamiduint64Die Steam-ID des wegen Betrugs gemeldeten Benutzers.
appiduint32Die App-ID des Spiels.
reportiduint64Die ursprünglich zur Betrugsmeldung verwendete Meldungs-ID.
cheatdescriptionstringBeschreibung des Betrugsverhaltens.
durationuint32Beantragte Ausschlussdauer in Sekunden. (Dauer 0 erteilt diese unbegrenzt – bei weniger als einem Jahr handelt es sich um eine Sperre, die nicht im Profil angezeigt wird.)
delaybanboolVerzögerung der Sperre gemäß den Standardregeln für die Verzögerung von Sperren.
flagsuint32Zusätzliche Informationen über die Sperranfrage. (Nicht verwendet)

Fordert eine Spielsperre für einen bestimmten Spieler an.

Dies soll verwendet werden, nachdem die Fälle von ReportPlayerCheating geprüft wurden und Cheaten bestätigt wurde.

HINWEIS: Dieser Aufruf erfordert zur Verwendung dieser Methode einen Publisher-API-Schlüssel. Daher MUSS diese API von einem gesicherten Server aufgerufen werden und kann nie direkt von Clients verwendet werden!

RemovePlayerGameBan

POST https://partner.steam-api.com/ICheatReportingService/RemovePlayerGameBan/v1/
NameTypErforderlich?Beschreibung
keystringPublisher-Authentifizierungsschlüssel der Steamworks-Web-API.
steamiduint64Die Steam-ID des Benutzers, dessen Spielsperre entfernt werden soll.
appiduint32Die App-ID des Spiels.

Entfernen Sie die Spielsperre eines Spielers.

Dies wird verwendet, wenn eine Spielsperre für falsch befunden wird.

HINWEIS: Dieser Aufruf erfordert zur Verwendung dieser Methode einen Publisher-API-Schlüssel. Daher MUSS diese API von einem gesicherten Server aufgerufen werden und kann nie direkt von Clients verwendet werden!

GetCheatingReports

GET https://partner.steam-api.com/ICheatReportingService/GetCheatingReports/v1/
NameTypErforderlich?Beschreibung
keystringPublisher-Authentifizierungsschlüssel der Steamworks-Web-API.
appiduint32Die App-ID des Spiels.
timeenduint32Das Ende des Zeitrahmens. Als Unixzeit (Zeit seit 1. Jan. 1970) formatiert.
timebeginuint32Der Beginn des Zeitrahmens. Als Unixzeit (Zeit seit 1. Jan. 1970) formatiert.
reportidminuint64Minimale Meldungs-ID, die beigefügt werden muss. (kann 0 überschreiten – Ende der vorherigen Meldungsspanne)
includereportsbool(Optional) Meldungen beifügen. Bei „false“ muss „includebans“ den Wert „true“ haben.
includebansbool(Optional) Ausschlussantrag beifügen? Bei „false“ muss „includereports“ den Wert „true“ haben.
steamiduint64(Optional) Nur für diese Steam-ID abfragen.

Ruft eine Liste von für diese App eingereichten Cheatmeldungen ab.

Wird zum Sammeln der Cheatmeldungen verwendet, damit diese geprüft werden können und ein Beschluss gefasst werden kann.

HINWEIS: Dieser Aufruf erfordert zur Verwendung der Methode einen Publisher-API-Schlüssel. Daher MUSS diese API von einem gesicherten Server aufgerufen werden und kann nie direkt von Clients verwendet werden!

ReportCheatData

POST https://api.steampowered.com/ICheatReportingService/ReportCheatData/v1/
NameTypErforderlich?Beschreibung
keystringBenutzer-Authentifizierungsschlüssel der Steamworks-Web-API.
steamiduint64Steam-ID des Benutzers, der den Cheat meldet.
appiduint32Die App-ID des Spiels.
pathandfilenamestringPfad- und Dateiname der ausführbaren betrügerischen Anwendung.
webcheaturlstringInternet-URL, auf der der Cheat gefunden und heruntergeladen wurde.
time_nowuint64Aktuelle lokale Systemzeit. Systemzeit von 64-Bit-Windows.
time_starteduint64Lokale Systemzeit, zu der der Cheatprozess gestartet wurde. (0, falls noch nicht gestartet) Systemzeit von 64-Bit-Windows.
time_stoppeduint64Lokale Systemzeit, zu der der Cheatprozess gestoppt wurde. (0, falls noch am Laufen) Systemzeit von 64-Bit-Windows.
cheatnamestringNamensbeschreibung des Cheats.
game_process_iduint32Prozess-ID des laufenden Spiels.
cheat_process_iduint32Prozess-ID des ausgeführten Betrugsprozessesses.
cheat_param_1uint64Zusatzdaten zum Cheat.
cheat_param_2uint64Zusatzdaten zum Cheat.

Meldet Cheat-Daten. Nur bei einem Test-Account verwenden, der das Spiel ausführt, aber nicht in einer Mehrspielersitzung.

Dies dient zum Melden bestimmter Cheats beim VAC-System. Dabei werden der Cheat und das Spiel ausgeführt und anschließend diese Web-API aufgerufen.
HINWEIS: Aus diesem Grund sollten Sie nur einen Test-Account auf einem Computer außerhalb Ihres Netzwerks verwenden. Für diesen Test-Account darf kein Partner-Web-API-Schlüssel verwendet werden. Verwenden Sie stattdessen einen von http://steamcommunity.com/developer erhaltenen Standard-Web-API-Schlüssel. Nach Aufruf dieser Funktion sollte das System mindestens eine halbe Stunde lang nicht verwendet werden, damit VAC es vollständig scannen kann. Der Test-Account wird gekennzeichnet und darf sich in Zukunft nicht mehr für Mehrspielerspiele authentifizieren. Stellen Sie daher sicher, immer einen Test-Account zu verwenden, der nur zur Meldung von Betrug dient.

Wenn der Aufruf keinen Erfolg meldet, wurde die Cheatmeldung ignoriert.

Aufrufbeispiel:
# Erfordert Python 2.7 import sys, os, time if sys.version_info >= ( 2, 7 ): # argparse importieren print "Python 2.7 oder höher wurde gefunden." else: print "Es muss Python 2.7 oder höher verwenden." exit() import urllib import urllib2 import json g_mapUniverseToWebapiServer = { 'public' : { 'host' : 'api.steampowered.com', 'port_http' : 80, 'port_https' : 443, }, } g_bReadied = False # webapi-Anforderungen vorbereiten def readyAPIRequest( universe ): global g_bReadied # Wenn ein Proxy benötigt wird, kann es hier aktiviert werden. # VORSICHT: Es wird nicht empfohlen, dies innerhalb Ihrer LAN zu verwenden, # da es bedeuten würde, dass Sie innerhalb Ihrer LAN Cheats verwenden. proxyneeded = 0 if proxyneeded == 1: urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( {"http":"http://proxy.valvesoftware.com:80"} ) ) ) else: urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler({}) ) ) g_bReadied = True # webapi anfordern – es wird aktuell angenommen, dass die Antwort JSON ist. # # Folgendes muss wiedergegeben werden: # universe – String # interface – welche Schnittstelle gerufen wird # request – der Methodenname # # Optionale Parameter # method – GET oder PUT # protocol – http oder https # version – Standardmäßig 0001 # timeout – Standardmäßig 120 # # Andere gelieferte Schlüsselwortargumente werden als Parameter an webapi übergeben; z. B. zur Verwendung # eines webapi-Schlüssels, „key=0123456“. def issueWebAPIRequest( universe=None, interface=None, request=None, method='GET', protocol='http', version='0001', timeout=120, **kwargs ): if not universe or not request or not interface: raise NameError( 'Benötigt: universe, interface, und request' ) if not g_bReadied: raise RuntimeError( 'Rufen Sie als Erstes readyAPIRequest auf, um sicherzustellen, dass der Proxy gesetzt ist.' ) entry = g_mapUniverseToWebapiServer[] server = entry[] port = entry[] url = '%s://%s:%s/%s/%s/v%s/' % ( protocol, server, port, interface, request, version ) if method == 'GET': sep = '?' for kw in kwargs: url = url + sep + kw + '=' + str( kwargs[] ) sep = '&' rf = urllib2.urlopen( url, timeout=timeout ) else: rf = urllib2.urlopen( url, urllib.urlencode( kwargs ), timeout=timeout ) return json.load( rf ) def sendcheatreport(): readyAPIRequest( 'public' ) print "Die aktuelle Zeit ist ",int(time.time()) # Mit Standardeingaben füllen. # Die Steam-ID sollte die Form 7XXXXXXXXXXXXXXX haben. steamid = 0 # Der Schlüssel sollte ein Hexadezimal-String sein. key = '' # Ihre App-ID eingeben. gameappid = 0 # Variablen initialisieren. cheatprocid = 0 timecheatran = 0 cheatterminated = 0 timecheatstopped = 0 if steamid == 0: steamid = raw_input( 'Steam-ID eingeben: ' ) if not key: key = raw_input( 'Web-API-Schlüssel eingeben: ' ) if gameappid == 0: gameappid = raw_input( 'Spiel-App-ID eingeben: ' ) cheatnamestring = raw_input( 'Beschreibenden Betrugsnamen eingeben: ' ) cheatpathstring = raw_input( 'Vollen Pfad der Cheatdatei eingeben: ' ) webcheaturlstring = raw_input( 'Volle URL zur Cheat-Downloadseite eingeben (optional): ' ) cheatfiletype = int(raw_input( '1 eingeben, wenn .EXE, oder 2 eingeben, wenn anderer Dateityp: ' )) if cheatfiletype == 1: cheatprocid = raw_input( 'Betrugsprozess-ID eingeben (0 eingeben, wenn gestoppt oder unsicher): ' ) timecheatran = int(time.time()) cheatterminated = int(raw_input( '1 eingeben, wenn Cheat noch immer läuft, oder 0 eingeben, wenn gestoppt: ' )) timecheatstopped = int(time.time()) if cheatterminated == 1: timecheatstopped = 0 gameprocid = raw_input( 'Spiel-Prozess-ID eingeben: ' ) print "sending webapi data now " print "steamid: ", steamid print "key: ", key print "gameappid: ", gameappid print "cheatnamestring: ", cheatnamestring print "cheatpathstring: ", cheatpathstring print "webcheaturlstring: ", webcheaturlstring print "cheatprocid: ", cheatprocid print "timecheatran: ", timecheatran print "timecheatstopped: ", timecheatstopped print "gameprocid: ", gameprocid # Zum Start bereit! results = issueWebAPIRequest( universe='public', interface='icheatreportingservice', request='reportcheatdata', key=key, protocol='https', method='POST', cheatname=cheatnamestring, appid=gameappid, game_process_id=gameprocid, cheat_process_id=cheatprocid, pathandfilename=cheatpathstring, webcheaturl=webcheaturlstring, time_now=int(time.time()), time_started=timecheatran, time_stopped=timecheatstopped, steamid=steamid ) print "Web-API-Ergebnisse:", results # clean up def main(): sendcheatreport() if __name__ == '__main__': main()

RequestVacStatusForUser

POST https://partner.steam-api.com/ICheatReportingService/RequestVacStatusForUser/v1/
NameTypErforderlich?Beschreibung
keystringPublisher-Authentifizierungsschlüssel der Steamworks-Web-API.
steamiduint64Die Steam-ID des Benutzers.
appiduint32Die App-ID des Spiels, das der Benutzer spielt.
session_iduint64Die Sitzungs-ID, die durch den Aufruf von StartSecureMultiplayerSession abgerufen wurde.

Überprüft den VAC-Ausschlussstatus eines Benutzers und verifiziert den VAC-Sitzungsstatus eines Benutzers. Wenn die Verifizierung fehlschlägt, gestatten Sie dem Benutzer nicht in an einem gesicherten Spiel teilzunehmen.

Dies wird verwendet, bevor ein Benutzer der Spielsuche oder einem Spiel beitritt. Wenn der Spieler auf irgendeine Weise VAC blockiert und VAC den Computer nicht nach Cheats durchsuchen kann, wird Erfolg = „true“ und session_verified = „false“ gemeldet. Das Überprüfen dieser Web-API ermöglicht Ihnen, zu verhindern, dass der Benutzer ins Spielsuche gelangt oder einem Server beitritt, um kurze Zeit später durch VAC hinausgeworfen zu werden (mit einem k_EAuthSessionResponseVACCheckTimedOut-Ergebnis einer Authentifizierungsrückruffunktion). Das VAC-System hatte u. U. nicht immer Zeit, gründlich zu untersuchen, ob das System des Clients kooperiert, und gibt in diesem Fall für den Erfolg das Ergebnis „false“ zurück. Es ist auch möglich, dass das Spielersystem die anfängliche Prüfung besteht, aber später nicht antwortet; in diesem Fall ist die Überprüfung erfolgreich, kann aber später ein k_EAuthSessionResponseVACCheckTimedOut zurückgeben.


HINWEIS: Dieser Aufruf erfordert zur Verwendung der Methode einen Publisher-API-Schlüssel. Daher MUSS diese API von einem gesicherten Server aufgerufen werden und kann nie direkt von Clients verwendet werden!

Web-API-Sitzungen

HINWEIS: Spiele, die die Steam-Authentifizierung integriert haben, sollten die folgenden API-Aufrufe nicht verwenden. Diese Spiele sollten stattdessen die Einrichtung der ISteamUser-Schnittstelle für P2P- oder Spielserver verwenden. Zugriff auf den folgenden Satz von Aufrufen muss manuell von Valve aktiviert werden und kann nur von Spielen verwendet werden, die die Benutzerauthentifizierung vollkommen unabhängig von Steam handhaben.

StartSecureMultiplayerSession

POST https://partner.steam-api.com/ICheatReportingService/StartSecureMultiplayerSession/v1/
NameTypErforderlich?Beschreibung
keystringPublisher-Authentifizierungsschlüssel der Steamworks-Web-API.
steamiduint64Die Steam-ID des Benutzers.
appiduint32Die App-ID des Spiels.

Teilt den VAC-Servern mit, dass eine sichere Mehrspielersitzung begonnen hat.

HINWEIS: Dieser Aufruf erfordert zur Verwendung der Methode einen Publisher-API-Schlüssel. Daher MUSS diese API von einem gesicherten Server aufgerufen werden und kann nie direkt von Clients verwendet werden!

EndSecureMultiplayerSession

POST https://partner.steam-api.com/ICheatReportingService/EndSecureMultiplayerSession/v1/
NameTypErforderlich?Beschreibung
keystringPublisher-Authentifizierungsschlüssel der Steamworks-Web-API.
steamiduint64Die Steam-ID des Benutzers.
appiduint32Die App-ID des Spiels.
session_iduint64Die Sitzungs-ID, die durch den Aufruf von StartSecureMultiplayerSession abgerufen wurde.

Teilt den VAC-Servern mit, dass eine sichere Mehrspielersitzung geendet hat.

HINWEIS: Dieser Aufruf erfordert zur Verwendung der Methode einen Publisher-API-Schlüssel. Daher MUSS diese API von einem gesicherten Server aufgerufen werden und kann nie direkt von Clients verwendet werden!

Antwort:
[
{
"name": "success",
"type": "bool",
"description": ""
}
]