API:Bearbeiten
| Diese Seite ist Teil der Dokumentation der MediaWiki action API. |
| MediaWiki Version: | ≥ 1.13 |
POST-Abfrage um eine Seite zu bearbeiten.
API-Dokumentation
Beispiel
Der Beispielcode in diesem Beispiel ist in Python. Siehe API:Edit/Editing with Ajax für Beispiele und Antworten in Ajax.
POST-Anfrage
Bearbeitungen vorzunehmen ist wie jede POST-Abfrage ein mehrstufiger Prozess.
- 1. Anmelden über eine der auf API:Login beschriebenen Methoden. Beachte, dass es zwar wichtig ist, die Bearbeitung dem Autor richtig zuzuordnen, viele Wikis jedoch Benutzern erlauben, ohne Registrierung oder Anmeldung mit einem Konto zu editieren.
- 2. Ein CSRF-Token erhalten:
- 3. Sende eine POST-Abfrage mit dem CSRF-Token, um eine Aktion auf einer Seite vorzunehmen:
Der Antwort-Abschnitt unten ist für die finale POST-Abfrage, um die Aktion auf der Seite auszuführen. Siehe die Seiten auf API:Login und API:Tokens für die JSON-Antworten früherer Schritte.
Beachte auch, dass die Tokens in den Abfragen auf dieser Seite Beispielwerte sind. Tatsächlich sind Tokens für jede Anmeldung und seitenübergreifende Abfrage einzigartig. Sie sind hier nur angegeben, um zu zeigen, welches Format eine korrekte Abfrage hat.
Antwort
{
"edit": {
"result": "Success",
"pageid": 94542,
"title": "Wikipedia:Sandbox",
"contentmodel": "wikitext",
"oldrevid": 371705,
"newrevid": 371707,
"newtimestamp": "2018-12-18T16:59:42Z"
}
}
Beispielcode
Python
#!/usr/bin/python3
"""
edit.py
MediaWiki API Demos
Demo of `Edit` module: POST request to edit a page
MIT license
"""
import requests
S = requests.Session()
URL = "https://test.wikipedia.org/w/api.php"
# Step 1: GET request to fetch login token
PARAMS_0 = {
"action": "query",
"meta": "tokens",
"type": "login",
"format": "json"
}
R = S.get(url=URL, params=PARAMS_0)
DATA = R.json()
LOGIN_TOKEN = DATA['query']['tokens']['logintoken']
# Step 2: POST request to log in. Use of main account for login is not
# supported. Obtain credentials via Special:BotPasswords
# (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
PARAMS_1 = {
"action": "login",
"lgname": "bot_user_name",
"lgpassword": "bot_password",
"lgtoken": LOGIN_TOKEN,
"format": "json"
}
R = S.post(URL, data=PARAMS_1)
# Step 3: GET request to fetch CSRF token
PARAMS_2 = {
"action": "query",
"meta": "tokens",
"format": "json"
}
R = S.get(url=URL, params=PARAMS_2)
DATA = R.json()
CSRF_TOKEN = DATA['query']['tokens']['csrftoken']
# Step 4: POST request to edit a page
PARAMS_3 = {
"action": "edit",
"title": "Project:Sandbox",
"token": CSRF_TOKEN,
"format": "json",
"appendtext": "Hello"
}
R = S.post(URL, data=PARAMS_3)
DATA = R.json()
print(DATA)
PHP
<?php
/*
edit.php
MediaWiki API Demos
Demo of `Edit` module: POST request to edit a page
MIT license
*/
$endPoint = "https://test.wikipedia.org/w/api.php";
$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$csrf_Token = getCSRFToken(); // Step 3
editRequest($csrf_Token); // Step 4
// Step 1: GET request to fetch login token
function getLoginToken() {
global $endPoint;
$params1 = [
"action" => "query",
"meta" => "tokens",
"type" => "login",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params1 );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
return $result["query"]["tokens"]["logintoken"];
}
// Step 2: POST request to log in. Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest( $logintoken ) {
global $endPoint;
$params2 = [
"action" => "login",
"lgname" => "bot_user_name",
"lgpassword" => "bot_password",
"lgtoken" => $logintoken,
"format" => "json"
];
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $endPoint );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
}
// Step 3: GET request to fetch CSRF token
function getCSRFToken() {
global $endPoint;
$params3 = [
"action" => "query",
"meta" => "tokens",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params3 );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
return $result["query"]["tokens"]["csrftoken"];
}
// Step 4: POST request to edit a page
function editRequest( $csrftoken ) {
global $endPoint;
$params4 = [
"action" => "edit",
"title" => "Project:Sandbox",
"appendtext" => "Hello",
"token" => $csrftoken,
"format" => "json"
];
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $endPoint );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
echo ( $output );
}
JavaScript
/*
edit.js
MediaWiki API Demos
Demo of `Edit` module: POST request to edit a page
using OAuth
MIT license
*/
var apiEndpoint = 'https://test.wikipedia.org/w/api.php';
var oauthToken = "OAuth2AccessToken"; // Replace with actual OAuth 2 token
// Helper function
async function performFetch(queryURL, options = {}) {
options.headers = {'Authorization': 'Bearer ' + oauthToken};
const response = await fetch(queryURL, options);
const text = await response.text();
try {
return JSON.parse(text);
} catch (e) {
console.error(e);
return text
}
}
// Step 1: GET request to fetch CSRF token
function getCsrfToken() {
var params_0 = {
action: 'query',
meta: 'tokens',
format: 'json',
formatversion: '2',
crossorigin: ''
};
var queryURL = new URL(apiEndpoint);
queryURL.search = new URLSearchParams(params_0);
performFetch(queryURL, {method: 'GET'})
.then(function(data){
var csrf_token = data?.query?.tokens?.csrftoken;
if (csrf_token) {
editRequest(csrf_token)
} else {
console.error("Error retrieving CSRF token!");
}
});
}
// Step 2: POST request to edit a page
// Action API requires data be posted as application/x-www-form-urlencoded (URLSearchParams)
// or multipart/form-data, rather than application/json (T212988)
function editRequest(csrf_token) {
var params_1 = {
action: 'edit',
title: 'Project:Sandbox',
appendtext: 'test edit',
summary: 'test edit',
format: 'json',
formatversion: '2',
token: csrf_token,
crossorigin: ''
}
var queryURL = new URL(apiEndpoint);
var postBody = new URLSearchParams();
Object.keys(params_1).forEach( key => {
if ( key == 'action' || key == 'origin' || key == 'crossorigin' ) {
queryURL.searchParams.append(key, params_1[key]);
} else {
postBody.append(key, params_1[key]);
}
});
performFetch(queryURL, {method: 'POST', body: postBody})
.then(function(data){
var result = data?.edit?.result;
if (result) {
console.log(result);
} else {
console.error("Error posting edit!");
}
});
}
// Start from Step 1
getCsrfToken();
Node.js
/*
edit.js
MediaWiki API Demos
Demo of `Edit` module: POST request to edit a page
using Bot Passwords
MIT license
*/
var request = require('request').defaults({jar: true}),
url = "https://test.wikipedia.org/w/api.php";
// Step 1: GET request to fetch login token
function getLoginToken() {
var params_0 = {
action: "query",
meta: "tokens",
type: "login",
format: "json"
};
request.get({ url: url, qs: params_0 }, function (error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
loginRequest(data.query.tokens.logintoken);
});
}
// Step 2: POST request to log in.
// Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest(login_token) {
var params_1 = {
action: "login",
lgname: "bot_username",
lgpassword: "bot_password",
lgtoken: login_token,
format: "json"
};
request.post({ url: url, form: params_1 }, function (error, res, body) {
if (error) {
return;
}
getCsrfToken();
});
}
// Step 3: GET request to fetch CSRF token
function getCsrfToken() {
var params_2 = {
action: "query",
meta: "tokens",
format: "json"
};
request.get({ url: url, qs: params_2 }, function(error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
editRequest(data.query.tokens.csrftoken);
});
}
// Step 4: POST request to edit a page
function editRequest(csrf_token) {
var params_3 = {
action: "edit",
title: "Project:Sandbox",
appendtext: "test edit",
token: csrf_token,
format: "json"
};
request.post({ url: url, form: params_3 }, function (error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
MediaWiki JS
/*
edit.js
MediaWiki API Demos
Demo of `Edit` module: POST request to edit a page
MIT License
*/
var params = {
action: 'edit',
title: 'Project:Sandbox',
appendtext: 'Hello',
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
bash (curl)
#!/usr/bin/env bash
# target wiki settings
# get this from Special:BotPassword
export MW_USER=""
export MW_PASS=""
# the url for the target wiki to import pages, end with /
export MW_URL=""
# bot info, to be embeded in the page comments
export BOT_INFO="mwpm"
# source wiki settings
# the source wiki url, for wikitext
export SRC_URL=""
# file list for plain wikitext
FILE="$1"
# $0 <token type>
# mainly csrf and login
function get-token(){
API_URL="api.php"
RESULT=$(curl -fsSL -X POST \
-d action=query \
-d meta=tokens \
-d type="$1" \
-d format=json \
-c cookie.txt \
-b cookie.txt \
"${MW_URL}${API_URL}")
#RESULT=${RESULT/*token\":\"}
#TOKEN=${RESULT%\\\"*}
TOKEN=$(jq -r ".query.tokens[\"${1}token\"]" <<< "$RESULT")
echo "$TOKEN"
}
# $0 <wiki-url> <username> <password>
function mw-login(){
API_URL="api.php"
curl -fsSL -X POST \
--data-urlencode action=login \
-d lgname="$2" \
-d lgpassword="$3" \
--data-urlencode lgtoken=$(get-token login) \
-d format=json \
-c cookie.txt \
-b cookie.txt \
"${1}${API_URL}"
}
# $0 <file> <command>
# every line is in the $trimmed_line variable
function batch-process(){
while IFS= read -r line; do
trimmed_line=$(echo "$line" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
if [[ -z "$trimmed_line" ]]; then
continue
fi
if [[ "$trimmed_line" =~ ^# ]]; then
continue
fi
eval $2
done < "$1"
}
# Check if the file exists
if [[ ! -f "$FILE" ]]; then
echo "Error: File '$FILE' not found."
exit 1
fi
function plain-import(){
page_name="$1"
content_file="$2"
page_content="$(cat $content_file)"
echo "+++ writting page $page_name +++"
API_URL="api.php?action=edit&format=json"
curl -fsSL -X POST \
-d "summary=$BOT_INFO $MW_PREF" \
-d "title=$page_name" \
--data-urlencode "text=${page_content}" \
-d "bot=true" \
--data-urlencode "token=$(get-token csrf)" \
-c cookie.txt \
-b cookie.txt \
"${MW_URL}${API_URL}"
echo
}
# login to $MW_URL
echo "logging into $MW_URL"
mw-login "$MW_URL" "$MW_USER" "$MW_PASS"
echo
if [[ $private_src == "true" ]]; then
echo "logging into $SRC_URL"
mw-login "$SRC_URL" "$SRC_USER" "$SRC_PASS"
echo
fi
SITE_NAME=${SRC_URL%/}
SITE_NAME=${SITE_NAME/https:\/\/}
FILE_NAME=$(basename "$FILE")
export EXPORT_DIR="cache/$SITE_NAME/${FILE_NAME%.txt}"
echo "Processing lines from '$FILE'"
batch-process "$FILE" 'plain-import "$trimmed_line" $EXPORT_DIR/"$trimmed_line".wikitext'
echo "Finished processing."
Benutzerfälle
Bearbeitungskonflikte
Das Python-Beispiel ist eine grundlegende Implementation einer Bearbeitungs-Abfrage eines angemeldeten Benutzers. In der Realität sollte darauf geachtet werden, Bearbeitungskonflikte zu verhindern. Diese treten ein, wenn zwei oder mehr Benutzer gleichzeitig versuchen, die gleiche Seite zu bearbeiten.
Konflikte können verhindert werden, indem bei der Abfrage eines CSRF-Tokens der Zeitstempel der letzten Version abgerufen wird.
Durch das Hinzufügen von prop=info|revisions zur Abfrage des CSRF-Tokens in Schritt 3 können wir den Zeitstempel für die letzte Version erhalten.
Dieser Zeitstempel wird als basetimestamp genutzt, wenn wir die Bearbeitungs-Abfrage stellen.
Wir benötigen auch die genaue Zeit, zu der wir unsere Bearbeitung beginnen.
Diese kann durch Hinzufügen von curtimestamp zur CSRF-Abfrage ebenfalls erhalten werden.
Dieser Wert dient als unser starttimestamp.
Schließlich setzen wir in der Bearbeitungs-Abfrage die Parameter basetimestamp und starttimestamp so:
Große Änderungen
POST-Abfragen, die eine große Menge an Text enthalten (8000+ Zeichen), sollten mit Content-Type: multipart/form-data im Header gesendet werden.
Da multipart/form-data keine HTML-Auslassungszeichen für Leerzeichen und Satzzeichen hinzufügen muss (d.h. Prozent-Codierung), wird der Umfang von Daten wesentlich kleiner sein als beim Äquivalent der Prozent-Codierung.
Durch multipart/form-data wird jedoch noch eine Überschrift hinzugefügt -- etwa 160 Bytes je Parameter.
Für kurze Nachrichten müssen kaum Leerzeichen hinzugefügt werden, weshalb der Umfang an Überschriften ineffizient sein kann und Prozent-Codierung bevorzugt wird.[1]
Beachte, dass in unserem Python-Beispielcode die Abfrage standardmäßig Prozent-codiert wird.
Siehe die MDN-Web-Dokumente für eine technischere Diskussion von content-type und POST-Abfragen.
Siehe [multipart/form-data die Python-Abfrage-Dokumentation] dazu, wie multipart/form-data mit einer Syntax übergeben wird, die der in unserem Python-Beispielcode ähnelt.
CAPTCHAs
Wenn dein Ziel-Wikk CAPTCHAs nutzt, kann deine Abfrage einen Fehler zurückgeben, der eine ID-Nummer und einen einfachen Test, wie eine Frage, ein mathematisches Problem oder eine URL zu einem Bild, enthält.
Um deine Bearbeitung zu beenden, musst du den Test beenden und dann deine Abfrage erneut mit der ID und der/den korrekten Antwort(en) angehängt an die ursprüngliche Abfrage-Zeichenkette ausführen, etwa so: captchaid=sampleId&captchaword=answer
Andere CAPTCHA-Systeme und Erweiterungen können unterschiedliche Parameter für ähnliche Zwecke nutzen. Nutze allgemein die Feldnamen für die ID und Testfragen als Parameter in deiner zweiten Abfrage.
Mögliche Fehler
| Code | Information |
|---|---|
| notitle | The title parameter must be set. |
| missingparam | At least one of the parameters text, appendtext und undo is required. |
| notoken | The token parameter must be set. |
| invalidsection | Der Parameter section muss eine gültige Abschnittskennung oder new sein. |
| protectedpage | Diese Seite wurde geschützt, um Bearbeitungen sowie andere Aktionen zu verhindern. |
| cantcreate | Du hast nicht die erforderliche Berechtigung, um neue Seiten erstellen zu können. |
| cantcreate-anon | Unangemeldete Benutzer können keine neuen Seiten erstellen |
| articleexists | Die Seite, die du erstellen willst, wurde bereits erstellt. |
| noimageredirect-anon | Anonyme Benutzer können keine Bildweiterleitungen erstellen. |
| noimageredirect | Dir fehlt die Berechtigung, Bildweiterleitungen zu erstellen. |
| spamdetected | Your edit was refused because it contained a spam fragment: Wikitext.
|
| abusefilter-warning | Diese Aktion wurde automatisch als schädlich erkannt. |
| abusefilter-disallowed | Diese Aktion wurde automatisch als schädlich erkannt und ist daher verboten. |
| contenttoobig | ⧼Apierror-contenttoobig⧽ Where bytes is the value of $wgMaxArticleSize. |
| noedit-anon | Anonyme Benutzer können keine Seiten bearbeiten. |
| noedit | Dir fehlt die Berechtigung, Seiten zu bearbeiten. |
| pagedeleted | Die Seite wurde gelöscht, nachdem du ihren Zeitstempel abgerufen hast. |
| emptypage | Das Erstellen neuer leerer Seiten ist nicht erlaubt. |
| emptynewsection | Das Erstellen leerer neuer Abschnitte ist nicht möglich. |
| editconflict | Bearbeitungskonflikt. |
| revwrongpage | Die Version revid ist keine Version von pagename. Wird ausgegeben, wenn eine ungültige Versions-ID für undo oder undoafter angegeben wird
|
| undofailure | Die Änderung konnte nicht rückgängig gemacht werden, da der betroffene Abschnitt zwischenzeitlich verändert wurde. |
| missingtitle | Die von dir angegebene Seite existiert nicht. (siehe oben Parameter nocreate)
|
| mustbeposted | The edit module requires a POST request. |
| readapidenied | Du benötigt Leseberechtigungen, um dieses Modul zu benutzen. |
| writeapidenied | Du darfst dieses Wiki nicht über die API bearbeiten. |
| noapiwrite | Das Bearbeiten dieses Wikis über die API ist deaktiviert. |
| badtoken | Ungültiges CSRF-Token. |
| missingparam | The title, pageid parameter must be set. |
| invalidparammix | The parameters title, pageid can not be used together. |
| invalidtitle | Ungültiger Titel „title“. |
| invalid-content-data | Ungültige Inhaltsdaten tritt beim Versuch, eine JSON-Seite mit nichtkonformen Daten oder eine MassMessageListContent-Seite zu bearbeiten, auf |
| nosuchpageid | Es gibt keine Seite mit der ID pageid. |
| pagecannotexist | Der Namensraum erlaubt keine tatsächlichen Seiten. |
| nosuchrevid | Es gibt keine Version mit der ID undo. |
| nosuchrevid | Es gibt keine Version mit der ID undoafter. |
| badmd5 | Die angegebene MD5-Prüfsumme war falsch. |
| hookaborted | Der Versuch, die Änderung durchzuführen, wurde von einer Parsererweiterung abgebrochen. |
| parseerror | Content serialization failed: parseerror |
| summaryrequired | ⧼apierror-summaryrequired⧽ |
| blocked | You have been blocked from editing. |
| ratelimited | Du hast dein Aktionslimit überschritten. Bitte warte etwas und versuche es später erneut. |
| unknownerror | Unbekannter Fehler: „retval“. |
| nosuchsection | Es gibt keinen Abschnitt $1. |
| sectionsnotsupported | Abschnitte werden für das Inhaltsmodell $1 nicht unterstützt. |
| editnotsupported | Bearbeitungen dieses Seitentyps werden nicht von der textbasierten Bearbeitungs-API unterstützt. |
| appendnotsupported | Es ist nicht möglich, Seiten mit dem Inhaltsmodell $1 Inhalte anzuhängen. |
| redirect-appendonly | You have attempted to edit using the redirect-following mode, which must be used in conjunction with section=new, prependtext, or appendtext. |
| edit-invalidredirect | Cannot edit $1 while following redirects, as target $2 is not valid. |
| badformat | The requested format $1 is not supported for content model $2 used by $3. |
| customcssprotected | Du hast nicht die Berechtigung, diese CSS enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält. |
| customjsprotected | Du hast nicht die Berechtigung, diese JavaScript enthaltende Seite zu bearbeiten, da es sich hierbei um die persönlichen Einstellungen eines anderen Benutzers handelt. |
| taggingnotallowed | Du hast keine Berechtigung, um Markierungen zu setzen |
| badtags | Die Markierung „Tag“ darf nicht manuell angewendet werden. Die folgenden Markierungen dürfen nicht manuell angewendet werden: Tag1, Tag2 |
| tpt-target-page | Diese Seite kann nicht manuell aktualisiert werden.
Diese Seite ist eine Übersetzung der Seite $1 und die Übersetzung kann mithilfe des [$2 Übersetzungswerkzeuges] aktualisiert werden. |
Parametergeschichte
- v1.35:
baserevideingeführt - v1.25: Eingeführt
tags - v1.21: Eingeführt
contentformat,contentmodel - v1.20: Eingeführt
pageid - v1.19: Eingeführt
sectiontitle - v1.18: Veralteter
captchaid,captchaword - v1.17: Eingeführt
redirect - v1.16: Veralteter
watch,unwatch - v1.16: Eingeführt
watchlist - v1.15: Eingeführt
undo,undoafter - v1.14: Eingeführt
starttimestamp
Zusätzliche Anmerkungen
- Die Anmeldung wird von der API nicht unbedingt gefordert, ist jedoch nötig, um die Bearbeitung korrekt ihrem Autor zuzuordnen. Eine erfolgreiche Bearbeitung eines unangemeldeten Benutzers wird der IP-Adresse zugeordnet.
- Bots, die nicht angemeldet sind, können Bearbeitungs- und anderen Schreibeinschränkungen unterliegen; siehe Manual:Creating a bot#Logging in für weitere Details.
- Benutzer, die nicht angemeldet sind, erhalten immer ein leeres CSRF-Token,
+\. - Der Prozess für die Abfrage eines Tokens hat sich über die Versionen hinweg mehrfach geändert. Weitere Informationen findest du unter API:Tokens.
- ResourceLoader bietet einen Weg, um auf Bearbeitungs-Tokens zurückgreifen, während Code auf einer Wiki-Seite ausgeführt wird.
- Du kannst das gleiche CSRF-Token für alle Bearbeitungsaktionen im gleichen Wiki während einer Sitzung verwenden.
- Es ist gute Praxis, alle Tokens einer Abfrage am Ende der Abfrage-Zeichenkette oder zumindest nach dem Text-Parameter anzugeben. Auf diesem Weg wird der Token nicht übergeben, wenn die Verbindung unterbrochen wird und die Bearbeitung schlägt fehlt. Wenn du das mw.Api-Objekt nutzt, um Abfragen zu stellen, geschieht dies automatisch.
- Obwohl
captchaidundcaptchawordtechnisch gesehen seit v1.18 aus API:Edit entfernt wurden, hat Extension:BestätigungDerBearbeitung API:Edit erweitert, um mit CAPTCHAs zu funktionieren. Wenn ConfirmedEdit installiert ist, sind diese Parameter weiterhin verfügbar. ConfirmEdit ist im Paket der MediaWiki-Software v1.18+ enthalten.
Limitations
- The API does not yet support editing content slots (T200570). You can do so instead with an extension like Extension:WSSlots, which enables the
editslotAPI action.
Siehe auch
- Hilfe:Bearbeiten - Enthält nützliche Links zum Bearbeiten von Artikeln.
- Handbuch:Bot-Passwörter - beschreibt, wie man sich über eine vereinfachte Oberfläche anmeldet, während man über Skripte oder Anwendungen auf Wikis zugreift, anstatt über die GUI.
- Manual:Creating a bot - weitere Details zur Nutzung eines Bots zur automatischen Bearbeitung von Seiten.
- ResourceLoader - bietet einen Weg, um auf Bearbeitungs-Tokens zurückzugreifen, während JavaScript auf einer MediaWiki-Seite ausgeführt wird.
- API:Tokens - hat weitere Details zur Nutzung von Tokens zum Anmelden oder Stellen von POST-Abfragen.
- API:Tokens (Action) - eine missbilligte API, verschieden von API:Tokens, zur Abfrage von Tokens in früheren Versionen von MediaWiki.
- API:Vergleichen - erlaubt dir, zwischen Bearbeitungen auf einer Seite zu unterscheiden.
- API:Markierungen verwalten - ändert Markierungen auf einer Seite.
- API:Zurücksetzen - macht eine Reihe von Bearbeitungen rückgängig.
- API:Dateizurücksetzung - setzt Dateien auf einen früheren Status zurück.
- API:Versionslöschung - löscht und stellt Versionen einer Seite wieder her.