한국   대만   중국   일본 
도움말:봇 만들기 - 위키百科, 우리 모두의 百科事典 本文으로 移動

도움말 : 봇 만들기

위키百科, 우리 모두의 百科事典.

로봇 또는 은 위키百科 및 其他 위키미디어 프로젝트와 相互作用하는 自動化된 프로세스입니다. 위키미디어 프로젝트에 使用할 봇 開發에 關해 說明합니다. 봇 運營에는 프로그래밍 經驗이 要求될 수 있습니다.

봇의 生成 理由 [ 編輯 ]

봇은 作業을 自動化하고 人間보다 더 빨리 일을 遂行할 수 있습니다. 여러 番 遂行해야 하는 單純 作業이 있다면(예를 들어 特定 分類에 屬하는 過하게 많은 文書에 틀을 追加해야 하는 境遇) 이 作業은 人間보다 봇이 處理하는 것이 더 적합합니다.

봇 生成 前 高麗事項 [ 編輯 ]

旣存 봇에게 봇 作業을 要請하는 便이 훨씬 더 簡單할 수 있습니다. 自身에게 週期的인 要請만 있고 프로그래밍에 익숙하지 않다면 이미 봇을 運營하고 있는 使用者에게 봇 作業을 要請하는 것이 좋습니다. 이 要請은 위키百科:봇 編輯 要請 에서 할 수 있습니다. 게다가 누구나 使用할 수 있는 수많은 道具들이 있습니다. 이들 中 大部分이 미디어위키에 特化된 機能을 갖춘 强化된 웹 브라우저 形態를 지닙니다. 그 가운데 가장 著名한 것이 오토위키브라우저 (AWB)입니다. 이것은 위키百科와 다른 위키미디어 프로젝트의 編輯을 支援하도록 設計된 브라우저입니다. 앞서 言及한 AWB와 같은 道具들은 大部分 프로그래밍을 理解하지 않고도 運營할 수 있습니다.

봇을 새로 作成하는 日에는 相當한 프로그래밍 能力이 要求됩니다. 成功的인 봇을 作成하려면 計劃이 重要합니다. 다음을 考慮해 주십시오:

  • 봇이 手動으로 動作하며 支援되는가, 아니면 完全 自動인가?
  • 봇을 혼자서 만들 것인가, 아니면 다른 프로그래머의 도움을 받을 것인가?
  • 봇의 要請, 編輯, 기타 動作을 따로 記錄해놓고 있는가? 그렇다면 그 記錄은 로컬 미디어에 貯藏되는가, 아니면 위키 페이지에 貯藏되는가?
  • 봇이 웹 브라우저 안에서 動作하는가(예: 자바스크립트로 作成되어 있는지), 아니면 獨立的인 프로그램으로 動作하는가?
  • 봇이 獨立 프로그램이라면 自身의 로컬 컴퓨터에서 實行되는가, 아니면 Toolforge 와 같은 遠隔 서버에서 實行되는가?
  • 봇이 遠隔 서버에서 實行된다면 다른 編輯者들은 該當 봇을 運營하거나 機動 命令을 내릴 수 있는가?

韓國語 위키百科에서는 봇 運營을 위해 봇 承認(봇 登錄 申請)李 必須事項은 아닙니다. 單, 봇 承認을 받지 않은 狀況에서는 標準 봇 編輯 政策 에 따라 1分 以上의 編輯 間隔을 두고 編輯해야 합니다. 信賴할 수 있는 봇은 위키百科:봇/登錄 申請 에서 봇 登錄 申請을 할 수 있습니다. 그러나 完全히 새로운 봇은 봇 承認을 받기 前에 誤作動이 없음을 證明하기 위해 充分한 테스트를 遂行해 주십시오.

위키百科 봇의 作動 原理 [ 編輯 ]

作動 槪要 [ 編輯 ]

봇은 人間 編輯者처럼 위키百科 文書를 읽고 變更이 必要한 곳에 變更을 합니다. 봇은 速度가 더 빠르고 人間보다 疲勞를 느끼는 傾向이 덜하고 쉽게 定義되는 패턴이 있는 反復的인 作業의 일에 特化되어 있습니다.

大部分의 境遇 봇은 브라우저가 하는 것처럼 自身의 計定에 로그인하고 위키百科로부터 페이지를 要請하지만 畵面에 페이지를 表示하는 것은 아니고 메모리에서 動作합니다. 그 뒤 變更이 必要한 곳이 있는지 보기 위해 文書의 內容을 檢事합니다. 그 다음에 브라우저가 하는 方式과 同一하게 設計된 方式대로 編輯을 遂行하고 提出합니다.

사람들이 하는 것과 同一한 方式으로 봇이 페이지에 接近하기 때문에 봇은 人間 使用者가 하는 同一한 어려운 일을 經驗할 수 있습니다. 編輯 衝突, 페이지 타임아웃, 페이지 要請이나 編輯 遂行 中에 豫期치 않은 複雜性 等을 마주칠 수 있습니다. 봇이 遂行하는 作業量이 人間이 遂行하는 것보다 더 크기 때문에 봇은 이러한 問題를 마주칠 可能性이 더 높습니다. 그러므로 봇을 作成할 때에는 이러한 狀況을 念頭에 두는 것이 重要합니다.

봇을 위한 API [ 編輯 ]

위키百科 文書의 內容을 變更하려면 봇은 위키百科의 文書의 內容을 가져와서 受精 後 編輯을 返還해야 합니다. 이 目的을 위한 여러 API 가 있습니다.

  • MediaWiki API ( api.php ): 이 라이브러리는 봇 等의 自動化된 프로세스들이 照會 및 變更事項 揭示를 할 수 있도록 作成되었습니다. 데이터는 JSON 포맷으로 返還됩니다. (詳細 內容은 出力 포맷 을 參考하십시오).
    api.php의 機能을 테스트하고 싶은 使用者를 위한 API 演習場 도 마련되어 있습니다.
  • 特需:내보내기 : 大量의 文書 內容을 XML 形態로 가져올 수 있습니다. ( 使用法 )
  • 元本 (위키텍스트) 文書 處理: action=raw 또는 action=raw&templates=expand GET 要請을 index.php에 보내어 加工되지 않은 文書의 위키텍스트 소스 코드를 가져올 수 있습니다. prop=revisions&rvprop=content prop=revisions&rvprop=content&rvexpandtemplates=1 또한 매우 비슷하며 追加 情報를 가져오는데 도움이 됩니다.

로그인 [ 編輯 ]

承認된 봇은 編輯을 위해 로그인해야 합니다. 봇이 로그인 없이 읽기 要請을 할 수는 있으나 모든 活動에서 完全한 테스트를 遂行하기 위해서는 로그인하는 것이 좋습니다. 大部分의 봇 프레임워크는 로그인과 쿠키를 自動으로 管理하지만 이미 存在하는 프레임워크를 使用하고 있는 것이 아니라면 다음의 段階들을 遵守하여야 합니다.

保安을 위해 로그인 데이터는 HTTP POST 메소드를 利用하여 傳達하여야 합니다. HTTP GET 要請 變數들이 URL에 쉽게 보이기 때문에 GET을 通한 로그인은 非活性化되어 있습니다.

MediaWiki API 를 使用하여 봇에 로그인하려면 두 가지 要請이 必要합니다:

要請 1 ? 로그인 토큰을 取得하기 위한 GET 要請
要請 2 ? 로그인을 完了하기 위한 POST

여기서 TOKEN은 移轉 結果에서 받은 토큰입니다. 移轉 要請의 HTTP 쿠키 또한 두 番째 要請을 통해 傳達되어야 합니다.

"action=login"을 통한 州 計定 로그인은 舊式이며 警告 없이 作動이 中斷될 수 있습니다. "action=login"으로 로그인을 繼續하려면 特需:봇祕密番號 를 參考하십시오.

編輯 - 編輯 토큰 [ 編輯 ]

위키百科는 위키百科 文書 編輯, 그리고 되돌리기 等 旣存 內容을 修正하는 其他 作業을 위해 編輯 토큰 시스템을 使用합니다. 이 토큰은 例를 들어 다음과 같이 기나긴 16眞髓에 '+\'가 붙는 것으로 나타납니다:

d41d8cd98f00b204e9800998ecf8427e+\

編輯 토큰의 役割은 使用者가 링크를 클릭하여 編輯을 하는 것으로 속이는 編輯 하이재킹을 防止하는 것입니다.

編輯 過程에는 HTTP 要請이 隨伴됩니다. 먼저, 編輯 토큰을 위한 要請이 遂行되어야 합니다. 그 다음에 方今 取得한 編輯 토큰과 함께 새 文書 內容을 보내는 두 番째 HTTP 要請이 必要합니다. 하나의 HTTP 要請만으로 編輯을 하는 것은 不可能합니다. 編輯 토큰은 로그인 세션 中에는 同一한 채로 維持되어야 하므로 編輯 토큰은 한 番만 確認하면 되며 그 뒤에 잇따르는 모든 編輯들에 그대로 使用할 수 있습니다.

編輯 토큰을 取得하려면 다음과 같은 段階를 따릅니다:

  • MediaWiki API (api.php) . 다음 變數와 함께 要請을 보냅니다 ( mw:API:Edit - Create&Edit pages 參考).
    • action=query
    • prop=info
    • titles=PAGENAME
    • intoken=edit

    토큰은 應答을 받을 때 edittoken 屬性으로 返還됩니다.

봇 運營을 위한 技術的 助言 [ 編輯 ]

公式 봇 政策을 遵守하는 것 外에 봇 開發 時 考慮해야 할 堤堰이 있습니다.

  • 위키미디어 使用者 에이전트 政策 에 따라 봇에 使用者 指定 User-Agent 헤더를 設定하십시오. 그렇게 하지 않으면 誤謬가 發生할 수 있으며 技術 職員에 依해 서버 段階에서 遮斷될 수 있습니다.
  • maxlag 變數 를 使用하십시오. 最大 指定 可能한 超(秒)는 5秒입니다. 이 變數는 서버 負荷가 낮을 때 봇이 빠르게 遂行될 수 있게 해주고 서버 部下가 높을 때 봇의 스로틀링 處理를 可能하게 해줍니다.
    • maxlag를 支援하지 않는 프레임워크로 봇을 作成하는 境遇 1分에 10回를 넘어서지 않도록 全體 要請輛(읽기/쓰기 要請輛 全般)에 制限을 두십시오.
  • 可能한 곳에 API 를 使用하시고 서버가 許容하는 最大값으로 照會 制限값을 設定하십시오.
  • 編輯(쓰기) 要請은 읽기 要請보다 서버 時間을 더 많이 消費합니다. 가벼운 編輯을 하시고 最小限의 編輯을 維持할 수 있도록 코드를 設計하십시오.
    • 하나의 큰 編輯이 10개의 작은 編輯보다 낫습니다. 編輯을 하나로 합치도록 試圖해 주십시오.
  • 可能하면 HTTP 클라이언트 라이브러리에서 HTTP 持續的 連結 壓縮 을 活性化하십시오.
  • 멀티스레드 方式의 要請을 하지 마십시오. 順次的으로 서버 要請을 遂行하십시오.
  • 서버로부터 誤謬를 受信하면 作業을 中斷하십시오. 스퀴드 타임아웃과 같은 誤謬들은 相當한 서버 部下가 原因일 수 있습니다.
  • 많은 量의 自動化된 修行을 하기 앞서 코드를 全般的으로 테스트하십시오.

프로그래밍 言語 및 라이브러리 [ 編輯 ]

파이썬 [ 編輯 ]

[ 編輯 ]

  • MediaWiki::Bot - 펄로 作成된 相當히 完全한 미디어위키 봇 프레임워크

자바 [ 編輯 ]

라이브러리:

  • Java Wiki Bot Framework - 자바 위키 봇 프레임워크
  • wiki-java - 자바 위키 봇 프레임워크 (單一 파일)
  • WPCleaner - WPCleaner 道具에 依해 使用되는 라이브러리
  • jwiki - 單純하고 使用하기 쉬운 자바 위키 봇 프레임워크

자바스크립트 [ 編輯 ]

루비 [ 編輯 ]

커먼 리스프 [ 編輯 ]

하스켈 [ 編輯 ]

VBScript [ 編輯 ]

마이크로소프트 닷넷 [ 編輯 ]