API:ブロック
MediaWiki 操作 API |
---|
基本 |
認証 |
利用者とアカウント |
ページのオペレーション |
検索 |
開発者向けユーティリティ |
チュートリアル |
表 · 話 · 編 |
利用者をブロックまたはブロック解除する POST リクエストです。
利用者をブロックする
APIの説明文書
action=block
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Block a user.
- id
ID of the block to modify (obtained through list=blocks). Cannot be used together with user, reblock, or newblock.
- Type: integer
- user
User to block. Cannot be used together with id.
- Type: user, by any of username, IP, Temporary user, IP range and user ID (e.g. "#12345")
- userid
- Deprecated.
Specify user=#ID instead.
- Type: integer
- expiry
Expiry time. May be relative (e.g. 5 months or 2 weeks) or absolute (e.g. 2014年09月18日T12:34:56Z). If set to infinite, indefinite, or never, the block will never expire.
- Default: never
- reason
Reason for block.
- Default: (empty)
- anononly
Block anonymous users only (i.e. disable anonymous edits for this IP address, including temporary account edits).
- Type: boolean (details)
- nocreate
Prevent account creation.
- Type: boolean (details)
- autoblock
Automatically block the last used IP address, and any subsequent IP addresses they try to login from.
- Type: boolean (details)
- noemail
Prevent user from sending email through the wiki. (Requires the
blockemail
right).- Type: boolean (details)
- hidename
Hide the username from the block log. (Requires the
hideuser
right).- Type: boolean (details)
- allowusertalk
Allow the user to edit their own talk page (depends on $wgBlockAllowsUTEdit ).
- Type: boolean (details)
- reblock
If the user is already blocked by a single block, overwrite the existing block. If the user is blocked more than once, this will fail—use the id parameter instead to specify which block to overwrite. Cannot be used together with id or newblock.
- Type: boolean (details)
- newblock
Add another block even if the user is already blocked. Cannot be used together with id or reblock.
- Type: boolean (details)
- watchuser
Watch the user's or IP address's user and talk pages.
- Type: boolean (details)
- watchlistexpiry
Watchlist expiry timestamp. Omit this parameter entirely to leave the current expiry unchanged.
- Type: expiry (details)
Change tags to apply to the entry in the block log.
- Values (separate with | or alternative): AWB, convenient-discussions
- partial
Block user from specific pages or namespaces rather than the entire site.
- Type: boolean (details)
- pagerestrictions
List of titles to block the user from editing. Only applies when partial is set to true.
- Type: page title
- Separate values with | or alternative.
- Maximum number of values is 50.
- Only accepts pages that exist.
- namespacerestrictions
List of namespace IDs to block the user from editing. Only applies when partial is set to true.
- Values (separate with | or alternative): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 90, 91, 92, 93, 100, 101, 102, 103, 104, 105, 106, 107, 710, 711, 828, 829, 1198, 1199, 2600, 5500, 5501
- To specify all values, use *.
- actionrestrictions
List of actions to block the user from performing. Only applies when partial is set to true.
- Values (separate with | or alternative): create, move, thanks, upload
- token
A "csrf" token retrieved from action=query&meta=tokens
- This parameter is required.
- Block IP address 192.0.2.5 for three days with a reason.
- api.php?action=block&user=192.0.2.5&expiry=3%20days&reason=First%20strike&token=123ABC [open in sandbox]
- Block user Vandal indefinitely with a reason, and prevent new account creation and email sending.
- api.php?action=block&user=Vandal&expiry=never&reason=Vandalism&nocreate=&autoblock=&noemail=&token=123ABC [open in sandbox]
例
Making any POST request is a multi-step process:
- Log in, via one of the methods described on API:ログイン .
- GET a token . This token is equal to the edit token and changes at every login.
- Send a POST request, with the token, to block a user.
POST リクエスト
レスポンス
{ "block":{ "user":"Example", "userID":2, "expiry":"2015年02月25日T07:27:50Z", "id":"8", "reason":"Time out", "nocreate":"", "noemail":"" } }
利用者ブロックのサンプル コード
Python
#!/usr/bin/python3 """ block_user.py MediaWiki API Demos Demo of `Block` module: sending POST request to block user MIT license """ importrequests S = requests.Session() URL = "https://test.wikipedia.org/w/api.php" # Step 1: GET request to fetch login token PARAMS_0 = { "action": "query", "meta": "tokens", "type": "login", "format": "json" } R = S.get(url=URL, params=PARAMS_0) DATA = R.json() LOGIN_TOKEN = DATA['query']['tokens']['logintoken'] # Step 2: POST request to log in. Use of main account for login is not # supported. Obtain credentials via Special:BotPasswords # (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword PARAMS_1 = { "action": "login", "lgname": "your_bot_username", "lgpassword": "your_bot_password", "lgtoken": LOGIN_TOKEN, "format": "json" } R = S.post(URL, data=PARAMS_1) # Step 3: GET request to fetch CSRF token PARAMS_2 = { "action": "query", "meta": "tokens", "format": "json" } R = S.get(url=URL, params=PARAMS_2) DATA = R.json() CSRF_TOKEN = DATA['query']['tokens']['csrftoken'] # Step 4: POST request to block user PARAMS_3 = { "action": "block", "user": "Example", "expiry": "2015年02月25日T07:27:50Z", "reason": "Time out", "token": CSRF_TOKEN, "format": "json" } R = S.post(URL, data=PARAMS_3) DATA = R.json() print(DATA)
PHP
<?php /* block_user.php MediaWiki API Demos Demo of `Block` module: sending POST request to block user MIT license */ $endPoint = "http://dev.wiki.local.wmftest.net:8080/w/api.php"; $login_Token = getLoginToken(); // Step 1 loginRequest( $login_Token ); // Step 2 $csrf_Token = getCSRFToken(); // Step 3 block( $csrf_Token ); // Step 4 // Step 1: GET request to fetch login token function getLoginToken() { global $endPoint; $params1 = [ "action" => "query", "meta" => "tokens", "type" => "login", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params1 ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); return $result["query"]["tokens"]["logintoken"]; } // Step 2: POST request to log in. Use of main account for login is not // supported. Obtain credentials via Special:BotPasswords // (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword function loginRequest( $logintoken ) { global $endPoint; $params2 = [ "action" => "login", "lgname" => "bot_user_name", "lgpassword" => "bot_password", "lgtoken" => $logintoken, "format" => "json" ]; $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $endPoint ); curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); } // Step 3: GET request to fetch CSRF token function getCSRFToken() { global $endPoint; $params3 = [ "action" => "query", "meta" => "tokens", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params3 ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); return $result["query"]["tokens"]["csrftoken"]; } // Step 4: POST request to block user function block( $csrftoken ) { global $endPoint; $params4 = [ "action" => "block", "user" => "ABCD", "expiry" => "2020年02月25日T07:27:50Z", "reason" => "API Test", "token" => $csrftoken, "format" => "json" ]; $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $endPoint ); curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); echo ( $output ); }
JavaScript
/* block_user.js MediaWiki API Demos Demo of `Block` module: sending POST request to block user MIT license */ varrequest=require('request').defaults({jar:true}), url="http://dev.wiki.local.wmftest.net:8080/w/api.php"; // Step 1: GET request to fetch login token functiongetLoginToken(){ varparams_0={ action:"query", meta:"tokens", type:"login", format:"json" }; request.get({url:url,qs:params_0},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); loginRequest(data.query.tokens.logintoken); }); } // Step 2: POST request to log in. // Use of main account for login is not // supported. Obtain credentials via Special:BotPasswords // (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword functionloginRequest(login_token){ varparams_1={ action:"login", lgname:"bot_username", lgpassword:"bot_password", lgtoken:login_token, format:"json" }; request.post({url:url,form:params_1},function(error,res,body){ if(error){ return; } getCsrfToken(); }); } // Step 3: GET request to fetch CSRF token functiongetCsrfToken(){ varparams_2={ action:"query", meta:"tokens", format:"json" }; request.get({url:url,qs:params_2},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); block(data.query.tokens.csrftoken); }); } // Step 4: POST request to block user functionblock(csrf_token){ varparams_3={ action:"block", user:"ABCDEF", expiry:"2020年02月25日T07:27:50Z", reason:"API Test", token:csrf_token, format:"json" }; request.post({url:url,form:params_3},function(error,res,body){ if(error){ return; } console.log(body); }); } // Start From Step 1 getLoginToken();
MediaWiki JS
/* block_user.js MediaWiki API Demos Demo of `Block` module: sending POST request to block user MIT License */ varparams={ action:'block', user:'ABCD', expiry:'2020年02月25日T07:27:50Z', reason:'API Test', format:'json' }, api=newmw.Api(); api.postWithToken('csrf',params).done(function(data){ console.log(data); });
利用者をブロック解除する
APIの説明文書
action=unblock
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Unblock a user.
- id
ID of the block to unblock (obtained through list=blocks). Cannot be used together with user.
- Type: integer
- user
User to unblock. Cannot be used together with id.
- Type: user, by any of username, IP, Temporary user, IP range and user ID (e.g. "#12345")
- userid
- Deprecated.
Specify user=#ID instead.
- Type: integer
- reason
Reason for unblock.
- Default: (empty)
Change tags to apply to the entry in the block log.
- Values (separate with | or alternative): AWB, convenient-discussions
- watchuser
Watch the user's or IP address's user and talk pages.
- Type: boolean (details)
- watchlistexpiry
Watchlist expiry timestamp. Omit this parameter entirely to leave the current expiry unchanged.
- Type: expiry (details)
- token
A "csrf" token retrieved from action=query&meta=tokens
- This parameter is required.
- Unblock block ID #105.
- api.php?action=unblock&id=105 [open in sandbox]
- Unblock user Bob with reason Sorry Bob.
- api.php?action=unblock&user=Bob&reason=Sorry%20Bob [open in sandbox]
例
POST リクエスト
レスポンス
{ "unblock":{ "id":16, "user":"Example", "userid":2, "reason":"Sorry Example", "watchuser":false } }
起こりうるエラー
コード (ブロック) | 情報 |
---|---|
alreadyblocked | The user you tried to block was already blocked |
cantblock | あなたには利用者をブロックする権限がありません。 |
cantblock-email | You don't have permission to block users from sending email through the wiki. |
canthide | あなたにはブロック記録の利用者名を秘匿化する権限がありません。
This feature has to be enabled explicitly in LocalSettings.php.
|
invalidexpiry | Invalid expiry time |
invalidip | Invalid IP address specified |
invalidrange | Invalid IP range |
notoken | パラメーター token を設定してください。 |
nouser | パラメーター user を設定してください。 |
pastexpiry | Expiry time "1ドル" is in the past. |
permissiondenied | あなたには利用者をブロックする権限がありません。
On most wikis, blocking users is restricted to sysops, but other wikis may have stricter rules.
|
rangedisabled | Blocking IP ranges has been disabled |
コード (ブロック解除) | 情報 |
---|---|
notarget | Either the ID or the user parameter must be set |
notoken | パラメーター token を設定してください。 |
idanduser | The ID and user parameters can't be used together |
blockedasrange | IP address "address" was blocked as part of range "range". You can't unblock the IP individually, but you can unblock the range as a whole. |
cantunblock | The block you specified was not found. It may have been unblocked already |
permissiondenied | あなたには利用者のブロックを解除する権限がありません。
On most wikis, unblocking users is restricted to sysops, but other wikis may have different rules.
|
パラメーターの履歴
- 1.29:
tags
を導入しました - 1.21:
gettoken
を除去しました - 1.20:
gettoken
を廃止予定にしました - 1.18:
watchuser
を導入しました - 1.14:
allowusertalk
,reblock
を導入しました
関連項目
- API:利用者の所属グループの変更 - Add or remove users from a group
- API:ブロック (Blocks) - Lists all blocks