CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Wikipédia:Technique des bots - Wikipédia

Wikipédia:Technique des bots

Un article de Wikipédia, l'encyclopédie libre.

Vous avez de nouveaux messages (diff ?).

Un bot interagit habituellement avec Wikipédia selon le protocole HTTP. Sont reportées ici des indications sur le fonctionnement des bots.

Sommaire

[modifier] Aperçu général

Un bot se comporte schématiquement comme un utilisateur lambda : en visitant les pages, il adresse des requêtes HTTP, qui sont d'habitude gérées par le navigateur du visiteur. Le bot doit, pour chaque requête HTTP effectuée, envoyer un entête (header) contenant un champ User-Agent non nul, sous peine de se voir refuser l'accès à Wikipédia. On pourra y inscrire le nom du bot, par exemple.

[modifier] Fonctionnement

[modifier] Obtenir un article

Un bot accède à la source wiki des pages par l'intermédiaire d'une requête HTTP de type GET , sur le formulaire d'édition :

wiki.phtml?title=Titre&action=edit

Après avoir récupéré le résultat de la requête, le bot doit en extraire le texte contenu entre les balises <textarea> et </textarea>, ainsi que le timestamp (wpEdittime) de l'article, qui devra être retourné au serveur intact pour valider la modification de l'article.

Pour ce faire, les expressions régulières ou un parseur XML peuvent être utilisés.

[modifier] Poster un article

Il suffit d'envoyer une requête HTTP de type POST à :

wiki.phtml?title=Titre&action=submit

Elle doit comprendre au minimum :

  • le corps de l'article dans le champ wpTextbox1 ;
  • le timestamp de l'article dans le champ wpEdittime.

Le timestamp d'un nouvel article est vide (""). Les autres informations (wpEditToken etc.) peuvent également être renvoyées, dans le cas où le bot est loggué après identification.

[modifier] S'identifier

Il faut envoyer une requête HTTP de type POST à :

wiki.phtml?title=Special:Userlogin&action=submitlogin

Elle doit comprendre :

  • le nom d'utilisateur dans le champ wpName ;
  • le mot de passe dans le champ wpPassword ;
  • « 1 » dans le champ wpRemember,
  • « Identification » dans le champ wpLoginattempt.

Le serveur renvoie alors un entête (header) contenant un champ set-Cookie. Il faut l'enregistrer intact et le retourner à chaque requête GET ou POST envoyée au serveur dans le champ cookie.

[modifier] Exemple en Python

Ce script très simple en Python lit cette page et extrait l'article, il n'écrit rien et vous pouvez l'essayer sans risque :

# -*- coding: utf-8  -*-
                  
# Simplet Bot - le bot très basique pour Wikipedia
# Utilisateur:Dake - 2005/2006
# (code sous license GPL)

import httplib
import re

# préparation URL
conn = httplib.HTTPConnection('fr.wikipedia.org')

# "raw" indique que l'on ne veut que l'article au format Wiki, pas l'html du reste de la page
conn.request('GET', "/w/wiki.phtml?title=Wikip%C3%A9dia:Technique_des_bots&action=raw")

# pour récupérer l'html, la requête sera comme suit : 
# conn.request('GET', "/w/wiki.phtml?title=Wikip%C3%A9dia:Technique_des_bots&action=edit")

# connexion serveur et lecture
reponse = conn.getresponse()
article = reponse.read()

print article

# fin connexion
conn.close()

[modifier] Exemple en C#

Ce programme en C# ne fait que lire et afficher une page en mode console. Il n'écrit rien sur le serveur et peut être utilisé sans risques.

// Simplet Bot - le bot très basique pour Wikipedia
// Utilisateur:Dake - 2006
// (code sous license GPL)

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;

namespace SimpletBot {
    class Program {
        static void Main(string[] args) {

            string url = "http://fr.wikipedia.org/w/wiki.phtml?title=Wikip%C3%A9dia:Technique_des_bots&action=raw";

            // connexion au serveur
            // nb. le serveur de Wikipédia refuse les connexions sans le champ "UserAgent"
            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
            request.UserAgent = "Simplet-Bot";

            // lancement de la requête
            HttpWebResponse response = (HttpWebResponse) request.GetResponse();

            // lecture du résultat
            Stream outputStream = response.GetResponseStream();

            // affichage sur la console
            StreamReader reader = new StreamReader(outputStream, System.Text.Encoding.UTF8);
            Console.Write(reader.ReadToEnd());
            reader.Close();

            // fermeture du résultat
            outputStream.Close();
        }
    }
}

[modifier] Exemple plus complexe

Voir Simplet-Bot, un bot en Python qui lit une liste d'articles récents d'un portail, se connecte avec un nom d'utilisateur et enregistre les 10 articles les plus récents dans une page. Le bot a été volontairement simplifié et ne prend pas en charge toutes les subtilités de MediaWiki (messages d'erreurs, conflit d'édition, etc.). Pour des opérations plus complexes, se référer au code de PyWikipedia.

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com