Das Skript soll in die Wikipedia-Site injiziert werden. Es verwendet die Anmeldedaten der Benutzer, um sie an die API für die Bearbeitung zu senden.Wie benutze Wikipedia API um eine Seite im Browser Javascript zu bearbeiten?
Dies ist mein Versuch:
function getEditToken(){
return fetch(
'https://en.wikipedia.org/w/api.php?action=query&meta=tokens&format=json',
{credentials: 'include'}
)
.then(r => r.json())
.then(r => r.query.tokens.csrftoken)
}
function writeRevision(title, text, summary){
var url = `https://en.wikipedia.org/w/index.php?action=edit`
var formData = new FormData()
formData.append('title', title)
formData.append('text', text)
formData.append('summary', summary)
formData.append('contentmodel', 'wikitext')
var option = {
method: 'POST',
body: formData,
credentials: 'include',
}
return getEditToken()
.then(token => { formData.append('token', token); console.log(token) })
.then(x => fetch(url, option))
.then(r => r.text())
.then(console.log)
.catch(e => console.log(e))
}
writeRevision('User:eeeeeeeee/draft_1', 'foo wikitext', 'foo summary')
Die Antwort sagt:
Einige Teile des Bearbeitungsformulars den Server nicht erreicht haben; Überprüfen Sie , dass Ihre Änderungen intakt sind, und versuchen Sie es erneut.
Beziehen Sie alle versteckten Feld, das in der Regel gesendet werden, wenn wikipedia-Seiten zu bearbeiten? Vergleichen Sie, was Chrom-Protokolle in die Registerkarte "Netzwerk", wenn Sie Ihr Skript und normale Wikipedia, das gleiche Feld gesendet werden? –