Policy:User-Agent policy/zh: Difference between revisions

From Wikimedia Foundation Governance Wiki
Content deleted Content added
Created page with "== 參見 =="
FuzzyBot (talk | contribs)
Updating to match new version of source page
Line 2: Line 2:
{{notice|本頁面僅提供反映了當前狀態的信息,如需討論此主題請移步wikitech-l[[Special:MyLanguage/Mailing lists|郵件組]]。}}
{{notice|本頁面僅提供反映了當前狀態的信息,如需討論此主題請移步wikitech-l[[Special:MyLanguage/Mailing lists|郵件組]]。}}


<div class="mw-translate-fuzzy">
自2010年2月15日起,維基媒體網站要求所有請求必須包含'''[[w:User-Agent|User-Agent]](用戶代理)HTTP頭欄位'''。此決定由技術人員作出,并且在技術郵件組中發佈并討論了這個決定<ref>[https://lists.wikimedia.org/pipermail/wikitech-l/2010-February/thread.html#46764 The Wikitech-l February 2010 Archive by subject]</ref><ref>[http://www.gossamer-threads.com/lists/wiki/wikitech/189275 User-Agent: | Wikipedia | Wikitech]</ref>。對此的解釋是,沒有在請求中包含User-Agent字符串的客戶端基本都是運行有錯誤的代碼,并且給服務器造成很多負擔,而沒有對這個維基項目做出貢獻。注意:一些沒有説明作用的User-Agent默認值亦將會被維基媒體網站屏蔽(或者其一部分,例如api.php頁面),例如Perl語言的libwww庫。
自2010年2月15日起,維基媒體網站要求所有請求必須包含'''[[w:User-Agent|User-Agent]](用戶代理)HTTP頭欄位'''。此決定由技術人員作出,并且在技術郵件組中發佈并討論了這個決定<ref>[https://lists.wikimedia.org/pipermail/wikitech-l/2010-February/thread.html#46764 The Wikitech-l February 2010 Archive by subject]</ref><ref>[http://www.gossamer-threads.com/lists/wiki/wikitech/189275 User-Agent: | Wikipedia | Wikitech]</ref>。對此的解釋是,沒有在請求中包含User-Agent字符串的客戶端基本都是運行有錯誤的代碼,并且給服務器造成很多負擔,而沒有對這個維基項目做出貢獻。注意:一些沒有説明作用的User-Agent默認值亦將會被維基媒體網站屏蔽(或者其一部分,例如api.php頁面),例如Perl語言的libwww庫。
</div>


<div class="mw-translate-fuzzy">
不提供User-Agent請求頭的客戶代理(瀏覽器或脚本)現在可能會遇到如下所示之錯誤訊息:
不提供User-Agent請求頭的客戶代理(瀏覽器或脚本)現在可能會遇到如下所示之錯誤訊息:
</div>


<div class="mw-translate-fuzzy">
:"脚本應該使用可提供信息的User-Agent字符串,並在其中包括聯絡訊息,否則這些脚本可能在無通知的情況被IP封禁。"
:"脚本應該使用可提供信息的User-Agent字符串,並在其中包括聯絡訊息,否則這些脚本可能在無通知的情況被IP封禁。"
</div>


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


<div class="mw-translate-fuzzy">
:"我們的伺服器目前遇到了技術問題,可能是臨時的并且很快會被修復。請幾分鐘后再試。"
:"我們的伺服器目前遇到了技術問題,可能是臨時的并且很快會被修復。請幾分鐘后再試。"
</div>


這項改動最可能影響通過api.php或其他方式自動訪問Wikimedia的脚本(機械人)和命令行程式。<ref>[//www.mediawiki.org/w/index.php?title=API:FAQ#do_I_get_HTTP_403_errors.3F API:FAQ - MediaWiki]</ref>如果你執行一個機械人,請在請求頭中包含能夠標識此機械人的User-Agent,并且不與很多其他機械人衝突。并且在其中包含你的聯絡方式(例如本地維基上的用戶頁,使用跨維基鏈接語法的相關維基項目的用戶頁,一個相關外部站點的URI,或是電郵地址),舉例如下:
這項改動最可能影響通過api.php或其他方式自動訪問Wikimedia的脚本(機械人)和命令行程式。<ref>[//www.mediawiki.org/w/index.php?title=API:FAQ#do_I_get_HTTP_403_errors.3F API:FAQ - MediaWiki]</ref>如果你執行一個機械人,請在請求頭中包含能夠標識此機械人的User-Agent,并且不與很多其他機械人衝突。并且在其中包含你的聯絡方式(例如本地維基上的用戶頁,使用跨維基鏈接語法的相關維基項目的用戶頁,一個相關外部站點的URI,或是電郵地址),舉例如下:
<pre>
<pre>
User-Agent: CoolToolName/0.0 (https://example.org/cool-tool/; cool-tool@example.org) used-base-library/0.0
User-Agent: CoolTool/0.0 (https://example.org/cool-tool/; cool-tool@example.org) generic-library/0.0
</pre>
</pre>


Line 24: Line 34:


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
更多信息請移步[[mw:API:Quick start guide#Identifying your client|MediaWiki API 文檔]]。<ref>As an example (among [[mw:API:Quick_start_guide#Identifying_your_client|other examples]]) of how to set a user-agent, in PHP, one [http://php.net/manual/en/function.curl-setopt.php might use] the following, if one's cURL handle is <code>$ch</code>:<syntaxhighlight lang="php">curl_setopt($ch, CURLOPT_USERAGENT ,'CoolToolName/0.0 (https://example.org/cool-tool/; cool-tool@example.org) used-base-library/0.0');</syntaxhighlight> 举个在PHP中设置用户代理的例子([[mw:API:Quick_start_guide#Identifying_your_client|更多例子]]):[http://php.net/manual/en/function.curl-setopt.php 可能使用]如下用户代理,如果它的cURL句柄是<code>$ch</code>:<syntaxhighlight lang="php">curl_setopt($ch, CURLOPT_USERAGENT ,'CoolToolName/0.0 (https://example.org/cool-tool/; cool-tool@example.org) used-base-library/0.0');</syntaxhighlight></ref>
更多信息請移步[[mw:API:Quick start guide#Identifying your client|MediaWiki API 文檔]]。<ref>As an example (among [[mw:API:Quick_start_guide#Identifying_your_client|other examples]]) of how to set a user-agent, in PHP, one [http://php.net/manual/en/function.curl-setopt.php might use] the following, if one's cURL handle is <code>$ch</code>:<syntaxhighlight lang="php">curl_setopt($ch, CURLOPT_USERAGENT , 'CoolTool/0.0 (https://example.org/cool-tool/; cool-tool@example.org) generic-library/0.0');</syntaxhighlight> 举个在PHP中设置用户代理的例子([[mw:API:Quick_start_guide#Identifying_your_client|更多例子]]):[http://php.net/manual/en/function.curl-setopt.php 可能使用]如下用户代理,如果它的cURL句柄是<code>$ch</code>:<syntaxhighlight lang="php">curl_setopt($ch, CURLOPT_USERAGENT , 'CoolTool/0.0 (https://example.org/cool-tool/; cool-tool@example.org) generic-library/0.0');</syntaxhighlight></ref>
</div>
</div>



Revision as of 19:38, 2 April 2021

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

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

"脚本應該使用可提供信息的User-Agent字符串,並在其中包括聯絡訊息,否則這些脚本可能在無通知的情況被IP封禁。"

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

"我們的伺服器目前遇到了技術問題,可能是臨時的并且很快會被修復。請幾分鐘后再試。"

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

User-Agent: CoolTool/0.0 (https://example.org/cool-tool/; cool-tool@example.org) generic-library/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.

如果你執行一個自動代理,請考慮按照互聯網慣例在User-Agent中包括“bot”(不限大小寫)。這會被Wikimedia的系統識別,被用於將流量分類,并且提供更精確的統計數據。

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

更多信息請移步MediaWiki API 文檔[6]

網路瀏覽器一般會自動包括User-Agent字符串,如果你遭遇上述錯誤,請參閲所使用瀏覽器的用戶手冊修改User-Agent字符串。請注意某些插件或隱私保護代理可能消除這個頭部。建議使用一個一般的User-Agent字符串,而不是消除之或留空。請注意其他特性更有可能被網站用於確定你的身份:如閣下對保護隱私感興趣,請瀏覽Panopticlick project

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

自2015年始,维基媒体站点不屏蔽未设置用户代理头的页面访问和API请求。因此这些要求没有被自动强制执行,但是如有需要,在某些特定情況下可能被强制执行。[7]

備註

  1. The Wikitech-l February 2010 Archive by subject
  2. User-Agent: | Wikipedia | Wikitech
  3. API:FAQ - MediaWiki
  4. [Wikitech-l] User-Agent:
  5. Anomie (31 July 2014). "Clarification on what is needed for "identifying the bot" in bot user-agent?". Mediawiki-api. 
  6. 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 , 'CoolTool/0.0 (https://example.org/cool-tool/; cool-tool@example.org) generic-library/0.0');
    
    举个在PHP中设置用户代理的例子(更多例子):可能使用如下用户代理,如果它的cURL句柄是$ch:
    curl_setopt($ch, CURLOPT_USERAGENT , 'CoolTool/0.0 (https://example.org/cool-tool/; cool-tool@example.org) generic-library/0.0');
    
  7. gmane.science.linguistics.wikipedia.technical/83870 (deadlink)

參見