Policy:Wikimedia Foundation User-Agent Policy/cs
Tato stránka je čistě informativní, odráží aktuální stav věcí. Chcete-li diskutovat na toto téma, použijte mailing list wikitech-l. |
Toto pravidlo nebo postup spravuje nadace Wikimedia. Uvědomte si prosím, že v případě jakéhokoli rozdílu ve významu nebo výkladu mezi původní anglickou verzí tohoto obsahu a překladem má přednost původní anglická verze. |
Od 15. února 2010 vyžadují stránky Wikimedia HTTP User-Agent záhlaví pro všechny požadavky. Toto bylo operativní rozhodnutí technického personálu a bylo oznámeno a prodiskutováno na technickém mailing listu.[1][2] Důvodem je, že klienti, kteří neposílají řetězec User-Agent, jsou většinou špatně chované skripty, které způsobují velké zatížení serverů, aniž by to prospělo projektům. Řetězce User-Agent, které začínají nepopsatelnými výchozími hodnotami, jako je python-requests/x
, mohou být také blokovány z webů Wikimedia (nebo částí webu, např. api.php
).
U požadavků (např. z prohlížečů nebo skriptů), které neodesílají popisnou hlavičku User-Agent, se může objevit chybová zpráva, jako je tato:
- Skripty by měly používat informativní řetězec User-Agent s kontaktními informacemi, jinak mohou být bez upozornění zablokovány.
Požadavky od nepovolených uživatelských agentů mohou místo toho narazit na méně užitečnou chybovou zprávu, jako je tato:
- Naše servery mají aktuálně technický problém. Zkuste to prosím znovu za několik minut.
Tato změna s největší pravděpodobností ovlivní skripty (boty) přistupující na stránky Wikimedie, jako je Wikipedie automaticky, prostřednictvím api.php nebo jinak, a programy příkazového řádku.[3] Pokud spouštíte robota, zašlete prosím hlavičku User-Agent, která robota identifikuje pomocí identifikátoru, který nebude zaměňován s mnoha jinými roboty, a poskytne nějaký způsob, jak vás kontaktovat (např. uživatelská stránka na místní wiki, uživatelská stránka na související wiki používající syntaxi propojení interwiki, URI pro relevantní externí webovou stránku nebo e-mailovou adresu), např.:
User-Agent: CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org) generic-library/0.0
Obecný formát je <client name>/<version> (<contact information>) <library/framework name>/<version> [<library name>/<version> ...]
. Části, které nejsou použitelné, lze vynechat.
Pokud provozujete automatického agenta, zvažte prosím dodržování celointernetové konvence zahrnutí řetězce "bot" do řetězce User-Agent v jakékoli kombinaci malých nebo velkých písmen. To je rozpoznáno systémy Wikimedie a používá se ke klasifikaci provozu a poskytování přesnějších statistik.
Nekopírujte pro svého robota uživatelského agenta prohlížeče, protože chování robota s uživatelským agentem prohlížeče bude považováno za škodlivé.[4] Nepoužívejte generické agenty jako "curl", "lwp", "Python-urllib" a podobně. U velkých rámců, jako jsou pywikibot, je tolik uživatelů, že jen "pywikibot" bude pravděpodobně poněkud vágní. Zahrnutí podrobností o konkrétním úkolu/skriptu/atd. by bylo dobrý nápad, i když jsou tyto podrobnosti neprůhledné pro kohokoli kromě operátora.[5]
Webové prohlížeče obecně odesílají řetězec User-Agent automaticky. Pokud se setkáte s výše uvedenou chybou, podívejte se, prosím, do manuálu vašeho prohlížeče a zjistěte, jak nastavit řetězec User-Agent. Všimněte si, že některé pluginy nebo proxy pro vylepšení soukromí mohou tuto hlavičku potlačit. Pro anonymní surfování se však doporučuje odeslat obecný řetězec User-Agent namísto jeho potlačení nebo odeslání prázdného řetězce. Všimněte si, že jiné funkce vás s větší pravděpodobností identifikují na webových stránkách – pokud máte zájem o ochranu svého soukromí, navštivte projekt Cover Your Tracks.
Aplikace založené na prohlížeči napsané v JavaScriptu jsou obvykle nuceny odesílat stejnou hlavičku User-Agent jako prohlížeč, který je hostí. Nejedná se o porušení zásad, nicméně se doporučuje, aby takové aplikace obsahovaly hlavičku Api-User-Agent
, aby dodaly vhodného agenta.
Od roku 2015 stránky Wikimedie neodmítají všechna zobrazení stránek a požadavky API od klientů, kteří nemají nastavenou hlavičku User-Agent. Požadavek jako takový není automaticky vynucován. Spíše může být vymáhána v konkrétních případech podle potřeby.[6]
Příklady kódu
Pokud na wikinách Wikimedie nezadáte hlavičku User-Agent
nebo zadáte prázdnou či obecnou hlavičku, váš požadavek selže s chybou HTTP 403. Ostatní instalace MediaWiki mohou mít podobné zásady.
JavaScript
Pokud voláte API z JavaScriptu založeného na prohlížeči, nebudete moci ovlivnit hlavičku User-Agent
: Prohlížeč použije svou vlastní. Chcete-li to obejít, použijte hlavičku Api-User-Agent
:
// 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
V PHP můžete identifikovat svého user-agenta pomocí kódu, jako je tento:
ini_set( 'user_agent', 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)' );
cURL
Nebo pokud používáte cURL:
curl_setopt( $curl, CURLOPT_USERAGENT, 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)' );
Python
V Pythonu můžete použít knihovnu Requests k nastavení záhlaví:
import requests
url = 'https://example/...'
headers = {'User-Agent': 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)'}
response = requests.get(url, headers=headers)
Nebo, pokud chcete použít SPARQLWrapper jako v 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()
Poznámky
- ↑ Archiv Wikitech-l z února 2010 podle tématu
- ↑ User-Agent: - Wikitech-l - lists.wikimedia.org
- ↑ API:FAQ - MediaWiki
- ↑ [Wikitech-l] User-Agent:
- ↑ Vysvětlení toho, co je potřeba pro "identifikaci robota" v robotu user-agent?
- ↑ gmane.science.linguistics.wikipedia.technical/83870 (mrtvý odkaz)
Související
- Zásady pro prohledávače a roboty, kteří chtějí pracovat na webových stránkách Wikimedie