Policy:User-Agent policy/zh

From Wikimedia Foundation Governance Wiki
Revision as of 22:37, 16 December 2018 by meta>Lzma17 (Created page with "以Flash或JavaScript編寫的基於瀏覽器的應用通常是强制與宿主瀏覽器的User-Agent頭部相同,這不被視爲違規,然而這些程序應該包含$heade...")

自2015年始,大體從技術上對用戶代理(user agent)不作强制要求,但是在某些特定情況下依然需要。[1]

自2015年二月15日起,Wikimedia對所有請求要求一個HTTP User-Agent 請求頭。技術組成員做出此項執行要求,并且在技術郵件組中發佈并討論了這個決定[2][3]。對此的解釋是沒有在請求中包含User-Agent字符串的客戶端基本都是運行有錯誤的代碼,并且給服務器造成很多負擔,而沒有對這個維基項目做出貢獻。注意一些語言中包含的沒有説明作用的User-Agent默認值亦將會被Wikimedia網站屏蔽(或者其一部分,例如api.php頁面),例如Perl語言的libwww庫。

不提供User-Agent請求頭的客戶代理(瀏覽器或脚本)現在可能會遇到如下所示之錯誤訊息:

Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.

提供被拉黑的User-Agent(例如任何以“lwp”開頭的User-Agent字符串)的客戶代理可能會遇到如下不太有用的錯誤訊息:

Our servers are currently experiencing a technical problem. This is probably temporary and should be fixed soon. Please try again in a few minutes.

這項改動最可能影響通過api.php或其他方式自動訪問Wikimedia的脚本(機械人)和命令行程式。[4]如果你執行一個機械人,請在請求頭中包含能夠標識此機械人的User-Agent,并且不與很多其他機械人衝突。并且在其中包含你的聯絡方式(例如本地維基上的用戶頁,使用跨維基鏈接語法的相關維基項目的用戶頁,一個相關外部站點的URI,或是電郵地址),舉例如下:

User-Agent: CoolToolName/0.0 (https://example.org/CoolTool/; CoolTool@example.org) UsedBaseLibrary/0.0

The generic format is <client name>/<version> (<contact information>) <library/framework name>/<version> [<library name>/<version> ...]. Parts that are not applicable can be omitted.

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.

不要拷貝瀏覽器上的的客戶代理字符串,行爲像機械人但是具有瀏覽器的客戶代理的行爲將被視爲有害。[5]亦不要使用通用代理,例如“curl”、“lwp”和“Python-urllib”等等。像pywikibot這樣的大型框架有很多用戶在用,僅僅使用“pywikibot”很可能比較模糊。在其中包含具體任務、脚本等細節通常是個好主意,即使這些信息對操作者外的其他人是模糊的。[6]

更多信息請移步MediaWiki API 文檔[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 Panopticlick project.

以Flash或JavaScript編寫的基於瀏覽器的應用通常是强制與宿主瀏覽器的User-Agent頭部相同,這不被視爲違規,然而這些程序應該包含Api-User-Agent頭部來實現合適的用戶代理信息。

備註

  1. http://thread.gmane.org/gmane.science.linguistics.wikipedia.technical/83870/
  2. The Wikitech-l February 2010 Archive by subject
  3. User-Agent: | Wikipedia | Wikitech
  4. API:FAQ - MediaWiki
  5. [Wikitech-l] User-Agent:
  6. Anomie (31 July 2014). "Clarification on what is needed for "identifying the bot" in bot user-agent?". Mediawiki-api. 
  7. As an example (among other examples) of how to set a user-agent, in PHP, one might use the following, if one's cURL handle is $ch:
    curl_setopt($ch, CURLOPT_USERAGENT ,'CoolToolName/0.0 (https://example.org/CoolTool/; CoolTool@example.org) UsedBaseLibrary/0.0');