도와 주세요.:봇 만들기

Help

로봇 또는 봇은 마치 인간 편집자인 것처럼 위키백과(및 기타 위키미디어 프로젝트)와 상호 작용하는 자동 프로세스입니다.이 페이지에서는 Wikimedia 프로젝트에서 사용하기 위한 봇 개발을 수행하는 방법을 설명하려고 시도하며, 이 중 많은 부분을 MediaWiki 기반의 다른 Wiki로 전송할 수 있습니다.이 설명은 주로 사전 프로그래밍 경험이 있지만 이 지식을 위키백과 봇을 만드는 데 어떻게 적용할지 모르는 사람들을 대상으로 합니다.

봇을 생성해야 하는 이유는 무엇입니까?

봇은 작업을 자동화하고 인간보다 훨씬 빠르게 수행할 수 있습니다.여러 번 수행해야 하는 간단한 작업이 있는 경우(예: 1000페이지의 범주에 있는 모든 페이지에 템플릿을 추가하는 작업), 이 작업은 사람보다 봇에 더 적합한 작업입니다.

봇을 생성하기 전에 고려해야 할 사항

기존 봇 재사용

기존 봇에서 봇 작업을 요청하는 것이 훨씬 더 간단한 경우가 많습니다.주기적인 요청만 있거나 프로그래밍에 불편한 경우 일반적으로 이 방법이 가장 좋습니다.다음 요청은 위키백과에서 할 수 있습니다. 요청.또한 누구나 사용할 수 있는 다양한 도구가 있습니다.이들 대부분은 미디어위키 관련 기능을 갖춘 향상된 웹 브라우저의 형태를 취합니다.이 중 가장 인기 있는 것은 AutoWikiBrowser(AWB)로, 위키백과 및 기타 위키미디어 프로젝트의 편집을 지원하도록 특별히 설계된 브라우저입니다.대부분의 전체 도구 목록은 Wikipedia에서 찾을 수 있습니다.도구/편집 도구.AWB와 같은 도구는 프로그래밍을 거의 이해하지 못하거나 전혀 이해하지 못한 채 작동할 수 있습니다.

코드베이스 재사용

만약 당신이 당신의 요구사항의 빈도나 새로움 때문에 당신 자신의 봇이 필요하다고 결정한다면, 당신은 처음부터 그것을 쓸 필요가 없습니다.위키피디아에는 이미 수많은 봇이 실행되고 있으며 이러한 봇 중 많은 봇이 소스 코드를 게시하고 있으며, 이는 때때로 추가 개발 시간을 거의 들이지 않고 재사용될 수 있습니다.또한 수많은 표준 봇 프레임워크를 사용할 수 있습니다.기존 봇을 수정하거나 프레임워크를 사용하면 개발 시간이 크게 단축됩니다.또한 이러한 코드 기반은 공통적으로 사용되고 커뮤니티 프로젝트로 유지되기 때문에 이러한 프레임워크를 기반으로 봇을 사용 승인하는 것이 훨씬 쉽습니다.이러한 프레임워크 중 가장 인기 있고 일반적인 것은 Pywikibot(PWB)으로, Python으로 작성된 봇 프레임워크입니다.완전히 문서화되고 테스트되었으며 이미 많은 표준화된 Pywikibot 스크립트(봇 명령)를 사용할 수 있습니다.봇 프레임워크의 다른 예는 아래에서 확인할 수 있습니다.PWB와 같은 일부 봇 프레임워크의 경우, 스크립트에 대한 일반적인 지식만 있으면 봇을 성공적으로 실행할 수 있습니다(이러한 프레임워크를 정기적으로 업데이트하는 것이 중요함).

중요한 질문

새 봇을 작성하려면 상당한 프로그래밍 능력이 필요합니다.완전히 새로운 봇은 정기적인 작동을 위해 승인되기 전에 실질적인 테스트를 받아야 합니다.성공적인 봇을 작성하기 위해서는 계획을 세우는 것이 매우 중요합니다.다음 사항은 중요합니다.

  • 봇이 수동으로 지원됩니까, 아니면 완전히 자동화됩니까?
  • 봇을 혼자 만들 것입니까, 아니면 다른 프로그래머의 도움으로 만들 것입니까?
  • 봇의 요청, 편집 또는 기타 작업이 기록됩니까?그렇다면 로그는 로컬 미디어에 저장됩니까, 아니면 Wiki 페이지에 저장됩니까?
  • 봇은 웹 브라우저(예: JavaScript로 작성) 내에서 실행됩니까, 아니면 독립 실행형 프로그램입니까?
  • 봇이 독립 실행형 프로그램인 경우 로컬 컴퓨터에서 실행됩니까, 아니면 Toolforge와 같은 원격 서버에서 실행됩니까?
  • 봇이 원격 서버에서 실행되는 경우, 다른 편집자가 봇을 작동하거나 실행을 시작할 수 있습니까?

위키백과 봇은 어떻게 작동합니까?

운영 개요

사람의 편집자처럼, 위키백과 봇은 위키백과 페이지를 읽고, 변화가 필요하다고 생각되는 곳에서 변화를 만듭니다.차이점은 로봇이 인간보다 빠르고 피로에 덜 취약하지만 우리만큼 밝지는 않다는 것입니다.봇은 쉽게 정의된 패턴을 가진 반복적인 작업에 능숙하며, 여기서 결정을 내려야 하는 경우는 거의 없습니다.

가장 일반적인 경우, 봇은 자신의 계정에 로그인하여 브라우저와 거의 동일한 방법으로 위키백과의 페이지를 요청합니다. 비록 페이지를 화면에 표시하지는 않지만 메모리에서 작동합니다. 그런 다음 페이지 코드를 프로그래밍 방식으로 검사하여 변경할 필요가 있는지 확인합니다.그런 다음 브라우저와 거의 동일한 방식으로 모든 편집을 수행하고 제출합니다.

봇은 사람들이 하는 것과 같은 방식으로 페이지에 액세스하기 때문에, 봇은 인간 사용자가 하는 것과 같은 종류의 어려움을 경험할 수 있습니다.페이지를 요청하거나 편집하는 동안 편집 충돌이 발생하거나 페이지 시간이 초과되거나 다른 예상치 못한 문제가 발생할 수 있습니다.봇이 수행하는 작업량이 실제 사용자가 수행하는 작업량보다 크기 때문에 봇은 이러한 문제에 직면할 가능성이 높습니다.따라서 봇을 작성할 때 이러한 상황을 고려하는 것이 중요합니다.

봇용 API

위키백과 페이지를 변경하려면 봇이 위키백과에서 페이지를 검색하고 편집한 내용을 다시 보내야 합니다.이러한 용도로 사용할 수 있는 여러 API(응용 프로그램 인터페이스)가 있습니다.

  • MediaWiki API().api.php이 라이브러리는 봇과 같은 자동화된 프로세스가 쿼리를 수행하고 변경 사항을 게시할 수 있도록 특별히 작성되었습니다.데이터는 JSON 형식으로 반환됩니다(자세한 내용은 출력 형식 참조).
    상태: 모든 Wikimedia 서버에서 사용할 수 있는 MediaWiki의 내장 기능입니다.다른 Wikimedia가 아닌 Wikimedia Wiki는 쓰기 액세스를 비활성화하거나 제한할 수 있습니다.
    API 테스트를 원하는 사람들을 위한 API 샌드박스도 있습니다.php의 특징.
  • 특수:내보내기를 사용하여 XML 형식의 페이지 내용을 대량으로 내보낼 수 있습니다.설명서 참조:매개변수에서 특수:인수에 대한 내보내기;
    상태: 모든 Wikimedia 서버에서 사용할 수 있는 MediaWiki의 내장 기능입니다.
  • 원시(Wikitext) 페이지 처리: 전송action=raw또는action=raw&templates=expandindex.php에 대한 GET 요청은 처리되지 않은 페이지의 위키텍스트 소스 코드를 제공합니다.예:https://en.wikipedia.org/w/index.php?title=Help:Creating_a_bot&action=raw를 사용한 API 쿼리action=query&prop=revisions&rvprop=content또는action=query&prop=revisions&rvprop=content&rvexpandtemplates=1는 거의 동등하며 추가 정보를 검색할 수 있습니다.
    상태: 모든 Wikimedia 서버에서 사용할 수 있는 MediaWiki의 내장 기능입니다.

일부 Wikipedia 웹 서버는 압축(GZIP) 콘텐츠에 대한 요청을 허용하도록 구성되어 있습니다.HTTP 요청 헤더에 "Accept-Encoding: gzip" 행을 포함하여 수행할 수 있습니다. HTTP 응답 헤더에 "Content-Encoding: gzip"이 포함되어 있으면 문서는 GZIP 형식이고, 그렇지 않으면 일반 압축되지 않은 형식입니다.이는 MediaWiki 소프트웨어가 아닌 웹 서버에만 해당됩니다.MediaWiki를 사용하는 다른 사이트에는 이 기능이 없을 수 있습니다.기존의 봇 프레임워크를 사용하는 경우 이와 같은 낮은 수준의 작업을 처리해야 합니다.

로그인

편집하려면 승인된 봇을 로그인해야 합니다.봇이 로그인하지 않고 읽기 요청을 할 수 있지만 테스트를 완료한 봇은 모든 활동에 대해 로그인해야 합니다.봇 플래그가 있는 계정에서 로그인한 봇은 MediaWiki API(api.php)에서 쿼리당 더 많은 결과를 얻을 수 있습니다.대부분의 봇 프레임워크는 로그인 및 쿠키를 자동으로 처리해야 하지만, 기존 프레임워크를 사용하지 않는 경우 다음 단계를 수행해야 합니다.

보안을 위해 로그인 데이터는 HTTP POST 방법을 사용하여 전달되어야 합니다.HTTP GET 요청의 매개 변수는 URL에 쉽게 표시되므로 GET을 통한 로그인은 사용할 수 없습니다.

MediaWiki API를 사용하여 봇에 로그인하려면 두 가지 요청이 필요합니다.

요청 1 – 로그인 토큰을 얻기 위한 GET 요청입니다.

요청 2 – 로그인을 완료하기 위한 POST입니다.

여기서 TOKEN은 이전 결과의 토큰입니다.이전 요청의 HTTP 쿠키도 두 번째 요청과 함께 전달되어야 합니다.

로그인 시도가 성공하면 Wikimedia 서버가 여러 HTTP 쿠키를 설정합니다.봇은 이러한 쿠키를 저장하고 요청할 때마다 다시 보내야 합니다(편집에 특히 중요함).영어 위키백과에서는 enwikiUserID, enwikiTokenenwikiUserName 쿠키를 사용해야 합니다.enwiki_session 쿠키는 실제로 편집을 보내거나 일부 변경 사항을 커밋하기 위해 필요합니다. 그렇지 않으면 MediaWiki:세션 실패 미리 보기 오류 메시지가 반환됩니다.

"action=proxy"를 통한 기본 계정 로그인은 더 이상 사용되지 않으며 경고 없이 작동이 중지될 수 있습니다."action=dll"로 로그인을 계속하려면 특수 항목을 참조하십시오.봇암호.

토큰 편집, 편집

위키백과는 위키백과 페이지를 편집하기 위해 토큰 편집 시스템과 롤백과 같은 기존 내용을 수정하는 다른 작업을 사용합니다.토큰은 긴 16진수 숫자 뒤에 '+\'가 오는 것처럼 보입니다. 예:

d41d8cd98f00b204e9800998ecf8427e+\

토큰 편집의 역할은 사용자가 하나의 링크를 클릭하여 편집하도록 속이는 "편집 가로채기"를 방지하는 것입니다.

편집 프로세스에는 두 개의 HTTP 요청이 포함됩니다.먼저, 편집 토큰에 대한 요청이 이루어져야 합니다.그런 다음, 방금 얻은 편집 토큰과 함께 페이지의 새 내용을 보내는 두 번째 HTTP 요청이 이루어져야 합니다.단일 HTTP 요청에서 편집할 수 없습니다.편집 토큰은 로그인한 세션 동안 동일하게 유지되므로 편집 토큰은 한 번만 검색하면 되며 이후의 모든 편집에 사용할 수 있습니다.

편집 토큰을 가져오려면 다음 단계를 수행합니다.

  • MediaWiki API(api.php)입니다.다음 매개 변수를 사용하여 요청합니다(mw:API:Edit - Create & Edit 페이지).
    • action=query
    • meta=tokens

    토큰은 다음 시간에 반환됩니다.csrftoken응답의 속성입니다.

URL은 다음과 같습니다.https://en.wikipedia.org/w/api.php?action=query&meta=tokens&format=json

봇이 수신하는 편집 토큰에 16진수 문자열이 없는 경우(즉, 편집 토큰이 '+\'일 경우) 봇이 로그인하지 않을 가능성이 높습니다.이는 서버 인증확인 실패, 연결 끊김, 시간 초과 또는 올바른 쿠키 저장 또는 반환 오류와 같은 여러 가지 요인으로 인해 발생할 수 있습니다.프로그래밍 오류 때문이 아니라면 다시 로그인하여 로그인 쿠키를 새로 고칩니다.은 어설션을 사용하여 로그인했는지 확인해야 합니다.

충돌 편집

편집 충돌은 동일한 페이지에서 여러 개의 중복된 편집 시도가 이루어질 때 발생합니다.거의 모든 은 결국 이런저런 종류의 편집 충돌에 휘말리게 되며, 이러한 문제를 테스트하고 수용할 수 있는 몇 가지 메커니즘을 포함해야 합니다.

Mediawiki API(api.php)를 사용하는 봇은 편집 토큰과 함께starttimestamp편집 준비를 위해 페이지 텍스트를 로드하기 전 마지막 수정 "기본" 타임스탬프prop=info revisions하나의 쿼리에서 토큰과 페이지 내용을 모두 검색하는 데 사용할 수 있습니다.편집을 제출할 때 다음을 설정합니다.starttimestamp그리고.basetimestamp서버 응답에 오류가 있는지 확인합니다.자세한 내용은 MediaWiki:API:Edit - Create and Edit 페이지입니다.

일반적으로, 편집이 완료되지 않으면 봇은 편집이 여전히 적절한지 확인하기 전에 페이지를 다시 확인해야 합니다.또한 봇이 페이지를 다시 확인하여 변경사항을 다시 제출하는 경우 무한 루프로 이어질 수 있는 동작과 편집 전쟁과 유사한 동작을 방지해야 합니다.

봇 개발 프로세스 개요

사실, 봇을 코딩하거나 작성하는 것은 봇을 개발하는 데 있어 한 부분에 불과합니다.당신의 봇이 위키백과의 봇 정책을 따르도록 하기 위해서는 일반적으로 아래의 개발 주기를 따라야 합니다.정책을 준수하지 않으면 봇이 승인되지 않거나 Wikipedia 편집이 차단될 수 있습니다.

위키백과 봇 개발 주기 개요

아이디어

  • 위키백과 봇을 만드는 첫 번째 작업은 요구 사항을 추출하거나 아이디어를 내는 것입니다.만약 당신이 봇을 무엇에 쓸지에 대한 아이디어가 없다면, 당신은 봇이 해야 일을 요청할 때 아이디어를 얻을 수 있습니다.
  • 기존 봇이 이미 봇이 수행해야 한다고 생각하는 작업을 수행하고 있지 않은지 확인합니다.봇에서 이미 수행 중인 작업을 보려면 현재 작동 중인 봇 목록을 참조하십시오.

사양

  • 사양은 작성할 소프트웨어를 정확하게 기술하는 작업입니다.당신은 그것이 무엇을 하기를 원하는지에 대한 상세한 제안을 해야 합니다.일부 편집자와 이 제안서를 논의하고 피드백을 기반으로 구체화해 보십시오.심지어 훌륭한 아이디어도 다른 편집자들의 아이디어를 통합함으로써 더 잘 만들어질 수 있습니다.
  • 가장 기본적인 형식에서 지정된 봇은 다음 기준을 충족해야 합니다.
    • 봇은 무해합니다(백과사전의 원활한 운영에 지장을 줄 수 있는 편집을 해서는 안 됩니다).
    • 봇은 유용합니다(인간 편집자가 할 수 있는 것보다 더 효과적으로 유용한 서비스를 제공합니다).
    • 봇은 서버 리소스를 낭비하지 않습니다.

소프트웨어 아키텍처

  • 봇을 만드는 방법과 사용할 프로그래밍 언어 및 도구에 대해 생각해 보십시오.아키텍처는 소프트웨어 시스템이 제품의 요구 사항을 충족하는지 확인하는 것뿐만 아니라 향후 요구 사항을 해결할 수 있는지 확인하는 것과 관련이 있습니다.특정 프로그래밍 언어는 다른 언어보다 일부 작업에 더 적합합니다. 자세한 내용은 » 프로그래밍 언어라이브러리를 참조하십시오.

구현

구현(또는 코딩)에는 설계 및 계획을 코드로 전환하는 작업이 포함됩니다.소프트웨어 엔지니어링 작업에서 가장 명확한 부분일 수 있지만 반드시 가장 큰 부분은 아닙니다.구현 단계에서 다음을 수행해야 합니다.

  • 봇에 대한 계정을 만듭니다.로그인 시 여기를 클릭하여 계정을 생성하여 사용자의 계정으로 연결합니다. (로그인 중 봇 계정을 생성하지 않을 경우 소유권을 확인할 때까지 삭스퍼펫 또는 무단 봇으로 차단될 가능성이 있습니다.)
  • 봇에 대한 사용자 페이지를 만듭니다.봇의 편집은 사용자 계정으로 수행할 수 없습니다.봇에는 자체 사용자 이름과 암호가 있는 자체 계정이 필요합니다.
  • 봇의 사용자 페이지에 동일한 정보를 추가합니다.각 기능에 대해 승인 페이지(승인 여부와 상관없이)에 대한 링크를 추가하는 것이 좋습니다.

테스트

개발 중인 봇을 테스트하는 좋은 방법은 실제 라이브 Wiki를 편집하는 것이 아니라 페이지에 대한 변경 사항(있는 경우)을 표시하는 것입니다.일부 봇 프레임워크(예: pywikibot)에는 차이를 표시하는 방법이 미리 코딩되어 있습니다.승인 프로세스 중에 봇에 평가판 기간(일반적으로 실행할 편집 횟수나 일 수에 제한이 있음)이 주어지며, 이 기간 동안 실제로 편집하여 모든 버그를 미세 조정하고 해결할 수 있습니다.시험 기간이 끝날 때, 모든 것이 계획대로 진행된다면, 봇은 본격적인 운영을 위한 승인을 받아야 합니다.

문서화

중요한(그리고 종종 간과되는) 작업은 향후 유지보수 및 향상을 위해 봇의 내부 설계를 문서화하는 것입니다.이는 봇의 복제를 허용할 경우 특히 중요합니다.다른 사용자가 봇의 클론을 실행할 수 있도록 하려면 봇의 소스 코드를 사용자 페이지나 수정 제어 시스템에 게시해야 합니다(#오픈 소스 봇 참조).이 코드는 사용하기 쉽도록 문서화되어야 합니다(보통 주석을 사용하여).

쿼리/불만

특히 봇이 공정하게 사용되는 이미지 정리와 같이 잠재적으로 민감한 영역에서 작동하는 경우 사용자 토크 페이지에서 봇에 대한 질문이나 이의 제기에 응답할 준비가 되어 있어야 합니다.

유지보수

새로 발견된 버그나 새로운 요구 사항에 대처하기 위해 봇을 유지하고 향상시키는 은 소프트웨어의 초기 개발보다 훨씬 더 많은 시간이 걸릴 수 있습니다.유지 관리를 쉽게 하려면 코드를 처음부터 문서화하십시오.

승인된 봇의 주요 기능 변경은 승인되어야 합니다.

봇 실행에 대한 일반 지침

봇을 개발할 때 고려해야 할 주요 사항을 다루는 공식 봇 정책 외에도 봇을 개발할 때 고려해야 할 몇 가지 일반적인 조언 사항이 있습니다.

두 가지 모범 사례

  • Wikimedia User-Agent 정책에 따라 봇에 대한 사용자 지정 User-Agent 헤더를 설정합니다.그렇지 않으면 봇에 오류가 발생하여 서버 수준의 기술 담당자가 차단할 수 있습니다.
  • 최대 지연 시간이 5초인 maxlag 매개 변수를 사용합니다.이렇게 하면 서버 부하가 낮을 때는 봇이 빠르게 실행되고, 서버 부하가 높을 때는 봇을 제한할 수 있습니다.
    • maxlag를 지원하지 않는 프레임워크에서 봇을 작성하는 경우 총 요청(읽기 및 쓰기 요청 함께)을 10/분 이하로 제한합니다.
  • 가능할 때마다 API를 사용하고 쿼리 제한을 서버가 허용하는 최대 값으로 설정하여 요청해야 하는 총 수를 최소화합니다.
  • 편집(쓰기) 요청은 읽기 요청보다 서버 시간이 더 비쌉니다.편집광이 되고 편집을 최소화하도록 코드를 설계합니다.
    • 편집 내용을 통합합니다.한 번의 큰 편집이 10개의 작은 편집보다 낫습니다.
  • 가능한 경우 HTTP 클라이언트 라이브러리에서 HTTP 영구 연결압축사용합니다.
  • 멀티스레드 요청을 하지 마십시오.다른 서버 요청을 시작하기 전에 서버 요청이 완료될 때까지 기다립니다.
  • 서버에서 오류를 수신하면 뒤로 이동합니다.시간 초과와 같은 오류는 종종 서버 부하가 크다는 것을 나타냅니다.반복되는 요청 사이에 점점 더 긴 지연 시간을 사용합니다.
  • 어설션을 사용하여 봇이 로그인되었는지 확인합니다.
  • 대규모 자동 실행을 수행하기 전에 코드를 철저히 테스트합니다.평가판 실행의 모든 편집 내용을 개별적으로 검사하여 완벽한지 확인합니다.

구현을 고려해야 하는 일반적인 봇 기능

수동 지원

봇이 컨텍스트를 판단하거나 평가해야 하는 작업(예: 맞춤법 수정)을 수행하는 경우에는 봇을 수동으로 지원하는 것을 고려해야 합니다. 이는 사람이 모든 편집 내용을 저장하기 전에 확인한다는 것을 의미합니다.이는 봇의 속도를 크게 감소시키지만 오류도 크게 감소시킵니다.

봇 비활성화

봇을 빠르게 비활성화하는 것은 쉬울 것입니다.만약 여러분의 로봇이 상한다면, 그것을 청소하는 것은 여러분의 책임입니다!메시지가 자신의 활동에 대한 불만일 수 있다는 가정 하에 대화 페이지에 메시지가 남아 있는 경우 봇이 실행을 거부하도록 할 수 있습니다. 이는 API를 사용하여 확인할 수 있습니다.meta=userinfo질의하다또는 변경 시 봇이 꺼지는 페이지가 있을 수 있습니다. 이 페이지는 편집하기 전에 페이지 내용을 로드하여 확인할 수 있습니다.

서명

사람과 마찬가지로, 만약 당신의 봇이 위키피디아의 토크 페이지를 편집한다면, 그것은 4개의 타일(~~~~)로 게시물에 서명해야 합니다.서명은 토론에 사용되는 프로젝트 페이지(예: 삭제할 문서)를 제외하고 토크 네임스페이스에만 속합니다.

봇 플래그

봇의 편집 내용은 Special:에서 볼 수 있습니다.최근 변경사항. 편집 내용이 봇을 나타내도록 설정되지 않은 경우.봇이 승인되고 봇 플래그 권한이 부여되면 API 호출에 "bot-True"를 추가할 수 있습니다. mw:API:Special:에서 봇의 편집 내용을 숨기려면 Edit#Parameters를 선택합니다.최근 변경 사항.Python에서 mwclient 또는 wikitools를 사용한 다음 edit/save 명령에 Bot=True추가하면 편집이 봇 편집으로 설정됩니다.PageObject.edit(text=pagetext, bot=True, summary=pagesummary).

봇 상태 모니터링

봇이 완전히 자동화되어 정기적으로 편집을 수행하는 경우 지정된 대로 실행되고 소프트웨어 변경에 의해 동작이 변경되지 않았는지 주기적으로 확인해야 합니다.위키백과에 추가하는 것을 고려해 보십시오.이 작동을 중지할 경우 봇 활동 모니터에 알림이 표시됩니다.

오픈 소스 봇

많은 봇 운영자는 코드를 오픈 소스로 만들기로 선택하며, 특히 복잡한 봇에 대한 승인 전에 코드가 필요할 수도 있습니다.코드를 오픈 소스로 만드는 것은 다음과 같은 몇 가지 이점이 있습니다.

  • 다른 사용자가 사용자의 코드에서 잠재적인 버그를 검토할 수 있습니다.산문과 마찬가지로 코드 작성자가 적절하게 검토하기 어려운 경우가 많습니다.
  • 다른 사용자는 사용자의 코드를 사용하여 자신의 봇을 만들 수 있습니다.봇 쓰기를 처음 하는 사용자는 자신의 봇에 대한 예제 또는 템플릿으로 코드를 사용할 수 있습니다.
  • 그것은 무명을 통한 보안보다는 우수한 보안 관행을 장려합니다.
  • 프로젝트를 포기하면 다른 사용자가 새 코드를 작성하지 않고도 봇 작업을 실행할 수 있습니다.

오픈 소스 코드는 거의 필요하지 않지만 일반적으로 위키백과의 개방적이고 투명한 특성에 따라 권장됩니다.

코드를 공유하기 전에 암호와 같은 중요한 정보가 공개되지 않은 파일로 분리되어 있는지 확인합니다.

코드를 열고자 하는 사용자는 여러 가지 옵션을 사용할 수 있습니다.봇 사용자 공간의 하위 페이지에 코드를 호스팅하는 것은 자동화되지 않은 경우 유지 관리가 번거로울 수 있으며, 지정할 수 있는 다른 용어 외에도 위키백과의 라이센스 조항에 따라 코드가 다중 라이센스로 할당됩니다.더 나은 솔루션은 SVN, Git 또는 Mercurial과 같은 수정 제어 시스템을 사용하는 것입니다.위키백과에는 코드 호스팅을 위한 다양한 소프트웨어 옵션과 웹 사이트를 비교하는 기사가 있는데, 이 중 많은 것들은 비용이 들지 않습니다.

프로그래밍 언어 및 라이브러리

봇은 거의 모든 프로그래밍 언어로 작성될 수 있습니다.언어의 선택은 봇 작성자의 경험과 선호도, 봇 개발과 관련된 라이브러리의 가용성에 따라 달라집니다.다음 목록에는 봇에 일반적으로 사용되는 일부 언어가 포함되어 있습니다.

아크

GNU Awk는 OAuth를 포함한 크고 작은 봇을 위한 쉬운 언어입니다.

웹 서버에 있는 경우 브라우저에서 공용 게이트웨이 인터페이스를 통해 실행되는 동안 프로그램 실행을 시작하고 프로그램과 인터페이스할 수 있습니다.인터넷 서비스 공급자가 웹 공간을 제공하는 경우 Perl 프로그램을 실행할 수 있는 웹 서버의 Perl 빌드에 액세스할 수 있습니다.

라이브러리:

  • 미디어위키::API – 스크립트가 MediaWiki 기반 사이트의 데이터 편집 및 추출을 자동화할 수 있는 API의 기본 인터페이스입니다.
  • 미디어위키:: – Perl로 작성된 상당히 완벽한 MediaWiki 봇 프레임워크입니다.MediaWiki보다 더 높은 수준의 추상화를 제공합니다:API. 플러그인은 관리자 및 스튜어드 기능을 제공합니다.현재 지원되지 않습니다.

PHP

PHP는 봇 프로그래밍에도 사용할 수 있습니다.미디어위키 개발자들은 미디어위키와 그 확장자가 쓰여져 있기 때문에 이미 PHP에 익숙합니다.봇에 웹 양식 기반 인터페이스를 제공하려면 PHP가 특히 좋습니다.예를 들어, 범주 이름을 바꾸기 위한 봇을 만들겠다고 가정합니다.카테고리의 현재 이름과 원하는 이름을 입력할 HTML 양식을 작성할 수 있습니다.양식이 제출되면 봇이 이러한 입력을 읽은 다음 현재 범주의 모든 기사를 편집하여 원하는 범주로 이동할 수 있습니다. (양식 인터페이스를 가진 모든 봇은 어떻게든 무작위 웹 서퍼로부터 보호되어야 합니다.)

PHP 봇 함수 는 주요 봇 프레임워크의 기능에 대한 통찰력을 제공할 수 있습니다.

현재 PHP 봇 프레임워크
주요[php 1] 인물 이름. PHP 버전이 작동하는 것으로 확인됨 마지막 릴리스 마지막 마스터 분기 업데이트 API[php 2] 사용 제외 준수 관리 기능 플러그인 저장소 메모들
사이버 파워 678, 애드쇼어, Jarry1250 피치 5.2.1 2013 2022 네. 네. 네. 네. 깃헙 큰 프레임워크로, 현재 다시 작성 중입니다.문서가 현재 존재하지 않으므로 사용자:도움을 요청하는 사이버 파워 678.
애드쇼어 mediawiki-api-base 7.4 2021 2022 네. 없음 없음 여분의 입술 깃헙 MediaWiki API와의 상호 작용을 위한 기본 라이브러리는 로그인, 출력 및 토큰 처리뿐만 아니라 요청을 쉽게 받고 게시할 수 있는 방법을 제공합니다.
애드쇼어 미디어위키아피 7.4 2021 2022 네. 아니요. 몇개 여분의 입술 깃헙 위에 구축됨mediawiki-api-base위에서 언급한 바와 같이 API에 대한 고급 서비스를 추가합니다.RevisionGetter,UserGetter,PageDeleter,RevisionPatroller,RevisionSaver청크 업로드를 지원합니다.
은잠스타, 님프, 왈디에이어 위키메이트 5.3-5.6,
7.x, 8.x
2023 2023 네. 아니요. 아니요. 아니요. 깃헙 기본 문서 및 파일 내용을 지원합니다.인증, 페이지 존재 여부 확인, 페이지/섹션 읽기 및 편집.파일 정보 가져오기, 파일 다운로드 및 업로드.사용하기 쉬운 것을 목표로 합니다.
크리스 G,
wbm1058
봇 클래스php 7.4 n/a 2023 네. 네. 네. 아니요. 위키에서 이전 wikibot.classes의 포크(클루봇과 삭스봇에서 사용).2010 및 2015 API 변경 사항에 대해 업데이트되었습니다.파일 업로드를 지원합니다.
  1. ^ 나열된 프레임워크를 만들기 위해 분기된 프레임워크에서 작업한 사용자는 포함되지 않습니다.
  2. ^ 가능한 한.현재 API에서 지원하지 않는 업로드 이미지 및 기타 작업은 제외합니다.

파이썬

라이브러리:

  • Pywikibot – 아마도 가장 많이 사용되는 봇 프레임워크일 것입니다.
  • ceterach – MediaWiki와 상호 작용하기 위한 인터페이스
  • wikitools – Mr.Z-man이 사용하고 유지 관리하는 데이터 가져오기 및 편집 전용 MediaWiki API를 사용하는 Python-2 전용 경량 봇 프레임워크(다운로드)
  • mwclient – Bryan이 관리하는 API 기반 프레임워크
  • 지옥에서 온 mwparserThe Earwig가 관리하는 위키텍스트 파서입니다.
  • pymediawiki – 사용이 간편한 Python의 읽기 전용 MediaWiki API 래퍼입니다.

매트랩

  • MatWiki – 봇 로그인 및 semantic #ask 쿼리만 지원하는 예비(2019년 2월 기준) MATLAB R2016b(9.1.x) 클라이언트.

마이크로소프트 .NET

마이크로소프트사NET은 C#, C++/CLI, Visual Basic 의 언어 집합입니다.NET, J#, JScript.NET, IronPython윈도우즈 PowerShell을 지원합니다.모노 프로젝트 사용, .NET 프로그램은 Linux, Unix, BSD, SolarismacOS에서도 실행할 수 있으며 Windows에서도 실행할 수 있습니다.

라이브러리:

  • DotNetWikiBot Framework - 의 모든 기능을 갖춘 클라이언트 API입니다.NET은 미디어위키로 구동되는 사이트의 정보를 관리하기 위해 프로그램과 웹 로봇을 쉽게 만들 수 있습니다.이제 여러 언어로 번역되었습니다.자세한 컴파일된 설명서는 영어로 제공됩니다.
  • Wiki 함수입니다.NET 라이브러리 – AWB와 함께 제공되는 이 라이브러리는 목록 생성, 기사 로드/편집, 최근 변경된 IRC 채널 연결 등 봇에 유용한 자료 라이브러리입니다.
  • WikiClientLibrary - 의 휴대용 비동기 MediaWiki API 클라이언트 라이브러리입니다.NET 표준.(너겟, 문서 참조).

자바

라이브러리:

  • Java Wiki Bot Framework – Java Wiki Bot 프레임워크
  • wiki-java – 하나의 파일로만 구성된 Java Wiki 봇 프레임워크
  • WP Cleaner – WP Cleaner 도구에서 사용하는 라이브러리
  • jwiki – 간단하고 사용하기 쉬운 Java Wiki 봇 프레임워크

노드.js

라이브러리:

  • mwn – 약속(비동기식 대기 지원)을 사용하여 현대 ES6에서 적극적으로 유지 관리되고 작성된 라이브러리입니다.이 라이브러리는 대규모 라이브러리이며 페이지 제목 및 위키 텍스트(제한된 위키 텍스트 구문 분석 기능 포함)로 편리하게 작업할 수 있는 클래스가 있습니다.TypeScript도 지원합니다.GitHub에서 swn을 봅니다.
  • mock-mediawiki – Node.js의 MediaWiki JS 인터페이스 구현.GitHub에서 모의 미디어 위키를 참조하십시오.
  • wikiapi – CeJS MediaWiki 모듈을 사용하여 간단한 위키텍스트 파서로 JavaScript를 통해 MediaWiki API에 액세스할 수 있는 간단한 방법입니다.GitHub에서 Wikipedia예제를 참조하십시오.

루비

라이브러리:

  • 미디어위키::Butt – API 클라이언트.적극적으로 유지됩니다.평가참조
  • mediawiki/ruby/apiWikimedia Release Engineering Team의 API 클라이언트입니다.마지막으로 업데이트된 2017년 12월은 더 이상 유지 관리되지 않지만 여전히 작동합니다.
  • Wikipedia-client – API 클라이언트입니다.마지막으로 업데이트된 2018년 3월.여전히 작동하는지 알 수 없습니다.
  • 미디어위키:: Gateway – API 클라이언트.마지막으로 업데이트된 2016년 1월.MediaWiki 1.22까지 테스트되었으며 Wikimedia Wiki와 호환됩니다.여전히 작동하는지 알 수 없습니다.

커먼 리스프

  • CL-MediaWiki – MediaWiki API를 Common Lisp 패키지로 구현합니다.JSON을 쿼리 데이터 형식으로 사용할 예정입니다.최대 지연 및 어설션을 지원합니다.

하스켈

VBScript

VBScriptVisual Basic 프로그래밍 언어를 기반으로 하는 스크립트 언어입니다.VBScript용으로 게시된 봇 프레임워크는 없지만 이를 사용하는 봇의 몇 가지 예는 다음과 같습니다.

루아

  • 2016년 Lua 연례 워크숍에서 Jim Carter와 Dfavro는 Wikimedia 프로젝트를 위한 Lua의 봇 프레임워크를 개발하기 시작했습니다.개발에 대해 논의하기 위해 그들의 토크 페이지에 있는 Jim Carter에게 연락하십시오.
  • mwtest는 Lua를 사용하여 Wikibot을 작성하는 예제로, 사용자:Alexander Misel, 간단한 API 사용.