Policy:Wikimedia Foundation User-Agent Policy/fr
Cette page n'a qu'un but d'information et reflète l'état actuel du sujet. Pour en discuter, veuillez utiliser la liste de diffusion wikitech-l. |
Ce règlement ou cette procédure est maintenu à jour par la Fondation Wikimedia. Notez qu’en présence de quelconques différences de sens ou d’interprétation entre la version originale en anglais de ce document et sa traduction, la version originale en anglais prévaudra. |
Depuis le 15 février 2010, les sites Wikimedia nécessitent une entête HTTP d'agent utilisateur (User-Agent) pour toutes les requêtes. C'est une décision opérationnelle du personnel technique qui fut annoncée et discutée sur la liste de diffusion technique.[1][2] L'explication est que les clients qui n'envoient pas de chaîne de l'agent utilisateur sont des scripts qui se comportent très mal la plupart du temps en causant une surcharge des serveurs sans bénéficier du projet. Les chaînes de caractères de l'agent utilisateur qui commencent avec des valeurs par défaut non descriptives, comme par exemple $4, peuvent aussi être bloquées par les sites Wikimedia (ou partiellement sur ces sites, comme $5).
The rationale is, that clients that do not send a User-Agent string are mostly ill behaved scripts that cause a lot of load on the servers, without benefiting the projects. User-Agent strings that begin with non-descriptive default values, such as python-requests/x
, may also be blocked from Wikimedia sites (or parts of a website, e.g. api.php
).
Les requêtes (venant par exemple d'un navigateur ou d'un script) qui n'envoient pas d'entête remplie de l'agent utilisateur, pourront recevoir un message d'erreur similaire à :
- Les scripts doivent utiliser une chaîne de caractères informative pour l'agent utilisateur avec les informations de contact, sinon ils peuvent être bloqués sans préavis.
Les requêtes émises par contre par des agents utilisateurs prohibés rencontreront plutôt un message d'erreur moins utile comme celui-ci :
- Nos serveurs connaissent actuellement un problème technique. Veuillez réessayer dans quelques minutes.
This change is most likely to affect scripts (bots) accessing Wikimedia websites such as Wikipedia automatically, via api.php or otherwise, and command line programs.
[5] If you run a bot, please send a User-Agent header identifying the bot with an identifier that isn't going to be confused with many other bots, and supplying some way of contacting you (e.g. a userpage on the local wiki, a userpage on a related wiki using interwiki linking syntax, a URI for a relevant external website, or an email address), e.g.:
User-Agent: CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org) generic-library/0.0
Le format générique est <client name>/<version> (<contact information>) <library/framework name>/<version> [<library name>/<version> ...]
. Les parties non applicables peuvent être omises.
If you run an automated agent, please consider following the Internet-wide convention of including the string "bot" in the User-Agent string, in any combination of lowercase or uppercase letters. This is recognized by Wikimedia's systems, and used to classify traffic and provide more accurate statistics.
Do not copy a browser's user agent for your bot, as bot-like behavior with a browser's user agent will be assumed malicious.
[6] Do not use generic agents such as "curl", "lwp", "Python-urllib", and so on. For large frameworks like pywikibot, there are so many users that just "pywikibot" is likely to be somewhat vague. Including detail about the specific task/script/etc would be a good idea, even if that detail is opaque to anyone besides the operator.[7]
Web browsers generally send a User-Agent string automatically; if you encounter the above error, please refer to your browser's manual to find out how to set the User-Agent string. Note that some plugins or proxies for privacy enhancement may suppress this header. However, for anonymous surfing, it is recommended to send a generic User-Agent string, instead of suppressing it or sending an empty string. Note that other features are much more likely to identify you to a website — if you are interested in protecting your privacy, visit the Cover Your Tracks project.
Browser-based applications written in JavaScript are typically forced to send the same User-Agent header as the browser that hosts them. This is not a violation of policy, however such applications are encouraged to include the Api-User-Agent
header to supply an appropriate agent.
As of 2015, Wikimedia sites do not reject all page views and API requests from clients that do not set a User-Agent header. As such, the requirement is not automatically enforced. Rather, it may be enforced in specific cases as needed.
Exemples de code
On Wikimedia wikis, if you don't supply a User-Agent
header, or you supply an empty or generic one, your request will fail with an HTTP 403 error. Other MediaWiki installations may have similar policies.
JavaScript
If you are calling the API from browser-based JavaScript, you won't be able to influence the User-Agent
header: the browser will use its own. To work around this, use the Api-User-Agent
header:
// Using XMLHttpRequest
xhr.setRequestHeader( 'Api-User-Agent', 'Example/1.0' );
// Using jQuery
$.ajax( {
url: 'https://example/...',
data: ...,
dataType: 'json',
type: 'GET',
headers: { 'Api-User-Agent': 'Example/1.0' },
} ).then( function ( data ) {
// ..
} );
// Using mw.Api
var api = new mw.Api( {
ajax: {
headers: { 'Api-User-Agent': 'Example/1.0' }
}
} );
api.get( ... ).then( function ( data ) {
// ...
});
// Using Fetch
fetch( 'https://example/...', {
method: 'GET',
headers: new Headers( {
'Api-User-Agent': 'Example/1.0'
} )
} ).then( function ( response ) {
return response.json();
} ).then( function ( data ) {
// ...
});
PHP
In PHP, you can identify your user-agent with code such as this:
ini_set( 'user_agent', 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)' );
cURL
Ou, si vous utilisez cURL :
curl_setopt( $curl, CURLOPT_USERAGENT, 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)' );
Python
In Python, you can use the Requests library to set a header:
import requests
url = 'https://example/...'
headers = {'User-Agent': 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)'}
response = requests.get(url, headers=headers)
Or, if you want to use SPARQLWrapper like in https://people.wikimedia.org/~bearloga/notes/wdqs-python.html:
from SPARQLWrapper import SPARQLWrapper, JSON
url = 'https://example/...'
user_agent = 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)'
sparql = SPARQLWrapper(url, agent = user_agent )
results = sparql.query()
Notes
- ↑ Archive par sujet de la Wikitech-l, février 2010
- ↑ Agent utilisateur : - Wikitech-l - lists.wikimedia.org
- ↑ The Wikitech-l February 2010 Archive by subject
- ↑ User-Agent: - Wikitech-l - lists.wikimedia.org
- ↑ API:FAQ - MediaWiki
- ↑ [Wikitech-l] User-Agent:
- ↑ Clarification on what is needed for "identifying the bot" in bot user-agent?
- ↑ gmane.science.linguistics.wikipedia.technical/83870 (deadlink)
Voir aussi
- Policy for crawlers and bots that wish to operate on Wikimedia websites